[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

BR112016021453B1 - Aparelho e método de codificação de informações de vídeo e memória legível por computador - Google Patents

Aparelho e método de codificação de informações de vídeo e memória legível por computador Download PDF

Info

Publication number
BR112016021453B1
BR112016021453B1 BR112016021453-6A BR112016021453A BR112016021453B1 BR 112016021453 B1 BR112016021453 B1 BR 112016021453B1 BR 112016021453 A BR112016021453 A BR 112016021453A BR 112016021453 B1 BR112016021453 B1 BR 112016021453B1
Authority
BR
Brazil
Prior art keywords
layer
image
video
unit
nal unit
Prior art date
Application number
BR112016021453-6A
Other languages
English (en)
Other versions
BR112016021453A8 (pt
BR112016021453A2 (pt
Inventor
Fnu HENDRY
Adarsh Krishnan Ramasubramonian
Ye-Kui Wang
Vadim SEREGIN
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/657,624 external-priority patent/US9794595B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016021453A2 publication Critical patent/BR112016021453A2/pt
Publication of BR112016021453A8 publication Critical patent/BR112016021453A8/pt
Publication of BR112016021453B1 publication Critical patent/BR112016021453B1/pt

Links

Abstract

DERIVAÇÃO DE INFORMAÇÕES DE UNIDADE DE NAL DE FIM DE SEQUÊNCIA PARA FLUXOS DE BITS COM MÚLTIPLAS CAMADAS Um aparelho para codificar informações de vídeo de acordo com certos aspectos, o qual inclui uma memória e um processador. A memória é configurada para armazenar informações de vídeo associadas a uma ou mais camadas. O processador é configurado para codificar uma unidade de acesso (AU) atual em um fluxo de bits que inclui uma pluralidade de camadas, sendo que a pluralidade de camadas inclui uma camada de referência e pelo menos uma camada de melhoria correspondente. O processador é configurado adicionalmente para codificar uma primeira unidade de camada de abstração de rede (NAL) de fim de sequência (EOS) associada à camada de referência na AU atual, sendo que a primeira unidade de NAL de EOS tem o mesmo identificador de camada (ID) que a camada de referência. O processador também é configurado para codificar uma segunda unidade de NAL de EOS associada à camada de melhoria na AU atual, sendo que a segunda unidade de NAL de EOS tem o mesmo ID de camada que a camada de melhoria.

Description

CAMPO DA TÉCNICA
[0001] Esta revelação refere-se ao campo de codificação e compressão de vídeo, que inclui tanto codificação de vídeo de camada única quanto codificação de vídeo com múltiplas camadas. A codificação de vídeo com múltiplas camadas pode incluir codificação de vídeo escalonável, codificação de vídeo com múltiplas camadas, codificação de vídeo tridimensional (3D), etc.
ANTECEDENTES
[0002] Os recursos de vídeo digitais podem ser incorporados em uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores do tipo laptop ou de mesa, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos em vídeo, consoles de videogame, radiotetelefone celular ou a satélite, dispositivos de vídeo para teleconferência, 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 MPEG-2, MPEG-4, 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, encriptar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficiente implantando-se tais técnicas de codificação de vídeo.
[0003] Os conjuntos de procedimentos de codificação de vídeo incluem previsão espacial (intraimagem) e/ou previsão temporal (interimagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para a codificação de vídeo com base em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo, uma porção de um quadro de vídeo, etc.) pode ser particionada em blocos de vídeo, que também podem ser denominados de blocos de árvore, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são encriptados com o uso de previsão espacial em relação às amostras de referência em blocos próximos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar previsão espacial em relação às amostras de referência em blocos vizinhos na mesma previsão de imagem ou temporal em relação às amostras de referência em outras imagens de referência. As imagens podem ser denominadas como quadros, e as imagens de referência podem ser denominadas como quadros de referência.
[0004] A previsão espacial ou temporal resulta em um bloco previsto para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco previsto. Um bloco intercodificado é encriptado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que forma o bloco previsto, sendo que os dados residuais indicam a diferença entre o bloco codificado e o bloco previsto. Um bloco intracodificado é encriptado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes residuais que podem, em seguida, ser quantizados. Os coeficientes de transformada quantizados, dispostos inicialmente em uma matriz bidimensional, podem ser submetidos a uma varredura a fim de produzir um vetor monodimensional de coeficientes de transformada, e a encriptação por entropia pode ser aplicada para conseguir ainda mais compressão.
SUMÁRIO
[0005] A codificação de vídeo escalonável (SVC) se refere à codificação de vídeo na qual uma camada- base (BL), ocasionalmente, denominada de camada de referência (RL), e uma ou mais camadas de aprimoramento escalonável (ELs) são usadas. Na SVC, a camada-base pode portar dados de vídeo com um nível-base de qualidade. As uma ou mais camadas de aprimoramento podem portar dados de vídeo adicionais para suportar, por exemplo, níveis espaciais, temporais e/ou de sinal para ruído (SNR) mais altos. As camadas de melhoria podem ser definidas em relação a uma camada previamente encriptada. Por exemplo, uma camada de fundo pode servir como uma BL, ao passo que uma camada de topo pode servir como uma EL. As camadas intermediárias podem servir tanto como ELs como RLs, ou ambos. Por exemplo, uma camada intermediária (por exemplo, uma camada que não é a camada mais inferior tampouco a camada mais superior) pode ser uma EL para as camadas abaixo da camada intermediária, tais como, a camada-base ou quaisquer camadas de aprimoramento intervenientes e, ao mesmo tempo, serve como uma RL para uma ou mais camadas de aprimoramento acima da camada intermediária. De modo semelhante, na extensão com Múltiplas Vistas ou 3D do padrão HEVC, há múltiplas vistas, e as informações de uma vista podem ser utilizadas para codificar (por exemplo, codificar ou decodificar) as informações de outra vista (por exemplo, estimativa de movimento, previsão de vetor de movimento e/ou outras redundâncias).
[0006] Um aparelho para codificar informações de vídeo de acordo com certos aspectos inclui uma memória e um processador. A memória é configurada para armazenar informações de vídeo associadas a uma pluralidade de camadas. O processador é configurado para determinar se um primeiro elemento de sintaxe está presente em um fluxo de bits, em que o primeiro elemento de sintaxe é associado a um conjunto de parâmetros de sequência (SPS) e um primeiro sinalizador que indica se um identificador temporal (ID) de uma imagem de referência para imagens que se referem ao SPS pode ser aninhado. O processador é configurado adicionalmente para, em resposta à determinação de que o primeiro elemento de sintaxe não esteja presente no fluxo de bits: obter um segundo elemento de sintaxe que indica que uma quantidade máxima de subcamadas temporais em uma camada particular da pluralidade de camadas; e determinar se se deve definir um valor do primeiro sinalizador igual a um valor de um segundo sinalizador, sendo que o segundo sinalizador indica se um ID temporal de uma imagem de referência para quaisquer imagens pode ser aninhado com base, pelo menos em parte, em um valor do segundo elemento de sintaxe.
[0007] Um aparelho para codificar informações de vídeo de acordo com certos aspectos, o qual inclui uma memória e um processador. A memória é configurada para armazenar informações de vídeo associadas a uma ou mais camadas. O processador é configurado para codificar uma unidade de acesso (AU) atual em um fluxo de bits que inclui uma pluralidade de camadas, sendo que a pluralidade de camadas inclui uma camada de referência e pelo menos uma camada de melhoria correspondente. O processador é configurado adicionalmente para codificar uma primeira unidade de camada de abstração de rede (NAL) de fim de sequência (EOS) associada à camada de referência na AU atual, sendo que a primeira unidade de NAL de EOS tem o mesmo identificador de camada (ID) que a camada de referência. O processador também é configurado para codificar uma segunda unidade de NAL de EOS associada à camada de melhoria na AU atual, sendo que a segunda unidade de NAL de EOS tem o mesmo ID de camada que a camada de melhoria.
[0008] Os sistemas, métodos e dispositivos da presente revelação têm, cada um, diversos aspectos inovadores, sendo que nenhum dentre os mesmos é responsável exclusivamente pelos atributos revelados no presente documento. Os detalhes de um ou mais exemplos são estabelecidos nos desenhos anexos e na descrição abaixo, que não estão destinados a limitar o escopo total dos conceitos inventivos descritos no presente documento. Outros recursos, objetivos e vantagens serão evidentes a partir da descrição e dos desenhos, e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0009] A Figura 1A é um diagrama de blocos que ilustra um sistema exemplificativo de encriptação e decodificação de vídeo que pode utilizar técnicas de acordo com aspectos descritos nesta revelação.
[0010] A Figura 1B é um diagrama de blocos que ilustra outro sistema exemplificativo de encriptação e decodificação de vídeo que pode realizar técnicas de acordo com aspectos descritos nesta revelação.
[0011] A Figura 2A é um diagrama de blocos que ilustra um exemplo de um encriptador de vídeo que pode implantar técnicas de acordo com aspectos descritos nesta revelação.
[0012] A Figura 2B é um diagrama de blocos que ilustra um exemplo de um encriptador de vídeo que pode implantar técnicas de acordo com aspectos descritos nesta revelação.
[0013] 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 aspectos descritos nesta revelação.
[0014] 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 aspectos descritos nesta revelação.
[0015] A Figura 4 é um diagrama de blocos que ilustra uma configuração exemplificativa de imagens em diferentes camadas de acordo com uma modalidade da presente revelação.
[0016] A Figura 5 é um fluxograma que ilustra um método para codificar informações de vídeo de acordo com uma modalidade da presente revelação.
[0017] A Figura 5A é um fluxograma que ilustra um método para codificar informações de vídeo, de acordo com uma modalidade da presente revelação.
[0018] A Figura 6 é um fluxograma que ilustra um método para codificar informações de vídeo de acordo com uma modalidade da presente revelação.
DESCRIÇÃO DETALHADA
[0019] Em geral, esta revelação se refere a codificação em camada única, assim como previsão intercamada para codificação de vídeo escalonável no contexto de codecs de vídeo avançado, como HEVC (Codificação de Vídeo de Alta Eficiência). Mais especificamente, a presente revelação se refere a sistemas e métodos para desempenho melhorado de previsão intercamada na extensão de codificação de vídeo escalonável de HEVC, que pode ser referida como SHVC.
[0020] Na descrição abaixo, as técnicas de H.264/Codificação de Vídeo Avançada (AVC) relacionadas a certas modalidades são descritas; o padrão de HEVC e as técnicas relacionadas também são discutidos. Embora determinadas modalidades sejam descritas no presente documento no contexto dos padrões HEVC e/ou H.264, uma pessoa da habilidade comum na técnica pode observar que os sistemas e os métodos revelados no presente documento podem ser aplicáveis a qualquer padrão de codificação de vídeo adequado. Por exemplo, as modalidades reveladas no presente documento podem ser aplicáveis a um ou mais dentre os seguintes padrões: O Setor de Padronização de Telecomunicações (ITU-T) da União Internacional de Telecomunicações (ITU) H.261, o Visual do Grupo de Especialistas em Imagem em Movimento (MPEG) 1 (MPEG-1) da Organização Internacional de Normalização (ISO) e da Comissão Eletrotécnica Internacional (IEC) (ISO/IEC), o Visual ITU-T H.262 ou ISO/IEC MPEG-2, ITU-T H.263, o Visual ISO/IEC MPEG-4 e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), que inclui suas extensões de Codificação de Vídeo Escalonável (SVC) e de Codificação de Vídeo com Múltiplas Camadas (MVC).
[0021] A HEVC segue, geralmente, o enquadramento de padrões de codificação de vídeo anteriores em muitos aspectos. A unidade de previsão em HEVC e diferente das unidades de previsão (por exemplo, macrobloco) em certos padrões de codificação de vídeo anteriores. De fato, não há conceito de macrobloco em HEVC, conforme entendido 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 árvore quadrática, que pode fornecer alta flexibilidade, dentre outros possíveis benefícios. Por exemplo, dentro do esquema de HEVC, são definidos três tipos de blocos, a Unidade de Codificação (CU), a Unidade de Previsão (PU) e a Unidade de Transformada (TU). 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, porém, a HEVC não restringe o tamanho máximo das CUs e pode permitir a divisão recursiva em quatro CUs de tamanho igual a fim de melhorar a capacidade de adaptação ao conteúdo. A PU pode ser considerada a unidade básica de inter/intraprevisão, e uma única PU pode conter múltiplas partições de formato arbitrário para codificar padrões de imagem irregulares de maneira eficaz. 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 se limitar 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 a função respectiva da unidade, o que pode resultar em eficiência de codificação aprimorada.
[0022] Apenas para propósitos de ilustração, determinadas modalidades reveladas no presente documento são descritas com exemplos que incluem apenas duas camadas (por exemplo, uma camada inferior, tal como, a camada-base e uma camada superior, tal como, a camada de aprimoramento) de dados de vídeo. Uma “camada” de dados de vídeo pode se referir, de modo geral, a uma sequência de imagens que têm pelo menos uma característica comum, como uma vista, uma taxa de quadro, uma resolução, ou similares. Por exemplo, uma camada pode incluir dados de vídeo associados a uma vista particular (por exemplo, perspectiva) de dados de vídeo de múltiplas vistas. Como outro exemplo, uma camada pode incluir dados de vídeo associada a uma camada particular de dados de vídeo escalonáveis. Desse modo, 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 com múltiplas camadas (também referido como um encriptador de vídeo com múltiplas camadas ou codificador e decodificador com múltiplas camadas) pode se referir, de modo conjunto, a um codec com múltiplas vistas ou um codec escalonável (por exemplo, um codec configurado para encriptar e/ou decodificar dados de vídeo que usam MV-HEVC, 3D-HEVC, SHVC, ou outra técnica de codificação com múltiplas camadas). A encriptação de vídeo e a decodificação de vídeo podem ser referidas, ambas, de modo geral, como codificação de vídeo. Deve-se entender que tais exemplos podem ser aplicáveis às configurações que incluem múltiplas camadas-base e/ou de aprimoramento. Além disso, a fim de facilitar a exemplificação, a revelação a seguir inclui os termos “quadros” ou “blocos” com referência a determinadas modalidades. Entretanto, esses termos não devem ser limitativos. Por exemplo, as técnicas descritas abaixo podem ser usadas com quaisquer unidades de vídeo, tais como, blocos (por exemplo, CU, PU, TU, macroblocos, etc.), fatias, quadros, etc.
PADRÕES DE CODIFICAÇÃO DE VÍDEO
[0023] Uma imagem digital, tal como uma imagem de vídeo, uma imagem de TV, uma imagem estática ou uma imagem gerada por um gravador de vídeo ou um computador, pode consistir em pixels ou em amostras dispostos 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 de crominância. Sem compactação, a quantidade absoluta de informações a serem transmitidas de um encriptador de imagem para um decodificador de imagem tornaria a transmissão de imagem em tempo real impossível. A fim de reduzir a quantidade de informações a serem transmitidas, foram desenvolvidos vários métodos de compressão diferentes, tais como, os padrões JPEG, MPEG e H.263.
[0024] 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 chamado de ISO/IEC MPEG-4 AVC), incluindo suas extensões de SVC e de MVC.
[0025] Além disso, um novo padrão de codificação de vídeo, a saber, Codificação de Vídeo de Alta Eficiência (HEVC), está sendo desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo de ITU-T (VCEG) e do Grupo de Especialistas de Filme Cinematográfico de ISO/IEC (MPEG). A citação completa para o Rascunho de HEVC 10 é o documento JCTVC-L1003, Bross et al, "High Efficiency Video Coding (HEVC) Text Specification Draft 10", Equipe Colaborativa Conjunta em Codificação de Vídeo (JCT-VC - Joint Collaborative Team on Video codificação) da ITU-T SGI 6 WP3 e ISO/IEC JTC1/SC29/WG11, 12a reunião: Genebra, Suíça, 14 de janeiro de 2013 a 23 de janeiro de 2013. A extensão com múltiplas vistas para HEVC, a saber, MV-HEVC, e a extensão escalonável para HEVC, denominada de SHVC, também estão em desenvolvimento pela JCT-3V (Equipe Colaborativa Conjunta em Desenvolvimento de Extensão de Vídeo 3D da ITU-T/ISO/IEC - Equipe Colaborativa Conjunta em ITU-T/ISO/IEC de Desenvolvimento da Extensão de Codificação de Vídeo 3D) e pela JCT-VC, respectivamente.
VISÃO GERAL
[0026] Em um fluxo de bits com múltiplas camadas, uma camada pode incluir uma ou mais subcamadas temporais, e cada subcamada temporal pode ter um identificador (ID) associado à mesma denominado ID temporal. Em geral, imagens aqueles têm um ID temporal maior que a imagem atual não são usadas como imagens de referência para a imagem atual. O sinalizador sps_temporal_id_nesting_flag pode indicar adicionalmente se uma imagem particular que tem um ID temporal igual ou menor que o ID temporal da imagem atual pode ser usado como uma imagem de referência quando existir outra imagem que tem um ID temporal menor que a imagem particular e que segue a imagem particular na ordem de decodificação, mas precede a imagem atual na ordem de decodificação.
[0027] As versões anteriores de SHVC e MV-HEVC (por exemplo, o Rascunho de Trabalho 5 de SHVC e o Rascunho de Trabalho 7 de MV-HEVC) impõem um conflito na derivação de sps_temporal_id_nesting_flag quando o elemento de sintaxe não estiver presente no fluxo de bits. Sob certas condições, o valor do sinalizador não pode ser determinado tanto como 0 quanto como 1. A fim de se referir a esses e outros desafios, as técnicas de acordo com certos aspectos podem definir como derivar o valor de sps_temporal_id_nesting_flag sob tais condições (por exemplo, definir a precedência no processo de derivação) a fim de eliminar o conflito.
[0028] Além disso, em HEVC, uma AU contém uma imagem proveniente apenas de uma camada, e, frequentemente, o conceito de imagem e de AU pode ser usado de modo intercambiável. Em contraste, em SHVC e MV-HEVC, uma AU pode conter imagens provenientes de mais de uma camada, o que pode tornar incerto se uma variável ou um sinalizador devem ser associados a uma camada particular (por exemplo, a camada-base) ou devem se aplicar a toda a AU. Um exemplo de tal variável é HandleCraAsBlaFlag. A variável HandleCraAsBlaFlag pode indicar se se deve lidar com uma imagem de CRA como uma imagem de BLA. A versões anteriores de SHVC e MV-HEVC tornam incerto se HandleCraAsBlaFlag está associada apenas à camada-base ou à AU. A fim de se referir a esses e outros desafios, as técnicas de acordo com certos aspectos também podem definir se HandleCraAsBlaFlag deve ser associada apenas à camada-base ou à AU.
[0029] Além disso, conforme explicado acima em relação a HandleCraAsBlaFlag, devido ao fato de uma AU poder ter imagens provenientes de mais de uma camada em SHVC e MV-HEVC, pode ser incerto que uma unidade de NAL de EOS esteja associada a uma camada particular (por exemplo, a camada-base) ou deva se aplicar a toda a AU. A unidade de NAL de EOS pode indicar o fim de uma sequência e vídeo codificado (CVS), e é geralmente seguida por uma imagem de IRAP, como uma imagem de IDR, uma imagem de BLA ou uma imagem de CRA. As versões anteriores de SHVC e MV-HEVC não tornam claro se a unidade de NAL de EOS está associada apenas à camada-base ou à AU. A fim de se referir a esses e outros desafios, as técnicas de acordo com certos aspectos podem definir se a unidade de NAL de EOS deve ser associada apenas à camada-base ou à AU.
SISTEMA DE CODIFICAÇÃO DE VÍDEO
[0030] Diversos aspectos dos sistemas, aparelhos e métodos inovadores são descritos mais completamente a partir deste ponto no presente documento com referência aos desenhos anexos. Entretanto, a presente revelação pode ser incorporada de várias maneiras diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apresentada ao longo de toda a presente revelação. Em vez disso, esses aspectos são fornecidos de modo que a presente revelação seja minuciosa e completa, e transmita plenamente o escopo da revelação para as pessoas versadas na técnica. Com base nos ensinamentos no presente documento, uma pessoa versada na técnica deve observar que o escopo da revelação está destinado a cobrir qualquer aspecto dos sistemas, aparelhos e métodos inovadores revelados no presente documento, sejam os mesmos implantados independentemente ou em combinação 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 quantidade dos aspectos estabelecidos no presente documento. Além disso, o escopo da presente revelação está destinado a cobrir tal aparelho ou método que é praticado com o uso de outra estrutura, funcionalidade ou estrutura e funcionalidade adicionalmente, ou que não sejam os vários aspectos da presente revelação estabelecidos no presente documento. Deve ser entendido que qualquer aspecto revelado no presente documento pode ser incorporado por um ou mais elementos de uma reivindicação.
[0031] Embora aspectos particulares sejam descritos no presente documento, muitas variações e permutações desses aspectos se encaixam no escopo da revelação. Embora alguns benefícios e vantagens dos aspectos preferenciais sejam mencionados, o escopo da revelação não está destinado a ser limitado a benefícios, usos ou objetivos particulares. Ao invés disso, os aspectos da revelação estão destinados a serem amplamente aplicáveis a diferentes tecnologias sem fio, configurações de sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados a título 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 ao invés de limitantes, sendo que o escopo da revelação é definido pelas reivindicações anexas e equivalentes das mesmas.
[0032] Os desenhos anexos ilustram exemplos. Os elementos indicados por numerais de referência nos desenhos anexos correspondem aos elementos indicados por numerais de referência similares na descrição a seguir. Na presente revelação, os elementos que têm nomes que começam com palavras ordinais (por exemplo, "primeiro(a)", "segundo(a)", "terceiro(a)" e assim por diante) não implicam necessariamente que os elementos têm uma ordem particular. Ao invés disso, tais palavras ordinais são meramente usadas para se referir a diferentes elementos de um tipo igual ou similar.
[0033] A Figura 1A é um diagrama de blocos que ilustra um sistema de codificação de vídeo 10 exemplificativo que pode utilizar as técnicas de acordo com os aspectos descritos nesta revelação. Conforme usado descrito no presente documento, o termo “codificador de vídeo” se refere, de modo geral, tanto a encriptadores de vídeo quanto a decriptadores de vídeo. Nesta revelação, os termos “codificação de vídeo” ou “codificação” podem se referir, de modo geral, à encriptação de vídeo e à decodificação de vídeo. Além de encriptadores de vídeo e decriptadores de vídeo, os aspectos descritos no presente pedido podem se estender a outros dispositivos relacionados, tais como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e reencriptar outro fluxo de bits) e Middleboxes (por exemplo, dispositivos que podem modificar, transformar e/ou, de outro modo, manipular um fluxo de bits).
[0034] Conforme mostrado na Figura 1A, o sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 que gera dados de vídeo encriptados a serem decodificados posteriormente por um dispositivo de destinação 14. No exemplo da Figura 1A, o dispositivo de origem 12 e o dispositivo de destinação 14 constituem dispositivos separados. Entretanto, verifica-se que os dispositivos de origem e de destinação 12, 14 podem estar no mesmo dispositivo ou podem ser parte do mesmo, conforme mostrado no exemplo da Figura 1B.
[0035] Com referência, mais uma vez, à Figura 1A, o dispositivo de origem 12 e o dispositivo de destinação 14 podem compreender, respectivamente, qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores de mesa, computadores do tipo notebook (por exemplo, computadores do tipo laptop), computadores do tipo tablet, decodificadores de sinais, aparelhos de telefone, tais como, os então chamados telefones "inteligentes", os então chamados dispositivos do tipo pad "inteligentes", televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de transmissão contínua de vídeo, ou semelhantes. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destinação 14 podem ser equipados para comunicação sem fio.
[0036] O dispositivo de destinação 14 pode receber, por meio do enlace 16, os dados de vídeo encriptados a serem decodificados. O enlace 16 pode compreender qualquer tipo de meio ou dispositivo com capacidade de mover os dados de vídeo encriptados do dispositivo de origem 12 para o dispositivo de destinação 14. No exemplo da Figura 1A, o enlace 16 pode compreender um meio de comunicação para possibilitar que o dispositivo de origem 12 transmita os dados de vídeo codificado ao dispositivo de destinação 14 em tempo real. Os dados de vídeo encriptados 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 destinação 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede com base 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 possa ser útil que para facilitar a comunicação do dispositivo de origem 12 com o dispositivo de destinação 14.
[0037] Alternativamente, dados encriptados podem ser emitidos de uma interface de emissão 22 para um dispositivo de armazenamento opcional 31. De modo similar, os dados encriptados podem ser acessados a partir do dispositivo de armazenamento 31 por uma interface de entrada 28, por exemplo, do dispositivo de destinação 14. O dispositivo de armazenamento 31 pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente como um disco rígido, memória flash, memória volátil ou não volátil ou quaisquer outros meios de armazenamento digital adequados para armazenar dados de vídeo encriptados. Em um exemplo adicional, o dispositivo de armazenamento 31 pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode manter o vídeo encriptado gerado pelo dispositivo de origem 12. O dispositivo de destinação 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento por meio de transmissão ou transferência por download. O servidor de arquivos pode ser qualquer tipo de servidor com capacidade para armazenar dados de vídeo encriptados e transmitir esses dados de vídeo encriptados para o dispositivo de destinação 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 Arquivos (FTP), dispositivos de armazenamento anexado à rede (NAS) ou uma unidade de disco local. O dispositivo de destinação 14 pode acessar os dados de vídeo codificado através de qualquer conexão de dados padrão, incluindo uma conexão à Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão de rede de área local sem fio (WLAN)), uma conexão cabeada (por exemplo, uma linha de assinatura digital (DSL), um modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar dados de vídeo encriptados armazenados em um servidor de arquivos. A transmissão de dados de vídeo encriptados do dispositivo 31 de armazenamento pode ser uma transmissão contínua, uma transmissão de transferência por download ou uma combinação das mesmas.
[0038] As técnicas da presente revelação não estão necessariamente limitadas às aplicações ou definições sem fio. As técnicas podem ser aplicadas à codificação de vídeo em apoio a qualquer uma dentre uma variedade de aplicações de multimídia, tais como, difusões de televisão remotas, transmissões de televisão a cabo, transmissões de televisão a satélite, transmissões contínuas de vídeo, por exemplo, por meio da Internet (por exemplo, transmissão contínua adaptativa dinâmica através de 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 armazenada 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 a fim de suportar aplicações, tais como, transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo e/ou videotelefonia.
[0039] No exemplo da Figura 1A, o dispositivo de origem 12 inclui uma fonte de vídeo 18, um encriptador 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 a transmissor. No dispositivo de origem 12, a fonte de vídeo 18 pode incluir uma fonte, tal 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 capturado anteriormente, uma interface de alimentação de vídeo para receber vídeo de um fornecedor de conteúdo de vídeo e/ou um sistema de computação gráfica para gerar dados de computação gráfica, como o vídeo de origem, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 é uma câmera de vídeo, o dispositivo de fonte 12 e o dispositivo de destinação 14 podem formar os chamados telefones com câmera fotográfica, ou telefones com câmera de vídeo, conforme ilustrado no exemplo da Figura 1B. Entretanto, as técnicas descritas nesta revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas às aplicações com fio e/ou sem fio.
[0040] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo encriptador de vídeo 20. Os dados de vídeo encriptados podem ser transmitidos para o dispositivo de destinação 14 através da interface de emissão 22 do dispositivo de origem 12. Os dados de vídeo encriptados também podem (ou, alternativamente) ser armazenados no dispositivo de armazenamento 31 para acesso posterior pelo dispositivo de destinação 14 ou outros dispositivos, para decodificação e/ou reprodução. O encriptador de vídeo 20 ilustrado nas Figuras 1A e 1B podem compreender o encriptador de vídeo 20 ilustrado na Figura 2A, o encriptador de vídeo 23 ilustrado na Figura 2B, ou qualquer outro encriptador de vídeo descrito no presente documento.
[0041] No exemplo da Figura 1A, o dispositivo de destinação 14 inclui uma 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 destinação 14 pode receber os dados de vídeo encriptados pelo enlace 16 e/ou a partir do dispositivo de armazenamento 31. Os dados de vídeo encriptados comunicados pelo enlace 16, ou fornecidos no dispositivo de armazenamento 31, podem incluir uma variedade de elementos de sintaxe gerados pelo encriptador de vídeo 20 para uso por um decodificador de vídeo, como o decodificador de vídeo 30, na decodificação dos dados de vídeo. Tais elementos de sintaxe podem estar incluídos com os dados de vídeo encriptados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento ou armazenados em um servidor de arquivos. O decodificador de vídeo 30 ilustrado na Figura 1A e 1B 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.
[0042] O dispositivo de exibição 32 pode ser integrado ou externo ao dispositivo de destinação 14. Em alguns exemplos, o dispositivo de destinação 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 destinação 14 pode ser um dispositivo de exibição. Em general, o dispositivo de exibição 32 exibe os dados de vídeo decodificados a um usuário e pode compreende qualquer um dentre uma variedade de dispositivos de exibição, tais como, um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo de emissão de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0043] Em aspectos relacionados, a Figura 1B mostra um sistema de codificação e decodificação de vídeo exemplificativo 10' em que os dispositivos de origem e de destinação 12, 14 estão em um dispositivo 11, ou fazem parte do mesmo. O dispositivo 11 pode ser um aparelho de telefone, tal como, um telefone "inteligente" ou semelhante. O dispositivo 11 pode incluir um dispositivo de controlador/processador opcional 13 em comunicação de operação com os dispositivos de origem e de destinação 12, 14. O sistema 10' da Figura 1B pode incluir adicionalmente uma unidade de processamento de vídeo 21 entre o encriptador 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 1B; entretanto, em outras implantações, a unidade de processamento de vídeo 21 pode ser implantada como uma porção do encriptador de vídeo 20 e/ou do dispositivo de processador/controlador 13. O sistema 10' também pode incluir um rastreador opcional 29, que pode rastrear um objeto de interesse em uma sequência de vídeo. O objeto de 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 10' da Figura 1B e componentes do mesmo são, de outro modo, similares ao sistema 10 da Figura 1A e aos componentes do mesmo.
[0044] O encriptador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, como HEVC, e pode se conformar a um Modelo de Teste HEVC (HM). Alternativamente, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões de proprietário ou de indústria, como o padrão ITU-T H.264, referido de modo alternativo como MPEG-4, Parte 10, AVC, ou extensões de tais padrões. Os conjuntos de procedimentos dessa revelação, entretanto, não se limitam a qualquer padrão de codificação particular. Outros exemplos padrões de compressão de vídeo incluem MPEG-2 e ITU-T H.263.
[0045] Embora não mostrados nos exemplos das Figuras 1, em alguns aspectos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados a um encriptador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a encriptação tanto de áudio quanto de vídeo em uma corrente de dados comum ou correntes de dados separadas. Caso aplicável, em alguns exemplos, as unidades MUX-DEMUX podem se conformar ao protocolo multiplexador ITU H.223, ou outros protocolos como protocolo de datagrama de usuário (UDP).
[0046] O encriptador 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 encriptador adequado, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portal programáveis por campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas forem 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 desta revelação. Cada um dentre o encriptador de vídeo 20 e o decodificador de vídeo 30 podem estar incluídos em um ou mais encriptadores ou decodificadores, um dos quais pode ser integrado como parte de um encriptador/decodificador (CODEC) combinado em um dispositivo respectivo.
PROCESSO DE CODIFICAÇÃO DE VÍDEO
[0047] Conforme mencionado brevemente acima, o encriptador de vídeo 20 encripta os dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada uma das imagens é uma imagem estática que faz parte de um vídeo. Em alguns exemplos, uma imagem pode ser denominada de "quadro" de vídeo. Quando o encriptador de vídeo 20 encriptar os dados de vídeo, o encriptador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que forma 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.
[0048] Para gerar o fluxo de bits, o encriptador de vídeo 20 pode realizar operações de encriptação em cada imagem nos dados de vídeo. Quando o encriptador de vídeo 20 realizar as operações de encriptação nas imagens, o encriptador 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 uma APS podem ser parâmetros que podem estar mais propensos a mudar do que os parâmetros em uma PPS.
[0049] Para gerar uma imagem codificada, o encriptador de vídeo 20 pode particionar uma imagem em blocos de vídeo igualmente dimensionados. Um bloco de vídeo pode ser um arranjo bidimensional de amostras. Cada um dos blocos de vídeo está associado a um bloco de árvore. Em alguns exemplos, um bloco de árvore pode ser denominado de unidade de codificação maior (LCU). Os blocos de árvores de HEVC podem ser amplamente análogos aos macroblocos de padrões anteriores, tais como, H.264/AVC. Entretanto, um bloco de árvore não se limita necessariamente a um tamanho particular, e pode incluir uma ou mais unidades de codificação (CUs). O encriptador de vídeo 20 pode usar particionamento de QuadTree para particionar os blocos de vídeo de blocos de árvore em blocos de vídeo associados a CUs, por isso o nome "blocos de árvore".
[0050] Em alguns exemplos, o encriptador 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 blocos de árvores. Em outros exemplos, um limite de uma fatia pode estar dentro de um bloco de árvore.
[0051] Como parte da realização de uma operação de codificação em uma imagem, o encriptador de vídeo 20 pode realizar as operações de codificação em cada fatia da imagem. Quando o encriptador de vídeo 20 realizar uma operação de encriptação em uma fatia, o encriptador de vídeo 20 pode gerar dados encriptados associados com a fatia. Os dados encriptados associados à fatia podem ser denominados “fatia codificada”.
[0052] A fim de gerar uma fatia codificada, o encriptador de vídeo 20 pode realizar operações de encriptação em cada bloco de árvore em uma fatia. Quando o encriptador de vídeo 20 realizar uma operação de codificação em um bloco de árvore, o encriptador de vídeo 20 pode gerar um bloco de árvore codificado. O bloco de árvore codificado pode compreender dados que representam uma versão encriptada do bloco de árvore.
[0053] Quando o encriptador de vídeo 20 gerar uma fatia codificada, o encriptador de vídeo 20 pode realizar as operações de encriptação (por exemplo, encriptar) nos blocos de árvores na fatia, de acordo com uma ordem de varredura por rastreio. Por exemplo, o encriptador de vídeo 20 pode codificar os blocos de árvores da fatia em que uma ordem que procede da esquerda para a direita ao longo de uma fileira mais superior de blocos de árvores na fatia, em seguida, da esquerda para a direita ao longo de uma próxima fileira inferior de blocos de árvores, e assim por diante até que o encriptador de vídeo 20 tenha codificado cada um dos blocos de árvores na fatia.
[0054] Como resultado da encriptação dos blocos de árvores de acordo com a ordem de varredura por rastreio, os blocos de árvores acima e à esquerda de um determinado bloco de árvore podem ter sido encriptados, porém, os blocos de árvores abaixo e à direita do determinado bloco de árvore ainda não foram encriptados. Consequentemente, o encriptador de vídeo 20 pode ter capacidade para acessar informações geradas codificando-se os blocos de árvores acima e à esquerda do determinado bloco de árvore durante a codificação do determinado bloco de árvore. Entretanto, o encriptador de vídeo 20 pode não ter capacidade para acessar as informações geradas codificando-se blocos de árvores abaixo e à direita do determinado bloco de árvore durante a codificação do determinado bloco de árvore.
[0055] A fim de gerar um bloco de árvore codificado, o encriptador de vídeo 20 pode realizar recursivamente a partição de árvore quadrática no bloco de vídeo do bloco de árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode estar associado a uma CU diferente. Por exemplo, o encriptador de vídeo 20 pode particionar o bloco de vídeo de um bloco de árvore em quatro sub-blocos com tamanhos iguais, particionar um ou mais dentre os sub-blocos em quatro sub-blocos com tamanhos iguais, 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 é particionado em blocos de vídeo associados a outras CUs.
[0056] Um ou mais elementos de sintaxe no fluxo de bits pode indicar um número máximo de vezes que o encriptador de vídeo 20 pode particionar o bloco de vídeo de um bloco de árvore. Um bloco de vídeo de um CU pode ter o formato quadrado. O tamanho do bloco de vídeo de uma CU (por exemplo, o tamanho da CU) pode estar em uma faixa de pixels 8x8 até o tamanho de um bloco de vídeo de um bloco de árvore (por exemplo, o tamanho do bloco de árvore) com um máximo de pixels 64x64 ou mais.
[0057] O encriptador de vídeo 20 pode realizar as operações de codificação (por exemplo, codificar) em cada CU de um bloco de árvore, de acordo com uma ordem de varredura-z. Em outras palavras, o encriptador de vídeo 20 pode codificar uma CU superior à esquerda, uma CU superior à direita, uma CU de fundo à esquerda e, em seguida, uma CU de fundo à direita, nessa ordem. Quando o encriptador de vídeo 20 realizar uma operação de codificação em uma CU particionada, o encriptador de vídeo 20 pode codificar CUs associadas aos sub-blocos do bloco de vídeo da CU particionada de acordo com a ordem de varredura-z. Em outras palavras, o encriptador de vídeo 20 pode codificar uma CU associado a um sub-bloco superior à esquerda, uma CU associada a um sub-bloco superior à direita, um CU associada a um sub-bloco de fundo à esquerda e, em seguida, uma CU associada a um sub-bloco de fundo à direita, nessa ordem.
[0058] Como resultado da codificação das CUs de um bloco de árvore de acordo com uma ordem de varredura- z, as CUs acima, acima e à esquerda, acima e à direita, esquerda e abaixo e à esquerda de uma determinada CU podem ter sido codificadas. As CUs abaixo e à direita da determinada CU ainda não foram codificadas. Consequentemente, o encriptador de vídeo 20 pode ter capacidade para acessar as informações gerada codificando- se algumas CUs que circundam a determinada CU durante a codificação da determinada CU. Entretanto, o encriptador de vídeo 20 pode não ter capacidade para acessar as informações gerada codificando-se outras CUs que circundam a determinada CU durante a codificação da determinada CU.
[0059] Quando o encriptador de vídeo 20 codificar uma CU não particionada, o encriptador de vídeo 20 pode gerar um ou mais unidades de previsã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 encriptador 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 encriptador de vídeo 20 pode usar intraprevisão ou interprevisão para gerar o bloco de vídeo previsto para uma PU.
[0060] Quando o encriptador de vídeo 20 usar a intraprevisão para gerar o bloco previsto de uma PU, o encriptador de vídeo 20 pode gerar o bloco previsto da PU com base nas amostras decodificadas da imagem associada à PU. Caso o encriptador de vídeo 20 use intraprevisão para gerar os blocos de vídeo previstos das PUs de uma CU, a CU é uma CU intraprevista. Quando o encriptador de vídeo 20 usar a interprevisão para gerar o bloco previsto da PU, o encriptador de vídeo 20 pode gerar o bloco previsto da PU com base nas amostras decodificadas da imagem associada à PU com base em amostras decodificadas de uma ou mais imagens diferentes da imagem associada à PU. Caso o encriptador de vídeo 20 use interprevisão para gerar os blocos de vídeo previstos das PUs de uma CU, a CU é uma CU interprevista.
[0061] Adicionalmente, quando o encriptador de vídeo 20 usar interprevisão para gerar um bloco de vídeo previsto para um PU, o encriptador 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 diferente da imagem associada à PU. Em alguns exemplos, um bloco de referência de uma PU também pode ser denominado de "amostra de referência" da PU. O encriptador de vídeo 20 pode gerar o bloco de vídeo previsto para a PU com base nos blocos de referência da PU.
[0062] Após o encriptador de vídeo 20 gerar os blocos de vídeo previstos para uma ou mais PUs de uma CU, o encriptador de vídeo 20 pode gerar dados residuais para a CU com base nos blocos de vídeo previstos para os PUs da CU. Os dados residuais para a CU podem indicar diferenças entre amostras nos blocos de vídeo previstos para as PUs da CU e para o bloco de vídeo original da CU.
[0063] Adicionalmente, como parte da realização de uma operação de codificação em uma CU não particionada, o encriptador de vídeo 20 pode realizar a partição de árvore quadrática recursiva nos dados residuais da CU a fim de 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.
[0064] O encriptador de vídeo 20 pode aplicar uma ou mais transformadas aos blocos de vídeo residuais associados às TUs para gerar os 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.
[0065] Após gerar um bloco de coeficiente de transformada, o encriptador de vídeo 20 pode realizar um processo de quantização no bloco de coeficiente de transformada. Em geral, a quantização se refere a um processo no qual os coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados usados para representar os coeficientes de transformada, o que fornece uma compactação adicional. O processo de quantização pode reduzir a profundidade de bit associada a algum ou a todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de w-bit pode ser arredondado para um coeficiente de transformada de m-bit durante a quantização, em que n é maior que m.
[0066] O encriptador 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 como o encriptador de vídeo 20 quantiza os blocos de coeficiente de transformada associados à CU. O encriptador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente de transformada associados a uma CU ajustando- se o valor de QP associados à CU.
[0067] Após o encriptador de vídeo 20 quantiza um bloco de coeficiente de transformada, o encriptador de vídeo 20 pode gerar definições de elementos de sintaxe que representam os coeficientes de transformada no bloco de coeficiente de transformada quantizado. O encriptador de vídeo 20 pode aplicar operações de encriptação por entropia, tais como, operações de Codificação Aritmética Binária Adaptativa Ao Contexto (CABAC), a alguns desses elementos de sintaxe. Outras técnicas de codificação por entropia, tais como, codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação por entropia de partição de intervalo de probabilidade (PIPE) ou outra codificação aritmética binária também podem ser usadas.
[0068] O fluxo de bits gerado pelo encriptador de vídeo 20 pode incluir uma série de unidades de Camada de Abstração de Rede (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 uma definição de parâmetro de vídeo, uma definição de parâmetro de sequência, uma definição de parâmetro de imagem, uma fatia codificada, informações de aprimoramento complementares (SEI), um delimitador de unidade de acesso, dados de preenchimento, ou outros tipos de dados. Os dados em uma unidade de NAL podem incluir várias estruturas de sintaxe.
[0069] O decodificador de vídeo 30 pode receber o fluxo de bits gerado pelo encriptador de vídeo 20. O fluxo de bits pode incluir uma representação codificada dos dados de vídeo encriptados pelo encriptador de vídeo 20. Quando o decodificador de vídeo 30 receber 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 realizar 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 geralmente recíproco ao processo realizado pelo encriptador de vídeo 20 para gerar os elementos de sintaxe.
[0070] 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 os 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 inversamente os blocos de coeficiente de transformada associados às TUs da CU. O decodificador de vídeo 30 pode realizar as transformadas inversas nos blocos de coeficiente de transformada a fim de reconstruir os blocos de vídeo residuais associados às TUs da CU. Após gerar os blocos de vídeo previstos e após 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 das CUs com base nos elementos de sintaxe no fluxo de bits.
Encriptador de Vídeo
[0071] A Figura 2A é um diagrama de blocos que ilustra um exemplo do encriptador de vídeo 20 que pode implantar técnicas de acordo com aspectos descritos nesta revelação. O encriptador de vídeo 20 pode ser configurado para processar uma única camada de um quadro de vídeo, tal como, para HEVC. Adicionalmente, o encriptador de vídeo 20 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação, incluindo, mas não limitado aos métodos de inferência da NoOutputOfPriorPicsFlag e processos relacionados descritos em maiores detalhes acima e abaixo em relação às Figuras 4 e 5. Como um exemplo, a unidade de processamento de previsão 100 pode ser configurada para realizar qualquer uma ou todas as técnicas descritas na presente revelação. Em outra modalidade, o encriptador de vídeo 20 inclui uma unidade de previsão intercamada opcional 128 que é configurada para realizar qualquer ou todas as técnicas descritas na presente revelação. Em outras modalidades, a previsão intercamada pode ser realizada pela unidade de processamento de previsão 100 (por exemplo, a unidade de interprevisão 121 e/ou a unidade de intraprevisão 126), nesse caso, a unidade de previsão intercamada 128 pode ser omitida. Entretanto, os aspectos da presente revelação não se limitam a isso. Em alguns exemplos, as técnicas descritas na presente revelação podem ser compartilhadas entre os vários componentes de encriptador de vídeo 20. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar qualquer ou todas as técnicas descritas na presente revelação.
[0072] Para propósitos explicativos, a presente revelação descreve o encriptador de vídeo 20 no contexto de codificação de HEVC. Entretanto, as técnicas da presente revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo retratado na Figura 2A é para um codec de camada única. Entretanto, conforme será descrito adicionalmente em referência à Figura 2B, uma parte ou todo o encriptador de vídeo 20 pode ser duplicado para o processamento de um codec com múltiplas camadas.
[0073] O encriptador de vídeo 20 pode realizar a intracodificação e a intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação tem base na previsão espacial para reduzir ou remover a redundância espacial no vídeo dentro de um dado quadro ou imagem de vídeo. A intercodificação se baseia na previsão temporal para reduzir ou remover a redundância temporal no vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer um dentre diversos modos de codificação com base em espaço. Os intermodos, tais como, a previsão unidirecional (modo P) ou a previsão bidirecional (modo B), podem se referir a qualquer um dentre os vários modos de codificação com base em tempo.
[0074] No exemplo da Figura 2A, o encriptador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais de encriptador de vídeo 20 incluem uma unidade de processamento de previsão 100, uma unidade de geração residual 102, uma unidade de processamento de transformada 104, uma 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 encriptação por entropia 116. A unidade de processamento de previsão 100 incluir uma unidade de interprevisão 121, uma unidade de estimativa de movimento 122, uma unidade de compensação de movimento 124, uma unidade de intraprevisão 126 e uma unidade de previsão intercamada 128. Em outros exemplos, o encriptador de vídeo 20 pode incluir mais componentes funcionais, poucos componentes funcionais 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, porém, são representadas no exemplo da Figura 2A separadamente para propósitos explicativos.
[0075] O encriptador de vídeo 20 pode receber os dados de vídeo. O encriptador de vídeo 20 pode receber os dados de vídeo de várias fontes. Por exemplo, o encriptador de vídeo 20 pode receber os dados de vídeo da fonte de vídeo 18 (por exemplo, mostrado na Figura 1A ou 1B) ou outra fonte. Os dados de vídeo podem representa uma série de imagens. A fim de codificar os dados de vídeo, o encriptador de vídeo 20 pode realizar uma operação de codificação em cada uma das imagens. Como parte da realização da operação de codificação em uma imagem, o encriptador de vídeo 20 pode realizar as operações de codificação em cada fatia da imagem. Como parte da realização de uma operação de codificação em uma fatia, o encriptador de vídeo 20 pode realizar as operações de codificação em blocos de árvores na fatia.
[0076] Como parte da realização de uma operação de codificação em um bloco de árvore, a unidade de processamento de previsão 100 pode realizar a partição de árvore quadrática no bloco de vídeo do bloco de árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode estar associado a uma CU diferente. Por exemplo, a unidade de processamento de previsão 100 pode particionar um bloco de vídeo de um bloco de árvore em quatro sub-blocos com tamanhos iguais, particionar um ou mais dentre os sub-blocos em quatro sub-sub-blocos com tamanhos iguais, e assim por diante.
[0077] Os tamanhos dos blocos de vídeo associados às CUs podem estar na faixa a partir de amostras 8x8 até o tamanho do bloco de árvore com um máximo de amostras 64x64 ou maior. Na presente revelação, "NxN" e "N por N" podem ser usados de modo intercambiável para se referir às dimensões de amostras de um bloco de vídeo em termos de dimensões horizontal e vertical, 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). De modo semelhante, um bloco NxN tem, em geral, 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.
[0078] Além disso, como parte da realização da operação de codificação em um bloco de árvore, a unidade de processamento de previsão 100 pode gerar uma estrutura de dados de árvore quadrática hierárquica para o bloco de árvore. Por exemplo, um bloco de árvore pode corresponder a um nó-raiz da estrutura de dados de árvore quadrática. Caso a unidade de processamento de previsão 100 particione o bloco de vídeo do bloco de árvore em quatro sub-blocos, o nó-raiz tem quatro nós-filho na estrutura de dados de árvore quadrática. Cada um dos nós-filho corresponde a uma CU associada a um dentre os sub-blocos. Caso a unidade de processamento de previsão 100 particione um dentre os sub- blocos em quatro sub-blocos, sendo que o nó corresponde à CU associada ao sub-bloco pode ter quatro nós-filho, cada um corresponde a uma CU associada a um dentre os sub-sub- blocos.
[0079] Cada nó da estrutura de dados de árvore quadrática pode conter dados de sintaxe (por exemplo, elementos de sintaxe) para o bloco de árvore ou CU correspondente. Por exemplo, um nó na árvore quadrática pode incluir um sinalizador de divisão que indica a possibilidade de o bloco de vídeo da CU correspondente ao nó ser particionado (por exemplo, divido) em quatro sub- blocos. Os elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender da possibilidade de o bloco de vídeo da CU ser divido em sub-blocos. Uma CU cujo bloco de vídeo não é particionado pode corresponder a um nó-folha na estrutura de dados de árvore quadrática. Um bloco de árvore codificado pode incluir os dados com base na estrutura de dados de árvore quadrática para um bloco de árvore correspondente.
[0080] O encriptador de vídeo 20 pode realizar as operações de codificação em cada CU não particionada de um bloco de árvore. Quando o encriptador de vídeo 20 realizar uma operação de encriptação em uma CU não particionada, o encriptador de vídeo 20 gera dados que representam uma representação encriptada da CU não particionada.
[0081] Como parte da realização de uma operação de codificação em uma CU, a unidade de processamento de previsão 100 pode particionar o bloco de vídeo da CU entre uma ou mais PUs da CU. O encriptador de vídeo 20 e o decodificador de vídeo 30 podem suportar vários tamanhos de PU. Supondo que o tamanho de uma CU particular é 2Nx2N, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou xN e interprevisão em tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, nLx2N, nRx2N ou semelhantes. O encriptador de vídeo 20 e o decodificador de vídeo 30 também podem suportar partição assimétrica para os tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em alguns exemplos, a unidade de processamento de previsão 100 pode realizar a partição geométrico de modo a particionar o bloco de vídeo de uma CU dentre as PUs da CU ao longo de um limite que não se encontra com os lados do bloco de vídeo da CU em ângulos retos.
[0082] A unidade de interprevisão 121 pode realizar a interprevisão em cada PU da CU. A interprevisão pode fornecer a compressão temporal. A fim de realizar a interprevisã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 nas amostras decodificadas de imagens diferentes da imagem associada à CU (por exemplo, imagens de referência). Na presente revelação, um bloco de vídeo previsto gerado pela unidade de compensação de movimento 124 pode ser denominado de um bloco de vídeo interprevisto.
[0083] 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 diferentes operações para uma PU de uma CU dependendo da possibilidade de a PU estar em uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intraprevistas. Por conseguinte, caso a PU esteja em uma fatia I, a unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 não realizam a interprevisão na PU.
[0084] Caso a PU esteja em uma fatia P, a imagem que contém a PU está associada a uma lista de imagens de referência denominada de "lista 0". Cada uma das imagens de referência na lista 0 contém amostras que podem ser usadas para a interprevisão de outras imagens. Quando a unidade de estimativa de movimento 122 realizar 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 buscar nas imagens de referência da lista 0 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 correspondem mais proximamente à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 o quão próximo 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 o quão próximo um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU através da soma de diferença absoluta (SAD), soma de diferença quadrática (SSD) ou através de outras métricas de diferença.
[0085] 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 figura 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 graus variantes 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 fracionária. No caso de da precisão de amostra fracionária, os valores de bloco de referência podem ser interpolados a partir 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.
[0086] Caso a PU esteja em uma fatia B, a imagem que contém a PU pode ser associada a duas listas de imagens de referência, denominada 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 listas que é uma combinação da lista 0 com a lista 1.
[0087] Além disso, caso a PU esteja em uma fatia B, a unidade de estimativa de movimento 122 pode realizar previsão unidirecional ou a previsão bidirecional para a PU. Quando a unidade de estimativa de movimento 122 realiza a previsão unidirecional para a PU, a unidade de estimativa de movimento 122 pode buscar nas imagens de referência da lista 0 ou da lista 1 um bloco de referência para a PU. Em seguida, a unidade de estimativa de movimento 122 pode gerar um índice de referência que indica imagem de referência na lista 0 ou na 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 previsão e o vetor de movimento como as informações de movimento da PU. O indicador de direção de previsão pode indicar se o índice de referência indica uma imagem de referência na lista 0 ou na lista 1. A unidade de compensação de movimento 124 pode gerar os blocos de vídeo previsto da PU com base nos blocos de referência indicados pelas informações de movimento da PU.
[0088] Quando a unidade de estimativa de movimento 122 realiza a previsão bidirecional para uma PU, a unidade de estimativa de movimento 122 pode buscar nas imagens de referência da lista 0 um bloco de referência para a PU, e pode também buscar nas imagens de referência da lista 1 outro bloco de referência para a PU. Em seguida, a unidade de estimativa de movimento 122 pode gerar índices de referência que indicam as imagens de referência na lista 0 e na lista 1 que contêm os blocos de referência e os 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 com 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.
[0089] Em alguns exemplos, a unidade de estimativa de movimento 122 não emite um conjunto completo de informações de movimento para uma PU à unidade de encriptação por entropia 116. Ao invés 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 suficientemente semelhantes às informações de movimento de uma PU vizinha. 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 da PU vizinha. Em outro exemplo, a unidade de estimativa de movimento 122 pode identificar, em uma estrutura de sintaxe associada à PU, uma PU vizinha 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 vizinha indicada. O decodificador de vídeo 30 pode usar o vetor de movimento da PU vizinha indicada e a diferença de vetor de movimento para determinar o vetor de movimento da PU. Referindo-se às informações de movimento de uma primeira PU, durante a sinalização das informações de movimento de uma segunda PU, o encriptador de vídeo 20 pode ter capacidade para sinalizar as informações de movimento da segunda PU como uso de menos bits.
[0090] Conforme ainda mais discutido abaixo, em referência às Figuras 5 e 6, a unidade de processamento de previsão 100 pode ser configurada para codificar (por exemplo, encriptar ou decodificar) a PU (ou quaisquer outras unidades de vídeo ou blocos de camada de referência e/ou de camada de melhoria) através da realização dos métodos ilustrados nas Figuras 5 e 6. Por exemplo, a unidade de interprevisão 121 (por exemplo, por meio de unidade de estimativa de movimento 122 e/ou unidade de compensação de movimento 124), a unidade de intraprevisão 126 ou a unidade de previsão intercamada 128 pode ser configurada para realizar os métodos ilustrados nas Figuras 5 e 6, juntos ou separadamente.
[0091] Como parte da realização de uma operação de codificação em uma CU, a unidade de intraprevisão 126 pode realizar a intraprevisão nas PUs da CU. A intraprevisão pode fornecer compressão espacial. Quando a unidade de intraprevisão 126 realizar a intraprevisão em uma PU, a unidade de intraprevisão 126 pode gerar dados de previsão para a PU com base em amostras decodificadas de outras PUs na mesma imagem. Os dados de previsão para a PU podem incluir um bloco de vídeo previsto e vários elementos de sintaxe. A unidade de intraprevisão 126 pode realizar intraprevisão em PUs em fatias I, fatias P e fatias B.
[0092] A fim de realizar a intraprevisão em uma PU, a unidade de intraprevisão 126 pode usar múltiplos modos de intraprevisão para gerar múltiplos conjuntos de dados de previsão para a PU. Quando a unidade de intraprevisão 126 usa um modo de intraprevisão para gerar um conjunto de dados de previsão para a PU, a unidade de intraprevisão 126 pode estender as amostras dos blocos de vídeo de PUs vizinhas através do bloco de vídeo da PU em uma direção e/ou um gradiente associados ao modo de intraprevisão. As PUs vizinhas podem estar acima, acima e à direita, acima e à esquerda ou à esquerda da PU, assumindo uma ordem de codificação do fundo para o topo e da esquerda para direita para PUs, CU e para blocos de árvore. A unidade de intraprevisão 126 pode usar vários números modos de intraprevisão, por exemplo, 33 modos de intraprevisão direcional, dependendo do tamanho da PU.
[0093] A unidade de processamento de previsão 100 pode selecionar os dados de previsão para uma PU dentre os dados de previsão gerados pela unidade de compensação de movimento 124 para a PU ou os dados de previsão gerados pela unidade de intraprevisão 126 para a PU. Em alguns exemplos, a unidade de processamento de previsão 100 seleciona os dados de previsão para a PU com base nas métricas de taxa/distorção dos conjuntos de dados de previsão.
[0094] Caso a unidade de processamento de previsão 100 selecione os dados de previsão gerados pela unidade de intraprevisão 126, a unidade de processamento de previsão 100 pode sinalizar o modo de intraprevisão que foi usado para gerar os dados de previsão para as PUs, por exemplo, o modo de intraprevisão selecionado. A unidade de processamento de previsão 100 pode sinalizar o modo de intraprevisão selecionado de vários modos. Por exemplo, pode ser provável que o modo de intraprevisão selecionado seja igual ao modo de intraprevisão de uma PU vizinha. Em outras palavras, o modo de intraprevisão da PU vizinha pode ser o modo mais provável para a atual PU. Desse modo, a unidade de processamento de previsão 100 pode gerar um elemento de sintaxe a fim de indicar que o modo de intraprevisão selecionado é igual ao modo de intraprevisão da PU vizinha.
[0095] Conforme discutido acima, o encriptador de vídeo 20 pode incluir a unidade de previsão intercamada 128. A unidade de previsão intercamada 128 é configurada para prever um bloco atual (por exemplo, um bloco atual na EL) com o uso de uma ou mais camadas diferentes que são disponíveis na SVC (por exemplo, uma camada-base ou de referência). Tal previsão pode ser denominada de previsão intercamada. A unidade de previsão intercamada 128 utiliza métodos de previsão para reduzir a redundância intercamada, desse modo, aprimorando a eficiência de codificação e reduzindo as exigências de recurso computacional. Alguns exemplos de previsão intercamada incluem intraprevisão intercamada, previsão de moção intercamada e previsão residual intercamada. A intraprevisão intercamada usa a reconstrução de blocos localizados simultaneamente na camada-base para prever o bloco atual na camada de aprimoramento. A previsão de moção intercamada usa as informações de movimento da camada-base para prever o movimento na camada de aprimoramento. A previsão residual intercamada usa o resíduo da camada-base para prever o resíduo da camada de aprimoramento. Cada um dentre os esquemas de previsão intercamada é discutido abaixo mais detalhadamente.
[0096] Após a unidade de processamento de previsão 100 selecionar os dados de previsão para as PUs de uma CU, a unidade de geração residual 102 pode gerar dados residuais para a CU subtraindo-se (por exemplo, indicados pelo sinal de menos) os 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 2D que correspondem a diferentes componentes de amostra das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que correspondem às diferenças entre componentes de luminância de amostras nos blocos de vídeo previstos das PUs da CU e os componentes de luminância das 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 das 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.
[0097] A unidade de processamento de previsão 100 pode realizar a partição de árvore quadrática a fim de particionar os blocos de vídeo residuais da 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 às TUs de uma CU podem ou não se basear nos tamanhos e nas posições dos blocos de vídeo associados às PUs da CU. Uma estrutura de árvore quadrática conhecido como uma "árvore quadrática residual" (RQT) pode incluir nós associados a cada um dos blocos de vídeo residuais. As TUs de uma CU podem corresponder aos nós-folha da RQT.
[0098] A unidade de processamento de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU aplicando-se 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 2D de coeficientes de transformada. A unidade de processamento de transformada 104 pode aplicar diversas 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.
[0099] 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.
[0100] O encriptador de vídeo 20 pode associar um valor de QP a uma CU de várias maneiras. Por exemplo, o encriptador de vídeo 20 pode realizar uma análise de taxa de distorção em um bloco de árvore associado à CU. Na análise de taxa de distorção, o encriptador de vídeo 20 pode gerar múltiplas representações codificadas do bloco de árvore realizando-se uma operação de codificação múltiplas vezes no bloco de árvore. O encriptador de vídeo 20 pode associar diferentes valores de QP à CU quando o encriptador de vídeo 20 gera diferentes representações codificadas do bloco de árvore. O encriptador de vídeo 20 pode sinalizar que um determinado valor de QP está associado à CU quando o determinado valor de QP estiver associado à CU em uma representação encriptada do bloco de árvore que tem uma métrica de taxa de bits e de distorção mais inferior.
[0101] A unidade de quantização inversa 108 e a 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 a partir 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 a partir de um ou mais blocos de vídeo previstos de amostra gerados pela unidade de processamento de previsão 100 para produzir um bloco de vídeo reconstruído associado a uma TU. Reconstruindo-se os blocos de vídeo para cada TU de uma CU, dessa maneira, o encriptador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[0102] 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 desblocagem a fim reduzir artefatos de blocagem no bloco de vídeo associado à CU. Após a realização das uma ou mais operações de desblocagem, a unidade de filtro 113 pode armazenar o bloco de vídeo reconstruído da CU no 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 contém o bloco de vídeo reconstruído para realizar a interprevisão em PUs de imagens subsequentes. Além disso, uma unidade de intraprevisão 126 pode usar blocos de vídeo reconstruídos no armazenamento temporário de imagem decodificada 114 para realizar intraprevisão em outras PUs na mesma imagem como da CU.
[0103] A unidade de encriptação por entropia 116 pode receber dados provenientes de outros componentes funcionais de encriptador de vídeo 20. Por exemplo, a unidade de encriptação por entropia 116 pode receber blocos de coeficiente de transformada a partir da unidade de quantização 106 e pode receber elementos de sintaxe a partir da unidade de processamento de previsão 100. Quando a unidade de encriptação por entropia 116 recebe os dados, a unidade de encriptação por entropia 116 pode realizar um ou mais operações de encriptação por entropia de modo a gerar dados encriptados por entropia. Por exemplo, o encriptador de vídeo 20 pode realizar uma operação de codificação de comprimento variável adaptativa ao contexto (CAVLC), uma operação de CABAC, uma operação de codificação de comprimento varável-em-variável (V2V), uma operação de codificação aritmética binária adaptativa ao contexto com base em sintaxe (SBAC), uma operação de codificação por entropia de partição de intervalo de probabilidade (PIPE), ou outros tipos de operação de encriptação por entropia nos dados. A unidade de encriptação por entropia 116 pode emitir um fluxo de bits que inclui os dados encriptados por entropia.
[0104] Com parte da realização de uma operação de encriptação por entropia nos dados, a unidade de encriptação por entropia 116 pode selecionar um modelo de contexto. Caso a unidade de encriptação por entropia 116 realize uma operação de CABAC, o modelo de contexto pode indicar estimativas de probabilidades de compartimentos particulares que valores particulares. No contexto de CABAC, o termo "compartimento" é usado para se referir a um bit de uma versão binarizada de um elemento de sintaxe.
Encriptador de Vídeo com Múltiplas Camadas
[0105] A Figura 2B é um diagrama de blocos que ilustra um exemplo de um encriptador de vídeo com múltiplas camadas 23 (também referido simplesmente como encriptador de vídeo com múltiplas camadas que 23) que pode implantar as técnicas em conformidade com os aspectos descritos na presente revelação. O encriptador de vídeo 23 pode ser configurado para processar quadros de vídeo com múltiplas camadas, tais como, para a codificação SHVC e com múltiplas vistas. Além disso, o encriptador de vídeo 23 pode ser configurado para realizar qualquer ou todas as técnicas da presente revelação.
[0106] O encriptador de vídeo 23 inclui um encriptador de vídeo 20A e um encriptador de vídeo 20B, em que cada um pode ser configurado como o encriptador de vídeo 20 e pode realizar as funções descritas acima em relação ao encriptador de vídeo 20. Além disso, conforme indicado pela reutilização de numerais de referência, os encriptadores de vídeo 20A e 20B podem incluir pelo menos algum dentre os sistemas e subsistemas como o encriptador de vídeo 20. Embora o encriptador de vídeo 23 seja ilustrado como incluindo dois encriptadores de vídeo 20A e 20B, o encriptador de vídeo 23 não se limita a isso e pode incluir qualquer número de camadas de encriptador de vídeo 20. Em algumas modalidades, o encriptador de vídeo 23 pode incluir um encriptador 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 encriptada por um encriptador de vídeo que inclui cinco camadas de encriptador. Em algumas modalidades, o encriptador de vídeo 23 pode incluir mais camadas de encriptador do que quadros em uma unidade de acesso. Em alguns casos, algumas dentre as camadas de encriptador de vídeo pode ser inativa quando o durante o processamento de algumas unidades de acesso.
[0107] Além dos encriptadores de vídeo 20A e 20B, o encriptador 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 criar, por exemplo, uma camada de aprimoramento. A unidade de reamostragem 90 pode aumentar uma resolução de informações particulares associadas à camada-base recebida de um quadro, porém, não outras informações. Por exemplo, a unidade de reamostragem 90 pode aumentar a resolução do tamanho espacial ou do número de pixels da camada-base, porém, 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 previsão 100 pode realizar o aumento de resolução. 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 de modo a estar em conformidade com um conjunto de regras de limite de fatia e/ou de regras de varredura por rastreio. Embora descrito primariamente como aumento de resolução de uma camada-base, ou de uma camada inferior em uma unidade de acesso, em alguns casos, a unidade de reamostragem 90 pode reduzir a resolução de uma camada. Por exemplo, caso durante a transmissão contínua de uma largura de banda de um vídeo seja reduzida, um quadro pode ter sua resolução diminuída em vez de aumentada.
[0108] 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 encriptador de camada inferior (por exemplo, o encriptador de vídeo 20A) e para aumentar a resolução da imagem (ou das informações de imagem recebidas). Em seguida, essa imagem com resolução aumentada pode ser fornecida à unidade de processamento de previsão 100 de um encriptador de camada superior (por exemplo, o encriptador de vídeo 20B) configurado para encriptar uma imagem na mesma unidade de acesso do encriptador de camada inferior. Em alguns casos, o encriptador de camada superior é uma camada removida do encriptador de camada inferior. Em outros casos, pode haver um ou mais encriptadores de camada superiores entre o encriptador de vídeo de camada 0 e o encriptador de camada 1 da Figura. 2B.
[0109] Em alguns casos, a unidade de reamostragem 90 pode ser omitida ou ignorada. Em tais casos, a imagem do armazenamento temporário de imagem decodificada 114 do encriptador de vídeo 20A pode ser fornecido diretamente, ou pelo menos sem ser fornecido à unidade de reamostragem 90, à unidade de processamento de previsão 100 do encriptador de vídeo 20B. Por exemplo, caso os dados de vídeo fornecidos ao encriptador de vídeo 20B e à imagem de referência do armazenamento temporário de imagem decodificada 114 do encriptador de vídeo 20A tenham o mesmo tamanho ou resolução, a imagem de referência pode ser fornecida ao encriptador de vídeo 20B sem qualquer reamostragem.
[0110] Em algumas modalidades, o encriptador de vídeo 23 reduz a resolução dos dados de vídeo a serem fornecidos ao encriptador de camada inferior com o uso da unidade de redução de resolução 94 antes que os dados de vídeo sejam fornecidos ao encriptador de vídeo 20A. Alternativamente, a unidade de redução de resolução 94 pode ser uma unidade de reamostragem 90 com capacidade para aumentar ou reduzir a resolução dos dados de vídeo. Ainda em outras modalidades, a unidade de redução de resolução 94 pode ser omitida.
[0111] Conforme ilustrado na Figura 2B, o encriptador de vídeo 23 pode incluir adicionalmente um multiplexador 98, ou mux. O mux 98 pode emitir um fluxo de bits combinados do encriptador de vídeo 23. O fluxo de bits combinados pode ser criado tomando-se o fluxo de bits de cada um dentre os encriptadores de vídeo 20A e 20B e alternando-se qual fluxo de bits é emitido em um determinado momento. Embora em alguns casos os bits dos dois (ou mais no caso de mais que duas camadas de encriptador de vídeo) fluxos de bits possam ser alternados um bit por vez, em muitos casos, os fluxos de bits são combinados diferentemente. Por exemplo, o fluxo de bits de saída pode ser criado alternando-se o fluxo de bits selecionado um bloco por vez. Em outro exemplo, o fluxo de bits de saída pode ser criado emitindo-se uma razão diferente de 1: 1 de blocos de cada um dos encriptadores de vídeo 20A e 20B. Por exemplo, dois blocos podem ser emitidos a partir do encriptador de vídeo 20B para cada bloco emitido do encriptador de vídeo 20A. Em algumas modalidades, o fluxo de saída do mux 98 pode ser programado. Em outras modalidades, o mux 98 pode combinar os fluxos de bits dos encriptadores de vídeo 20A, 20B com base em um sinal de controle recebido de um sistema externo ao encriptador de vídeo 23, tal como, a partir de um processador em um dispositivo de origem que inclui o módulo de origem 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 gratuita), ou com base em qualquer outro fator para determinar uma saída de resolução desejada do encriptador de vídeo 23.
DECODIFICADOR DE VÍDEO
[0112] 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 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, tal 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, incluindo, mas não limitado aos métodos de inferência da NoOutputOfPriorPicsFlag e processos relacionados descritos em maiores detalhes acima e abaixo em relação às Figuras 4 e 5. Por exemplo, a unidade de compensação de modo 162 e/ou a unidade de intraprevisão 164 podem ser configuradas para realizar qualquer e todas as técnicas descritas na presente revelação. Em uma modalidade, o decodificador de vídeo 30 pode incluir opcionalmente a unidade de previsão intercamada 166 que é configurada para realizar qualquer ou todas as técnicas descritas na presente revelação. Em outras modalidades, a previsão intercamada pode ser realizada pela unidade de processamento de previsão 152 (por exemplo, a unidade de compensação de movimento 162 e/ou a unidade de intraprevisão 164), nesse caso, a unidade de previsão intercamada 166 pode ser omitida. Entretanto, os aspectos da presente revelação não se limitam a isso. Em alguns exemplos, as técnicas descritas nessa revelação podem ser compartilhadas entre os vários componentes de decodificador de vídeo 30. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar qualquer ou todas as técnicas descritas na presente revelação.
[0113] Para propósitos explicativos, a presente revelação descreve o decodificador de vídeo 30 no contexto de codificação de HEVC. Entretanto, as técnicas da presente revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo retratado na Figura 3A é para um codec de camada única. Entretanto, conforme será descrito adicionalmente em referência à Figura 3B, alguns ou todos os decriptadores de vídeo 30 podem ser duplicados para o processamento de um codec com múltiplas camadas.
[0114] 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 por entropia 150, uma unidade de processamento de previsã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 previsão 152 inclui uma unidade de compensação de movimento 162, uma unidade de intraprevisão 164 e uma unidade de previsão intercamada 166. Em alguns exemplos, o decodificador de vídeo 30 pode realizar uma passagem de decodificação, em geral, recíproca à passagem de codificação descrita em relação ao encriptador de vídeo 20 da Figura 2A. Em outros exemplos, o encriptador de vídeo 30 pode incluir mais componentes funcionais, poucos componentes funcionais ou componentes funcionais diferentes.
[0115] O decodificador de vídeo 30 pode receber um fluxo de bits que compreende dados de vídeo encriptados. O fluxo de bits pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 receber o fluxo de bits, a unidade de decodificação por entropia 150 pode realizar uma operação de análise no fluxo de bits. Como resultado da realização da operação de análise no fluxo de bits, a unidade de decodificação por entropia 150 pode extrair os elementos de sintaxe do fluxo de bits. Como parte da realização da operação de análise, a unidade de decodificação por entropia 150 pode decodificar por entropia os elementos de sintaxe encriptados por entropia no fluxo de bits. A unidade de processamento de previsã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.
[0116] 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 definição de parâmetro de vídeo, unidades de NAL de definição de parâmetro de sequência, unidades de NAL de definição de parâmetro de imagem, unidades de NAL de SEI, e assim por diante. Como parte da realização da operação de análise no fluxo de bits, a unidade de decodificação por entropia 150 pode realizar operações de análise que extraem e decodificam por entropia as definições de parâmetro de sequência das unidades de NAL de definição de parâmetro de sequência, a imagem definições de parâmetro das unidades de NAL de definição de parâmetro de imagem, os dados de SEI das unidades de NAL de SEI, e assim por diante.
[0117] Além disso, as unidades de NAL do fluxo de bits podem incluir unidades de NAL de fatia codificadas. Como parte da realização da operação de análise no fluxo de bits, a unidade de decodificação por entropia 150 pode realizar as operações de análise que extraem e decodificam por entropia as 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 que pertencem a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica uma definição de parâmetro de imagem associada a uma imagem que contém a fatia. A unidade de decodificação por entropia 150 pode realizar operações de decodificação por entropia, tais como, operações de decodificação de CABAC, em elementos de sintaxe no cabeçalho de fatia codificado para recuperar o cabeçalho de fatia.
[0118] Como parte da extração dos dados de fatia das unidades de NAL de fatia codificada, a unidade de decodificação por entropia 150 pode realizar as operações de análise que extraem os elementos de sintaxe das CUs codificadas nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados a blocos de coeficiente de transformada. Em seguida, a unidade de decodificação por entropia 150 pode realizar as operações de decodificação de CABAC em alguns dos elementos de sintaxe.
[0119] Após a unidade de decodificação por 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. Através da realização da 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 ao CU.
[0120] Como parte da realização de uma operação de reconstrução em uma TU, a unidade de quantização inversa 154 pode quantizar inversamente, por exemplo, desquantizar, um bloco de coeficiente de transformada associado à TU. A unidade de quantização inversa 154 pode quantizar inversamente o bloco de coeficiente de transformada de maneira semelhante aos processos de quantização inversa proposta 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 encriptador de vídeo 20 de modo que uma CU do bloco de coeficiente de transformada determine um grau de quantização e, de modo semelhante, um grau de quantização inversa a ser aplicado pela unidade de quantização inversa 154.
[0121] Após a unidade de quantização inversa 154 quantizar inversamente um bloco de coeficiente de transformada, a unidade de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associada 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 ao bloco de coeficiente de transformada. Em alguns exemplos, a unidade de transformada inversa 156 pode determinar que uma transformada inversa se aplique ao bloco de coeficiente de transformada com base na sinalização do encriptador 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 uma árvore quadrática para um bloco de árvore associado ao bloco de coeficiente de transformada. Em outros exemplos, a unidade de transformada inversa 156 pode inferir a transformada inversa a partir de uma ou mais características de codificação, tais como, tamanho de bloco, moo de codificação, ou semelhantes. Em alguns exemplos, a unidade de transformada inversa 156 pode aplicar uma transformada inversa em cascata.
[0122] Em alguns exemplos, a unidade de compensação de movimento 162 pode refinar o bloco de vídeo previsto de uma PU realizando-se interpolação com base em filtros de interpolação. Os identificadores para filtros de interpolação a serem usados para a compensação de movimento com precisão de subamostra podem estar incluídos nos elementos de sintaxe. A unidade de compensação de movimento 162 pode usar os mesmos filtros de interpolação usados pelo encriptador de vídeo 20 durante a geração do bloco de vídeo previsto do PU a fim de calcular os valores interpolados para amostras de número abaixo de número inteiro de um bloco de referência. A unidade de compensação de movimento 162 pode determinar os filtros de interpolação usados pelo encriptador de vídeo 20 de acordo com as informações de sintaxe recebidas e pode usar os filtros de interpolação de modo a produzir o bloco de vídeo previsto.
[0123] Conforme ainda mais discutido abaixo, em referência às Figuras 5 e 6, a unidade de processamento de previsão 152 pode codificar (por exemplo, encriptar ou decodificar) a PU (ou quaisquer outras unidades de vídeo ou blocos de camada de referência e/ou de camada de melhoria) através da realização dos métodos ilustrados nas Figuras 5 e 6. Por exemplo, a unidade de compensação de movimento 162, a unidade de intraprevisão 164 ou a unidade de previsão intercamada 166 pode ser configurada para realizar os métodos ilustrados nas Figuras 5 e 6, juntos ou separadamente.
[0124] Caso uma PU seja encriptada como uso de intraprevisão, a unidade de intraprevisão 164 pode realizar a intraprevisão para gerar um bloco de vídeo previsto para a PU. Por exemplo, a unidade de intraprevisão 164 pode determinar um modo de intraprevisã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 intraprevisão 164 pode usar para determinar o modo de intraprevisão da PU.
[0125] Em alguns exemplos, os elementos de sintaxe podem indicar que a unidade de intraprevisão 164 deve usar o modo de intraprevisão de outra PU para determinar o modo de intraprevisão da atual PU. Por exemplo, é provável que o modo de intraprevisão da atual PU seja igual ao modo de intraprevisão de uma PU vizinha. Em outras palavras, o modo de intraprevisão da PU vizinha pode ser o modo mais provável para a atual PU. Consequentemente, nesse exemplo, o fluxo de bits pode incluir um elemento de sintaxe pequeno que indica que o modo de intraprevisão da PU é igual ao modo de intraprevisão da PU vizinha. Desse modo, a unidade de intraprevisão 164 pode usar o modo de intraprevisão para gerar os dados de previsão (por exemplo, amostras previstas) para o PU com base nos blocos de vídeo de PUs espacialmente vizinhas.
[0126] Conforme discutido acima, l decodificador de vídeo 30 também pode incluir a unidade de previsão intercamada 166. A unidade de previsão intercamada 166 é configurada para prever um bloco atual (por exemplo, um bloco atual na EL) com o uso de uma ou mais camadas diferentes que são disponíveis na SVC (por exemplo, uma camada-base ou de referência). Tal previsão pode ser denominada de previsão intercamada. A unidade de previsão intercamada 166 utiliza métodos de previsão para reduzir a redundância intercamada, desse modo, aprimorando a eficiência de codificação e reduzindo as exigências de recurso computacional. Alguns exemplos de previsão intercamada incluem intraprevisão intercamada, previsão de moção intercamada e previsão residual intercamada. A intraprevisão intercamada usa a reconstrução de blocos localizados simultaneamente na camada-base para prever o bloco atual na camada de aprimoramento. A previsão de moção intercamada usa as informações de movimento da camada-base para prever o movimento na camada de aprimoramento. A previsão residual intercamada usa o resíduo da camada-base para prever o resíduo da camada de aprimoramento. Cada um dentre os esquemas de previsão intercamada é discutido abaixo mais detalhadamente.
[0127] A unidade de reconstrução 158 pode usar os blocos de vídeo residuais associados às TUs de uma CU e os blocos de vídeo previstos das PUs da CU, por exemplo, tanto dados de intraprevisão como dados de interprevisã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.
[0128] 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 desblocagem para reduzir os artefatos de blocagem associados à CU. Após a unidade de filtro 159 realizar uma operação de desblocagem para reduzir os artefatos de blocagem associados à CU, o decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU no armazenamento temporário de imagem decodificada 160. O armazenamento temporário de imagem decodificada 160 pode fornecer gravuras de referência para compensação, intraprevisão e apresentação de movimento subsequente em um dispositivo de visor, tal como dispositivo de visor 32 da Figura 1A ou 1B. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos de vídeo no armazenamento temporário de imagem decodificada 160, operações de intraprevisão ou interprevisão nas PUs ou outras CUs.
DECODIFICADOR COM MÚLTIPLAS CAMADAS
[0129] A Figura 3B é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo com múltiplas camadas 33 (também referido simplesmente como decodificador de vídeo com múltiplas camadas que 33) que pode implantar as técnicas em conformidade com os aspectos descritos na presente revelação. O decodificador de vídeo 33 pode ser configurado para processar quadros de vídeo com múltiplas camadas, tais como para a codificação com múltiplas visualizações e SHVC. Além disso, o decodificador de vídeo 33 pode ser configurado para realizar qualquer parte ou todas as técnicas da presente revelação.
[0130] O Decodificador De Vídeo 33 Inclui Um Decodificador De Vídeo 30a E Um Decodificador De Vídeo 30b, Em Que Cada Um 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. Além Disso, Conforme Indicado Pela Reutilização De Numerais De Referência, Os Decodificadores De Vídeo 30a 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 Inclusivo De Dois Decodificadores De Vídeo 30a E 30b, O Decodificador De Vídeo 33 Não Se Limita A Isso E Pode Incluir Qualquer Quantidade De Camadas Do 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 Do Que Quadros Em Uma Unidade De Acesso. Em Alguns Casos, Algumas Dentre As Camadas De Decodificador De Vídeo Pode Estar Inativa Quando O Durante O Processamento De Algumas Unidades De Acesso.
[0131] 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 aprimorada a ser adicionada à lista de imagem de referência para o quadro ou unidade de acesso. Essa camada aprimorada 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 de modo a estar em conformidade com um conjunto de regras de limite de fatia e/ou de regras de varredura por rastreio. Em alguns casos, a unidade de aumento de resolução 92 pode ser uma unidade de reamostragem configurada para aumentar e/ou reduzir a resolução de uma camada de um quadro de vídeo recebido
[0132] 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 das informações de imagem recebidas). Em seguida, essa imagem com resolução aumentada pode ser fornecida à unidade de processamento de previsã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 do 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.
[0133] Em alguns casos, a unidade de aumento de resolução 92 pode ser omitida ou ignorada. Em tais casos, a imagem do armazenamento temporário de imagem decodificada 160 do decodificador de vídeo 30A pode ser fornecido diretamente, ou pelo menos sem ser fornecido à unidade de aumento de resolução 92, à unidade de processamento de previsão 152 do decodificador de vídeo 30B. Por exemplo, caso os dados de vídeo fornecidos ao decodificador de vídeo 30B e à imagem de referência do armazenamento temporário de imagem decodificada 160 do decodificador de vídeo 30A tenham o mesmo tamanho ou resolução, a imagem de referência pode ser fornecida ao decodificador de vídeo 30B sem aumento de resolução. Além disso, 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 reduzir a resolução de uma imagem de referência recebida do armazenamento temporário de imagem decodificada 160 do decodificador de vídeo 30A.
[0134] Conforme ilustrado na Figura 3B, o decodificador de vídeo 33 pode incluir adicionalmente um demultiplexador 99, ou demux. O demux 99 pode dividir um fluxo de bits de vídeo codificado em múltiplos fluxos de bits, sendo que cada fluxo de bits emitido pelo demux 99 é fornecido a um decodificador de vídeo diferente 30A e 30B. Os múltiplos fluxos de bits podem ser criados recebendo-se um fluxo de bits e cada um dentre os 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 recebidos pelo demux 99 possam ser alternados um bit por vez entre cada um dentre 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 alternando-se qual decodificador de vídeo recebe o fluxo de bits um bloco por vez. Em outro exemplo, o fluxo de bits pode ser divido por uma razão diferente de 1: 1 de blocos para qual cada um dentre os decodificadores de vídeo 30A e 30B. Por exemplo, dois blocos podem ser fornecidos ao decodificador de vídeo 30B para cada bloco fornecido ao decodificador de vídeo 30A. Em algumas modalidades, a divisão do fluxo de bits pelo demux 99 pode ser 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, tal como, de um processador em um dispositivo de destinação incluindo o módulo de destino 14. O sinal de controle pode ser gerado com base na resolução ou na taxa de bits 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 gratuita), ou com base em qualquer outro fator para determinar uma saída de resolução obtenível pelo decodificador de vídeo 33.
IMAGENS DE INTRAPONTO DE ACESSO ALEATÓRIO (IRAP)
[0135] Alguns esquemas de codificação de vídeo podem fornecer vários pontos de acesso aleatórios por todo o fluxo de bits de modo que o fluxo de bits pode ser decodificado a partir do início de qualquer um desses pontos de acesso aleatórios sem precisar decodificar quaisquer imagens que precedem esses pontos de acesso aleatórios no fluxo de bits. Em tais esquemas de codificação de vídeo, todas as imagens que seguem um ponto de acesso aleatório em ordem de saída (por exemplo, incluindo essas imagens que estão na mesma unidade de acesso como a imagem que fornece o ponto de acesso aleatório) podem ser decodificadas corretamente sem usar quaisquer imagens que precedem o ponto de acesso aleatório. Por exemplo, até mesmo caso uma porção do fluxo de bits seja perdida durante transmissão ou durante decodificação, um decodificador pode continuar a decodificação do fluxo de bits com o início a partir do próximo ponto de acesso aleatório. O suporte para o acesso aleatório pode facilitar, por exemplo, serviços de transmissão contínua dinâmica, operações de busca, comutação de canal, etc.
[0136] Em alguns esquemas de codificação, tais pontos de acesso aleatórios podem ser fornecidos pelas imagens que são denominadas de imagens de IRAP. Por exemplo, um ponto de acesso aleatório (por exemplo, fornecido por uma camada de aprimoramento imagem de IRAP) em uma camada de aprimoramento ("camadaA") contida em uma unidade de acesso ("auA") pode fornecer acesso aleatório de camada específica de modo que para cada camada de referência ("camadaB") da camadaA (por exemplo, uma camada de referência que é uma camada que é usada para prever a camadaA) que tem um ponto de acesso aleatório contido em uma unidade de acesso ("auB") que está na camadaB e precede a auA em ordem de decodificação (ou um ponto de acesso aleatório contido na auA) as imagens na camadaA, que seguem a auB em ordem de saída (incluindo as imagens localizadas na auB), sejam corretamente passíveis de decodificação sem precisar decodificar quaisquer imagens na camadaA que precede a auB.
[0137] As imagens IRAP podem ser codificadas com o uso de intraprevisão (por exemplo, codificadas sem se referir a outras imagens) e podem incluir, por exemplo, imagens de atualização de decodificador instantânea (IDR), imagens de acesso aleatório limpo (CRA) e imagens de acesso de enlace rompido (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 previsão pelas imagens que seguem a imagem de IDR em ordem de decodificação. Quando há uma imagem de CRA no fluxo de bits, as imagens que seguem a imagem de CRA podem ou não usar as imagens que precedem a imagem de CRA em ordem de decodificação para a previsão. Essas imagens que seguem a imagem de CRA na ordem de decodificação, porém, usam imagens que precedem a imagem de CRA em ordem de decodificação, podem ser denominadas de imagens esquerdas ignoradas por acesso aleatório (RASL). Outro tipo de imagem que segue uma imagem de IRAP em ordem de decodificação e que precede a imagem de IRAP em ordem de saída é uma imagem esquerda passível de decodificação por acesso aleatório, 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 caso as imagens que precedem a imagem de CRA não estejam 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 ao decodificador (por exemplo, devido ao fato de que dois fluxos de bits são unidos entre si 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 associadas ao mesmo tempo de saída ao longo de camadas) que contém uma imagem de camada-base (por exemplo, a imagem que tem um valor de ID de camada igual a 0) que é uma imagem de IRAP pode ser denominada de uma unidade de acesso de IRAP.
ALINHAMENTO DE CAMADA CRUZADA DE IMAGENS DE IRAP
[0138] Em SVC, as imagens de IRAP podem não estar alinhadas (por exemplo, contidas na mesma unidade de acesso) através de diferentes camadas. Por exemplo, caso tenha sido exigido que as imagens de IRAP estejam alinhadas, qualquer unidade de acesso que contém pelo menos uma imagem de IRAP contém apenas as imagens de IRAP. Por outro lado, caso não tenha sido exigido que as imagens de IRAP estejam alinhadas, em uma única unidade de acesso, uma imagem (por exemplo, em uma primeira camada) pode ser uma imagem de IRAP, e outra imagem (por exemplo, em uma segunda camada) pode ser uma imagem que não seja de IRAP. Ter tais imagens de IRAP não alinhadas em um fluxo de bits pode fornecer algumas vantagens. Por exemplo, em um fluxo de bits de duas camadas, caso haja mais imagens de IRAP na camada-base do que na camada de aprimoramento, em aplicações de difusão e de difusão seletiva, o baixo atraso de sintonização e a alta eficiência de codificação podem ser alcançados.
[0139] Em alguns esquemas de codificação de vídeo, uma contagem de ordem de imagem (POC) pode ser usada para acompanhar a ordem relativa na qual as imagens decodificadas são exibidas. Alguns dentre tais esquemas de codificação pode fazer com que os valores de POC sejam redefinidos (por exemplo, definidos como zero ou definidos como algum valor sinalizado no fluxo de bits) toda vez que determinados tipos de imagens aparecerem no fluxo de bits. Por exemplo, os valores de POC de determinadas imagens de IRAP podem ser redefinidos, o que faz com que os valores de POC de outras imagens que precedem essas imagens de IRAP em ordem de decodificação também sejam redefinidos. Isso pode ser problemático quando não é exigido que as imagens de IRAP não estejam alinhadas através de diferentes camadas. Por exemplo, quando uma imagem ("picA") for uma imagem de IRAP, e outra imagem ("picB") na mesma unidade de acesso não for uma imagem de IRAP, o valor de POC de uma imagem ("picC"), que é redefinido devido à picA ser uma imagem de IRAP na camada que contém a picA, pode ser diferente do valor de POC de uma imagem ("picD"), que não é redefinido, na camada que contém a picB, em que a picC e a picD estão na mesma unidade de acesso. Isso faz com que a picC e a picD tenham diferentes valores de POC embora pertençam à mesma unidade de acesso (por exemplo, mesmo tempo de saída). Desse modo, nesse exemplo, o processo de derivação para derivar os valores de POC da picC e da picD podem ser modificados para produzir os valores de POC que são consistentes com a definição de valores de POC e das unidades acesso.
IMAGEM DE INICIALIZAÇÃO DE CAMADA (LIP)
[0140] Em alguns esquemas de encriptação, uma imagem de inicialização de camada (“imagem de LIP”) pode ser definida como uma imagem que é uma imagem de IRAP que tem um sinalizador NoRas1OutputFlag (por exemplo, um sinalizador que indica que as imagens de RASL não devem ser emitidas se definidas como sendo 1 e indica que as imagens de RASL devem ser emitidas se definidas como sendo 0) definido como sendo 1 ou uma imagem que está contida em uma unidade de acesso de IRAP inicial, que é uma unidade de acesso de IRAP em que a imagem de camada-base (por exemplo, uma imagem que tem um ID de camada de 0 ou ID de camada menor definida no fluxo de bits) tem o NoRas1OutputFlag definido como sendo 1.
[0141] Em algumas modalidades, um SPS pode ser ativado em cada imagem de LIP. Por exemplo, cada imagem de IRAP que tem um sinalizador NoRas1OutputFlag definido como sendo 1 ou cada imagem que está contida em uma unidade de acesso de IRAP inicial, um novo SPS, que pode ser diferente (por exemplo, especificando diferentes resoluções de imagem, etc.) do SPS que foi anteriormente ativado. No entanto, em um caso em que a imagem de LIP não é uma imagem de IRAP (por exemplo, qualquer imagem contida em uma unidade de acesso de IRAP inicial) e a imagem de camada- base na unidade de acesso de IRAP inicial é uma imagem de IDR com um sinalizador NoClrasOutputFlag (por exemplo, um sinalizador que indica que as imagens de salto de acesso aleatório de camada transversal não devem ser emitidas se definidas como sendo 1 e indica que as imagens de salto de acesso aleatório de camada transversal devem ser emitidas se definidas como sendo 0) definido como sendo 0, não seria permitido que a imagem de LIP ative um novo SPS. Se um novo SPS for ativado em tal imagem de LIP em tal caso, particularmente, quando os conteúdos da RBSP de SPS do novo SPS forem diferentes daqueles do SPS que foi anteriormente ativo antes da unidade de acesso de IRAP inicial, poderia haver problemas em resoluções de imagem de diferenciação e resiliência de erro. Por exemplo, o novo SPS pode atualizar a resolução e previsão temporal de uso para se referir a imagens de tamanhos diferentes.
BOMBEAMENTO E LIBERAÇÃO DE IMAGENS
[0142] As imagens que são decodificadas (por exemplo, de modo que as mesmas possam ser exibidas ou usadas para prever outras imagens) são armazenadas em um armazenamento temporário de imagem decodificada (DPB). As imagens que devem ser emitidas podem ser marcadas como “necessárias para saída” e as imagens que devem ser usadas para prever outras imagens podem ser marcadas como “usadas para referência”. As imagens decodificadas que não são nem marcadas como “necessárias para saída” nem como “usadas para referência” (por exemplo, imagens que foram inicialmente marcadas como “usadas para referência” ou “necessárias para saída”, mas subsequentemente marcadas como “não usadas para referência” ou “não necessárias para saída”) podem estar presentes no DPB até que as mesmas sejam removidas pelo processo de decodificação. Em decodificadores compatíveis de ordem de saída, o processo de remoção de imagens do DPB segue, com frequência, imediatamente a saída de imagens que são marcadas como “necessárias para saída.” Esse processo de saída e remoção subsequente pode ser referido como “bombeamento”.
[0143] Além disso, há situações em que o decodificador pode remover as imagens no DPB sem saída, mesmo que essas imagens podem ser marcadas como “necessárias para saída”. Para facilitar a descrição no presente documento, as imagens decodificadas que estão presentes no DPB no momento da decodificação de uma imagem de IRAP (apesar da possibilidade de as imagens decodificadas serem marcadas como “necessárias para saída” ou “usadas para referência”) são referidas como “imagens de DPB em retardo” associadas à imagem de IRAP ou “imagens de DPB em retardo associadas” da imagem de IRAP. Alguns exemplos de tais situações, no contexto de HEVC, são descritos abaixo.
[0144] Em um exemplo, quando uma imagem de CRA com NoRas1OutputFlag igual a um valor de “1” estiver presente no meio de um fluxo de bits (por exemplo, não a primeira imagem no fluxo de bits), as imagens de DPB em retardo associadas à imagem de CRA não seriam emitidas e seriam removidas do DPB. Tais situações são suscetíveis de ocorrer no ponto de emendas, em que dois fluxos de bits são unidos e a primeira imagem do último fluxo de bits é uma imagem de CRA com NoRas1OutputFlag igual a um valor de “1”. Em um outro exemplo, quando uma imagem de IRAP picA que tem NoRas1OutputFlag igual a um valor de “1” e que não é uma imagem de CRA (por exemplo, uma imagem de IDR) estiver presente no meio de um fluxo de bits e a resolução da imagem altera em picA (por exemplo, com a ativação de um novo SPS), as imagens de DPB em retardo associadas de picA podem ser removidas do DPB antes das serem emitidas, devido ao fato de se as imagens de DPB em retardo associadas continuarem a ocupar o DPB, a decodificação das imagens que começa a partir de picA pode se tornar problemática, por exemplo, devido ao excesso de armazenamento temporário. Nesse caso, o valor de no_output_of_prior_pics_flag (por exemplo, um sinalizador que indica que imagens que foram anteriormente decodificadas e armazenadas no DPB seriam removidas do DPB sem serem emitidas se definidas como sendo 1 e indica que imagens que foram anteriormente decodificadas e armazenadas no DPB não seriam removidas do DPB sem serem emitidas se definidas como sendo 0) associado a picA seria definido como sendo igual a um valor de “1” pelo encriptador ou emendador ou NoOutputOfPriorPicsFlag (por exemplo, um valor derivado que pode ser determinado com base nas informações incluídas no fluxo de bits) pode ser derivado como sendo igual a um valor de “1” pelo decodificador, para liberar as imagens em retardo sem saída do DPB. A operação de junção é descrita adicionalmente abaixo em relação à Figura 4.
[0145] Esse processo de remoção de imagens de DPB em retardo associadas do DPB sem saída pode ser referido como “liberação”. Mesmo em situações não descritas acima, uma imagem de IRAP pode especificar o valor de no_output_of_prior_pics_flag igual a um valor de “1”, de modo que o decodificador liberará as imagens em retardo de DPB associadas da imagem de IRAP.
FLUXO DE BITS QUE INCLUI UM PONTO DE EMENDA
[0146] Em referência à Figura 4, um exemplo de fluxo de bits que tem um ponto de emenda será descrito. A Figura 4 mostra um fluxo de bits com múltiplas camadas 400 criado através da junção dos fluxos de bits 410 e 420. Os fluxo de bits 410 incluem uma camada de melhoria (EL) 41 OA e uma camada-base (BL) 410B e o fluxo de bits 420 inclui uma EL 420A e uma BL 420B. A EL 41 OA inclui uma imagem de EL 412A e a BL 410B inclui uma imagem de BL 412B. A EL 420A inclui as imagens de EL 422A, 424A e 426A e a BL 420B inclui as imagens de BL 422B, 424B, e 426B. O fluxo de bits com múltiplas camadas 400 inclui adicionalmente as unidades de acesso (AUs) 430 a 460. A AU 430 inclui a imagem de EL 412A e a imagem de BL 412B, a AU 440 inclui a imagem de EL 422A e a imagem de BL 422B, a AU 450 inclui a imagem de EL 424A e a imagem de BL 424B e a AU 460 inclui a imagem de EL 426A e a imagem de BL 426B. No exemplo da Figura 4, a imagem de BL 422B é uma imagem de IRAP e a imagem de EL correspondente 422A na AU 440 é uma imagem anterior (por exemplo, uma imagem sem IRAP) e, consequentemente, a AU 440 é uma AU de IRAP não alinhada. Além disso, deve ser observado que a AU 440 é uma unidade de acesso que segue imediatamente um ponto de emenda 470.
[0147] Embora o exemplo da Figura 4 ilustre um caso em que dois fluxos de bits diferentes estão unidos, em algumas modalidades, um ponto de emenda pode estar presente quando uma porção do fluxo de bits for removida. Por exemplo, um fluxo de bits pode ter porções A, B, e C, em que a porção B está entre as porções A e C. Se a porção B for removida do fluxo de bits, as porções restante A e C podem ser unidas e o ponto em que as mesmas são unidas pode ser referido como um ponto de emenda. Mais geralmente, considera-se que um ponto de emenda conforme discutido no presente pedido possa estar presente quando um ou mais sinalizadores ou parâmetros sinalizados ou derivados têm valores predeterminados. Por exemplo, sem receber uma indicação específica de que um ponto de emenda existe em uma localização particular, a decodificador pode determinar o valor de um sinalizador (por exemplo, NoClrasOutputFlag) e realizar uma ou mais técnicas descritas neste pedido com base no valor do sinalizador.
LIBERAÇÃO DE IMAGENS NO CONTEXTO DE MÚLTIPLAS CAMADAS
[0148] O processo de liberar imagens também é relevante em fluxos de bits com múltiplas camadas. Mais especificamente, é relevante que todas as imagens pertençam a uma unidade de acesso de IRAP inicial e, além disso, que as imagens de IRAP não estejam em uma unidade de acesso de IRAP inicial. Conforme descrito acima, em algumas implantações existentes tais como SHVC e MV-HEVC, uma unidade de acesso de IRAP pode ser definida como uma unidade de acesso que contém uma imagem de IRAP que tem nuh_layer_id igual a um valor de “0” (apesar da possibilidade de outras imagens na unidade de acesso serem imagens de IRAP) e uma unidade de acesso de IRAP inicial pode ser definida como uma unidade de acesso que contém uma imagem de IRAP que tem nuh_layer_id igual a um valor de “0” e que tem NoRas1OutputFlag igual a um valor de “1” (novamente, apesar da possibilidade de as outras imagens na unidade de acesso serem imagens de IRAP).
[0149] Com a possibilidade de ter imagens de IRAP não alinhadas nas unidades de acesso (por exemplo, uma unidade de acesso pode conter tanto as imagens de IRAP quanto as imagens de não IRAP) em SHVC e MV-HEVC, as situações descritas na seção anterior no contexto de HEVC podem ocorrer em diferentes camadas de um fluxo de bits de SHVC/MV-HEVC. Por exemplo, uma imagem de CRA picA que tem NoRas1OutputFlag igual a um valor de “1” pode estar presente em uma camada de aperfeiçoamento no meio de um fluxo de bits (por exemplo, não na primeira unidade de acesso do fluxo de bits) que começa com uma unidade de acesso de IRAP inicial que não tem uma imagem de CRA na mesma camada as picA. Além disso, a alteração de resolução de uma imagem ocorreria em imagens de IRAP em uma camada de aperfeiçoamento em uma unidade de acesso em que a resolução da camada de base não altera ou vice-versa. Situações similares podem surgir para diferentes tamanhos de DPB.
LIBERAÇÃO DE IMAGENS EM SVC E MVC
[0150] Devido ao projeto de codificação de único laço de SVC, apenas uma imagem reconstruída por unidade de acesso é inserida no DPB, exceto para os casos quando a denominada escalabilidade granular de meio (MGS) estiver em uso (no caso em que pode haver duas imagens decodificadas das denominadas unidades de acesso de imagem- chave que são armazenadas no DPB). No entanto, em cada unidade de acesso apenas a imagem decodificada da camada mais alta pode ser emitida. As operações para gerenciar o DPB, que incluem a liberação de imagens, portanto, apenas se referem a imagens na camada mais alta, principalmente devido ao fato de que não é exigido que uma imagem decodificada de uma camada de base esteja presente no DPB a fim de prever a camada de aperfeiçoamento.
[0151] Em MVC, mais que uma visualização pode ser visualização de saída alvo e os componentes de visualização decodificados precisam ser mantidos para prever os componentes de visualização em outra camada, mesmo se os mesmos não forem necessários para prever os componentes de visualização na mesma camada. Portanto, os componentes de visualização de mais que uma visualização podem estar presentes no DPB. O sinalizador no_output_of_prior_pics_flag é sinalizado para cada componente de visualização de IDR (por exemplo, um componente de visualização de IDR de uma visualização de não base é sinalizado com non_idr_flag igual a um valor de “0”) e a liberação de componentes de visualização é específica por camada (ou específica por visualização). Em MVC, para simplicidade, os componentes de visualização de IDR em uma unidade de acesso em MVC são alinhados. Por exemplo, se um componente de visualização em uma unidade de acesso for um componente de visualização de IDR, todos os componentes de visualização naquela unidade de acesso também são componentes de visualização de IDR. Por conseguinte, a operação de liberação também é realizada ao longo de todas as visualizações no fluxo de bits, mesmo que a operação possa ser específica por visualização/camada.
LIBERAÇÃO DE FIGURAÇÕES EM SHVC E MV-HEVC
[0152] Quando a liberação ocorre mediante o projeto atual em SHVC e MV-HEVC, todas as imagens no DPB são removidas sem serem emitidas (por exemplo, exibidas). Não é possível que as imagens de apenas uma camada no fluxo de bits (exceto no caso trivial quando apenas a camada de base está presente no fluxo de bits) são liberadas, portanto, a liberação não é específica por camada.
CONFORMIDADE DE TEMPORIZAÇÃO DE SAÍDA
[0153] Em algumas implantações (por exemplo, SHVC, MV-HEVC, etc.), como o Rascunho de Trabalho (WD) 5 de SHVC e o Rascunho de Trabalho 7 de MV-HEVC, a saída e a remoção de imagens do DPB para emitir conformidade de temporização de saída são realizadas conforme descrito abaixo. TABELA 1 - CONFORMIDADE DE TEMPORIZAÇÃO DE SAÍDA EM WD 5 DE SHVC E WD 7 DE MV-HEVC
CONFORMIDADE DE ORDEM DE SAÍDA
[0154] Em algumas implantações (por exemplo, SHVC, MV-HEVC, etc.), a saída e a remoção de imagens do DPB para conformidade de ordem de saída são realizadas conforme descrito abaixo. TABELA 2 - CONFORMIDADE DE ORDEM DE SAÍDA EM WD 5 DE SHVC E WD 7 DE MV-HEVC
COMPARAÇÃO DE CONFORMIDADE DE TEMPORIZAÇÃO DE SAÍDA E CONFORMIDADE DE ORDEM DE SAÍDA
[0155] Conforme descrito acima, tanto a conformidade de tempo de saída quanto a conformidade de ordem de saída podem resultar no mesmo comportamento de liberação. Por exemplo, para decodificadores de conformidade de tempo de saída, a liberação é invocada para cada imagem em uma camada que não é a primeira imagem da camada no fluxo de bits e que tem NoRas1OutputFlag igual a um valor de “1”. Quando a liberação for invocada, todas as imagens decodificadas daquela camada no DPB são liberadas. Por outro lado, para decodificadores de conformidade de ordem de saída, a liberação é apenas invocada para uma imagem na camada de base que não é a primeira imagem no fluxo de bits e que tem NoRas1OutputFlag igual a um valor de “1.” Quando a liberação for invocada, todas as imagens decodificadas de todas as camadas no DPB são liberadas.
[0156] Em um fluxo de bits que tem duas camadas, quando uma imagem de LIP na EL que é uma imagem de IRAP e que não pertence a uma AU de IRAP ativa uma diferente resolução e a resolução da BL não pode alterar nessa AU devido à imagem de BL que está em uma AU sem IRAP (por exemplo, não está em uma imagem de IRAP), uma liberação específica por camada de imagens pode ser desejada. No presente contexto, apenas as imagens da EL, mas não da BL, devem ser liberadas. Esse recurso não está disponível para a conformidade de ordem de saída.
[0157] Em um fluxo de bits que tem duas camadas, em um caso em que uma unidade de acesso inclui uma imagem de BL que é uma imagem de IDR e uma imagem de EL que é uma imagem sem IRAP, a resolução da imagem de BL pode ser atualizada na unidade de acesso, enquanto a resolução da imagem de EL não for atualizada. Em tal caso, a liberação seria realizada apenas para as imagens da BL e as imagens de EL não seriam liberadas. Esse recurso não está disponível para a conformidade de ordem de saída.
SINALIZAÇÃO DE SINALIZADOR QUE INDICA A SAÍDA DAS IMAGENS ANTERIORES
[0158] Em algumas modalidades, a variável NoOutputOfPriorPicsFlag (por exemplo, um valor derivado pelo decodificador para determinar, quando decodificar uma imagem de IRAP, se deve ou não emitir as imagens no DPB antes do DPB ser liberado) é derivada com base em no_output_of_prior_pics_flag e outras condições. Por exemplo, no_output_of_prior_pics_flag pode ser um valor que é sinalizado no fluxo de bits, enquanto NoOutputOfPriorPicsFlag pode ser um valor derivado por um encriptador com base nas informações incluídas no fluxo de bits. Um decodificador pode derivar o valor de NoOutputOfPriorPicsFlag com base no valor de no_output_of_prior_pics_flag e outras condições e, então, usar o valor derivado de NoOutputOfPriorPicsFlag para determinar se deve emitir as imagens ou não. Em algumas modalidades, o sinalizador NoOutputOfPriorPicsFlag pode indicar se a unidade de acesso atual compreende um ponto de emenda, em que os dois fluxos de bits diferentes são unidos.
[0159] Em algumas modalidades, NoClRasOutputFlag e NoRas1OutputFlag podem ser variáveis derivadas com base nas informações incluídas no fluxo de bits. Por exemplo, NoRas1OutputFlag pode ser derivado para cada imagem de IRAP (por exemplo, em BL e/ou EL) e NoClRasOutputFlag pode ser derivado apenas para as imagens de camada mais baixa (por exemplo, imagens de BL). O valor de cada um dentre NoClRasOutputFlag e NoRaslOutputFlag pode indicar que algumas imagens no fluxo de bits não podem ser corretamente decodificáveis devido à indisponibilidade de certas imagens de referência. Tal indisponibilidade de imagens de referência pode ocorrer em pontos de acesso aleatório. As imagens de salto de acesso aleatório de camada transversal (CL-RAS) são, de algumas maneiras, o equivalente com múltiplas camadas de imagens de RASL. Se um decodificador começar a decodificar um fluxo de bits em um ponto de acesso aleatório (por exemplo, uma unidade de acesso que tem uma imagem de BL de IRAP) e a imagem de EL na unidade de acesso não for uma imagem de IRAP, então, aquela imagem de EL é uma imagem de CL-RAS. Todas as imagens na EL podem ser imagens de CL-RAS (por exemplo, decodificáveis, mas não corretamente decodificáveis) até uma figura de IRAP ocorrer na EL. Quando tal imagem de EL de IRAP for fornecida no fluxo de bits, pode-se dizer que a EL foi inicializada.
[0160] Por exemplo, no exemplo da Figura 4, a imagem de EL 422A pode ser uma imagem de LIP que não é uma imagem de IRAP e a imagem de BL 422B pode ser uma imagem de IRAP que tem um sinalizador NoClRasOutputFlag associado à mesma. Nesse exemplo, o valor de NoOutputOfPriorPicsFlag associado à imagem de EL 422A pode ser inferido com base no valor de NoClRasOutputFlag associado à imagem de BL 422B. Por exemplo, se NoClRasOutputFlag for igual a um valor de “1”, NoOutputOfPriorPicsFlag para a imagem de EL 422A também pode ser definido como sendo um valor de “1”, que faz com que as imagens no DPB não sejam emitidas antes das mesmas serem removidas do DPB. Por outro lado, se NoClRasOutputFlag for igual a um valor de “0”, NoOutputOfPriorPicsFlag para a imagem de EL 422A também pode ser definido como sendo um valor de “0”, que faz com que as imagens no DPB sejam removidas do DPB após a emissão.
DERIVAÇÃO DE INFORMAÇÕES DE ANINHAMENTO DE ID TEMPORAL DE SPS E INFORMAÇÕES DE UNIDADE DE NAL DE FIM DE SEQUÊNCIA (EOS) PARA FLUXOS DE BITS COM MÚLTIPLAS CAMADAS
[0161] Em um fluxo de bits com múltiplas camadas, uma camada pode incluir uma ou mais subcamadas temporais. Cada subcamada temporal pode ter um identificador (ID) associado a si denominado ID temporal. Por exemplo, se a camada-base no fluxo de bits com múltiplas camadas tiver duas subcamadas temporais, o ID temporal para a primeira subcamada temporal é 0, e o ID temporal para a segunda subcamada temporal é 1. Em geral, imagens aqueles têm um ID temporal maior que a imagem atual não são usadas como imagens de referência para a imagem atual. O sinalizador sps_temporal_id_nesting_flag pode indicar adicionalmente se uma imagem particular que tem um ID temporal igual ou menor que o ID temporal da imagem atual pode ser usado como uma imagem de referência quando existir outra imagem que tem um ID temporal menor que a imagem particular e que segue a imagem particular na ordem de decodificação mas precede a imagem atual na ordem de decodificação. Por exemplo, quando sps_temporal_id_nesting_flag estiver habilitado (por exemplo, for definido igual a 1), se a imagem A tiver um ID temporal mais baixo ou igual à imagem atual, mas a imagem B tem um ID temporal menor que a imagem A e está entre a imagem A e a imagem atual na ordem de decodificação (por exemplo, o valor de POC entre o valor de POC de imagem A e a imagem atual), então, a imagem A não pode ser usada como uma imagem de referência para a imagem atual. Por outro lado, quando sps_temporal_id_nesting_flag não estiver habilitado (por exemplo, for definido igual a 0), se a imagem A tiver um ID temporal mais baixo ou igual à imagem atual, mas a imagem B tem um ID temporal menor que a imagem A e está entre a imagem A e a imagem atual na ordem de decodificação (por exemplo, o valor de POC entre o valor de POC de imagem A e a imagem atual), a imagem A pode ser usada como uma imagem de referência para a imagem atual.
[0162] As versões anteriores de SHVC e MV-HEVC (por exemplo, o Rascunho de Trabalho 5 de SHVC e o Rascunho de Trabalho 7 de MV-HEVC) impõem um conflito na derivação de sps_temporal_id_nesting_flag quando o elemento de sintaxe não estiver presente no fluxo de bits. Sob certas condições, o valor do sinalizador não pode ser determinado tanto como 0 quanto como 1. A fim de se referir a esses e outros desafios, as técnicas de acordo com certos aspectos podem definir como derivar o valor de sps_temporal_id_nesting_flag sob tais condições (por exemplo, definir a precedência no processo de derivação) a fim de eliminar o conflito.
[0163] Além disso, em HEVC, uma AU contém uma imagem proveniente apenas de uma camada, e frequentemente o conceito da imagem e da AU podem ser usados de modo intercambiável. Em contraste, em SHVC e MV-HEVC, uma AU pode conter imagens provenientes de mais de uma camada, que podem tornar incerto se uma variável ou um sinalizador devem ser associados a uma camada particular (por exemplo, a camada-base) ou devem se aplicar a toda a AU. Um exemplo de tal variável é HandleCraAsBlaFlag. A variável HandleCraAsBlaFlag pode indicar se se deve lidar com uma imagem de CRA como uma imagem de BLA. Por exemplo, quando um fluxo de bits for acessado de modo aleatório acessado ou emendado em um CRA, o CRA pode ser convertido a um BLA, por exemplo, a fim de remover quaisquer imagens de RASL que segue o CRA. A variável pode ser introduzida, por exemplo, por meio de meios externos, para facilitar o processo de tratamento de um CRA como um BLA. Um decodificador ou emendador pode processar facilmente o CRA como BLA com base no valor da variável, ao invés de, na verdade, converter CRA a um BLA, que pode exigir a mudança do cabeçalho de fatia de um CRA. A versões anteriores de SHVC e MV-HEVC tornam incerto se HandleCraAsBlaFlag está associada apenas à camada-base ou à AU. A fim de se referir a esses e outros desafios, as técnicas de acordo com certos aspectos também podem definir se HandleCraAsBlaFlag deve ser associada apenas à camada-base ou à AU.
[0164] Além disso, conforme explicado acima em relação a HandleCraAsBlaFlag, devido ao fato de uma AU poder ter imagens provenientes de mais de uma camada em SHVC e MV-HEVC, pode ser incerto que uma unidade de NAL de EOS esteja associada a uma camada particular (por exemplo, a camada-base) ou deva se aplicar a toda a AU. A unidade de NAL de EOS pode indicar o fim de uma sequência e vídeo codificado (CVS) e é geralmente seguida por uma imagem de IRAP, como uma imagem de IDR, uma imagem de BLA ou uma imagem de CRA. As versões anteriores de SHVC e MV-HEVC não tornam claro se a unidade de NAL de EOS está associada apenas à camada-base ou à AU. A fim de se referir a esses e outros desafios, as técnicas de acordo com certos aspectos podem definir se a unidade de NAL de EOS deve ser associada apenas à camada-base ou à AU.
[0165] Certos detalhes em relação à derivação de informações de aninhamento temporal de ID de SPS e informações de unidade de NAL de EOS para fluxos de bits com múltiplas camadas, assim como derivação de HandleCraAsBlaFlag, são explicados ainda mais abaixo. Diversos termos usados ao longo de toda essa revelação são termos amplos que têm seu significado comum. Além disso, em algumas modalidades, certos termos se referem aos conceitos de vídeo a seguir. Os significados externos podem se referir a qualquer aparelho ou entidade que não faça parte de um encriptador ou um decodificador mas interage com o encriptador ou o decodificador, por exemplo, através de uma interface de programação de aplicativo (API). Em certas modalidades, os meios externos também podem ser referidos como um aparelho externo.
DERIVAÇÃO DE INFORMAÇÕES DE ANINHAMENTO DE ID TEMPORAL DE SPS PARA FLUXOS DE BITS COM MÚLTIPLAS CAMADAS
[0166] Nas versões anteriores de SHVC e MV- HEVC, a semântica de sps_temporal_id_nesting_flag pode ser especificada conforme o seguinte: TABELA 3 - SPSTEMPRALIDNESTINGFLAG NO WD 5 DE SHVC E WD 7 DE MV-HEVC
[0167] Nas versões anteriores de SHVC e MV- HEVC, quando sps_temporal_id_nesting_flag for igual a 1, o seguinte pode ser aplicado:
[0168] • Caso tldA seja o valor de TemporalId da imagem atual picA.
[0169] • Qualquer imagem picB com TemporalId igual a tldB que seja menor ou igual a tldA não deve ser incluída em RefPicSetStCurrBefore, RefPicSetStCurrAfter ou RefPicSetLtCurr de picA quando existir uma imagem picC que tem TemporalId menor que tldB, após picB na ordem de decodificação, e precedes picA na ordem de decodificação.
[0170] Podem existir problemas com a inferência de sps_temporal_id_nesting_flag quando o elemento de sintaxe não estiver presente ou indicado. Algumas das condições e/ou restrições podem se dar conforme o seguinte: 1) quando não estiver presente, o sinalizador de sps_temporal_id_nesting é inferido como igual a vps_temporal_id_nesting_flag; e 2) quando sps_max_sub_layers_minus1 for igual a 0, o sinalizador de sps_temporal_id_nesting é igual a 1.
[0171] Pode ocorrer um conflito quando sps_temporal_id_nesting_flag não estiver presente e os valores de vps_temporal_id_nesting_flag e sps_max_sub_layers_minus1 são, ambos, iguais a 0. Em tais casos, ambas as condições anteriormente mencionadas não são satisfeitas ao mesmo tempo, e pode não ser claro se o valor de sps_temporal_id_nesting_flag deve ser inferido como igual a 0 ou 1.
MODALIDADE EXEMPLIFICATIVA 1
[0172] A fim de se referir ao conflito, a semântica de sps_temporal_id_nesting_flag pode ser modificada conforme a seguir. As modalidades exemplificativas nessa revelação são fornecidas no contexto de versões anteriores de SHVC e MV-HEVC (por exemplo, WD 5 de SHVC e WD 7 de MV-HEVC). As adições às versões anteriores de SHVC e MV-HEVC são indicadas em itálico, e eliminações das versões anteriores de SHVC e MV-HEVC são indicadas {entre chaves}. TABELA 4 - MODALIDADE EXEMPLIFICATIVA 1
[0173] De acordo com algumas modalidades, os elementos de sintaxe e as variáveis usadas na inferência de sps_temporal_id_nesting_flag podem se referir ao seguinte:
[0174] • O elemento de sintaxe ou a variável vps_temporal_id_nesting_flag pode ser similar a sps_temporal_id_nesting_flag e está associado a um VPS.
[0175] - Por exemplo, vps_temporal_id_nesting_flag pode indicar no nível de VPS se uma imagem particular que tem um ID temporal igual ou menor que o ID temporal da imagem atual pode ser usado como uma imagem de referência quando existir outra imagem que tem um ID temporal menor que a imagem particular e que segue a imagem particular na ordem de decodificação mas precede a imagem atual na ordem de decodificação.
[0176] - vps_temporal_id_nesting_flag pode ter menos precedência que sps_temporal_id_nesting_flag. Se tanto vps_temporal_id_nesting_flag quanto sps_temporal_id_nesting_flag estiverem presentes para uma camada particular, o valor de sps_temporal_id_nesting_flag para aquela camada é usada, não o valor de vps_temporal_id_nesting_flag.
[0177] • O elemento de sintaxe ou variável sps_max_sub_layers_minus1 se refere à quantidade máxima de subcamadas temporais em uma camada particular menos 1.
[0178] - Por exemplo, se houver apenas uma subcamada temporal em uma camada, a quantidade máxima de subcamadas temporais na camada é 1 e, portanto, o valor de sps_max_sub_layer_minus1 é 0. Em outro exemplo, se houver duas subcamadas temporais em uma camada, a quantidade máxima de subcamadas temporais na camada é 2 e, portanto, o valor de sps_max_sub_layers_minus1 é 1.
[0179] Nessa modalidade, quando o elemento de sintaxe sps_temporal_id_nesting_flag não estiver presente no fluxo de bits, o valor de sps_temporal_id_nesting_flag pode ser inferido verificando-se o valor de sps_max_sub_layers_minus1. Se sps_max_sub_layers_minus1 for maior que 0, o valor de sps_temporal_id_nesting_flag é definido igual ao valor de vps_temporal_id_nesting_flag. Se sps_max_sub_layers_minus1 for menor ou igual a 0, o valor de sps_temporal_id_nesting_flag é definido igual a 1. A Modalidade Exemplificativa 1 define precedência para a qual as condições e/ou restrições 1) e 2) acima devem se aplicar primeiramente. A Modalidade Exemplificativa 1 pode definir, primeiramente, como inferir o valor de sps_temporal_id_nesting_flag quando sps_max_sub_layers_minus1 for maior que 0 visto que uma camada tem mais de uma subcamada temporal nesse caso. Quando sps_max_sub_layers_minus1 for menor ou igual a 0, uma camada tem mais de uma subcamada temporal para que o valor de sps_temporal_id_nesting_flag pode não ser importante.
[0180] Desse modo, as técnicas podem eliminar o conflito na derivação de sps_temporal_id_nesting_flag quando sps_temporal_id_nesting_flag não estiver presente no fluxo de bits e os valores de vps_temporal_id_nesting_flag e sps_max_sub_layers_minus1 forem ambos iguais a 0.
MÉTODO DE DERIVAÇÃO DE INFORMAÇÕES DE ANINHAMENTO DE ID TEMPORAL DE SPS PARA FLUXOS DE BITS COM MÚLTIPLAS CAMADAS
[0181] A Figura 5 é um fluxograma que ilustra um método para codificar informações de vídeo, de acordo com uma modalidade da presente revelação. O método se refere à derivação de informações de aninhamento temporal de ID de SPS para fluxos de bits com múltiplas camadas. O processo 500 pode ser realizado por um encriptador (por exemplo, o encriptador conforme mostrado na Figura 2A, 2B, etc.), um decodificador (por exemplo, o decodificador conforme mostrado na Figura 3A, 3B, etc.), ou qualquer outro componente, dependendo da modalidade. Os blocos do processo 500 são descritos em relação ao decodificador 33 na Figura 3B, mas o processo 500 pode ser realizado por outros componentes, como um encriptador, conforme mencionado acima. O decodificador de vídeo da camada 1 30B do decodificador 33 e/ou o decodificador da camada 0 30A do decodificador 33 pode realizar o processo 500, dependendo da modalidade. Todas as modalidades descritas em relação à Figura 5 podem ser implantadas separadamente, ou em combinação entre si. Certos detalhes em relação ao processo 500 são explicados acima, por exemplo, em relação à Figura 4.
[0182] O processo 500 começa no bloco 501. O decodificador 33 pode incluir uma memória para armazenar informações de vídeo associadas a uma pluralidade de camadas.
[0183] No bloco 502, o decodificador 33 determina se um primeiro elemento de sintaxe está presente em um fluxo de bits. O primeiro elemento de sintaxe pode ser associado a um SPS e um primeiro sinalizador que indica se o ID temporal de uma imagem de referência para imagens que se referem ao SPS pode ser aninhado. Em uma modalidade, o primeiro sinalizador indica se uma imagem atual em uma AU atual que se refere ao SPS pode usar uma primeira imagem como uma imagem de referência em que a primeira imagem tem um ID temporal que é menor ou igual a um ID temporal da imagem atual e precede a imagem atual na ordem de decodificação quando uma segunda imagem tem um ID temporal menor que o ID temporal da primeira imagem e segue a primeira imagem mas precede a imagem atual na ordem de decodificação. Em algumas modalidades, o primeiro sinalizador inclui sps_temporal_id_nesting_flag. A primeira imagem pode não ser usada como uma imagem de referência quando o valor do primeiro sinalizador for definido igual a 1. O primeiro elemento de sintaxe pode incluir sps_temporal_id_nesting_flag.
[0184] No bloco 503, se o primeiro elemento de sintaxe não está presente no fluxo de bits, o decodificador 33 obtém um segundo elemento de sintaxe que indica uma quantidade máxima de subcamadas temporais em uma camada particular da pluralidade de camadas. O segundo elemento de sintaxe pode incluir sps_max_sub_layers_minus1.
[0185] No bloco 504, se o primeiro elemento de sintaxe não está presente no fluxo de bits, o decodificador 33 determina se se deve definir o valor do primeiro sinalizador igual ao valor de um segundo sinalizador, sendo que o segundo sinalizador indica se o ID temporal de uma imagem de referência para quaisquer imagens pode ser aninhado com base, pelo menos em parte, no valor do segundo elemento de sintaxe. Em uma modalidade, o segundo sinalizador indica se uma imagem atual em uma AU atual pode usar uma terceira imagem como uma imagem de referência em que a terceira imagem tem um ID temporal que é menor ou igual a um ID temporal da imagem atual e precede a imagem atual na ordem de decodificação quando uma quarta imagem tem um ID temporal menor que o ID temporal da terceira imagem e segue a terceira imagem mas precede a imagem atual na ordem de decodificação. Em algumas modalidades, o segundo sinalizador inclui vps_temporal_id_nesting_flag.
[0186] O decodificador 33 pode definir o valor do primeiro sinalizador igual ao valor do segundo sinalizador, em resposta ao valor do segundo elemento de sintaxe que é maior que 0, o segundo sinalizador associado a um VPS no fluxo de bits. O decodificador 33 pode definir o valor do primeiro sinalizador igual a 1, em resposta ao valor do segundo elemento de sintaxe que é menor ou igual a 0.
[0187] O processo 500 termina no bloco 505. Os blocos podem ser adicionados e/ou omitidos no processo 500, dependendo da modalidade, os blocos do processo 500 podem ser realizados em ordens diferentes, dependendo da modalidade. Certos detalhes em relação ao processo 500 são descritos em conexão com a Figura 5A abaixo.
[0188] Quaisquer recursos e/ou modalidades descritas em relação à derivação de informações de aninhamento temporal de ID de SPS para fluxos de bits com múltiplas camadas nessa revelação podem ser implantados separadamente ou em qualquer combinação dos mesmos. Por exemplo, quaisquer recursos e/ou modalidades descritas em conexão com as Figuras 1 a 4 e outras partes da revelação podem ser implantados em qualquer combinação com quaisquer recursos e/ou modalidades descritas em conexão com a Figura 5, e vice-versa.
[0189] A Figura 5A é um fluxograma que ilustra um método para codificar informações de vídeo, de acordo com uma modalidade da presente revelação. O método se refere à derivação de informações de aninhamento temporal de ID de SPS para fluxos de bits com múltiplas camadas. O processo 500A pode ser realizado por um encriptador (por exemplo, o encriptador conforme mostrado na Figura 2A, 2B, etc.), um decodificador (por exemplo, o decodificador conforme mostrado na Figura 3A, 3B, etc.), ou qualquer outro componente, dependendo da modalidade. Os blocos do processo 500A são descritos em relação ao decodificador 33 na Figura 3B, mas o processo 500A pode ser realizado por outros componentes, como um encriptador, conforme mencionado acima. O decodificador de vídeo da camada 1 30B do decodificador 33 e/ou o decodificador da camada 0 30A do decodificador 33 pode realizar o processo 500A, dependendo da modalidade. Todas as modalidades descritas em relação à Figura 5A podem ser implantadas separadamente, ou em combinação entre si. Certos detalhes em relação ao processo 500A são explicados acima, por exemplo, em relação às Figuras 4 e 5.
[0190] O processo 500A começa no bloco 501A. O decodificador 33 pode incluir uma memória para armazenar informações de vídeo associadas a uma pluralidade de camadas.
[0191] No bloco 502A, o decodificador 33 determina se um primeiro elemento de sintaxe associado a um primeiro sinalizador está presente em um fluxo de bits. O primeiro sinalizador pode indicar se o ID temporal de uma imagem de referência pode ser aninhado e pode estar associado a um SPS no fluxo de bits. O primeiro sinalizador pode indicar se uma imagem atual em uma AU atual pode usar uma primeira imagem como uma imagem de referência na qual a primeira imagem tem um ID temporal que é menor ou igual a um ID temporal da imagem atual e precede a imagem atual na ordem de decodificação quando uma segunda imagem tem um ID temporal menor que o ID temporal da primeira imagem e segue a primeira imagem mas precede a imagem atual na ordem de decodificação. A primeira imagem pode não ser usada como uma imagem de referência quando o valor do primeiro sinalizador for definido igual a 1. Em uma modalidade, o primeiro elemento de sintaxe é o primeiro elemento de sintaxe que é sps_temporal_id_nesting_flag. Em uma modalidade, o primeiro sinalizador é sps_temporal_id_nesting_flag.
[0192] No bloco 503A, se o primeiro elemento de sintaxe não está presente no fluxo de bits, o decodificador 33 obtém um segundo elemento de sintaxe que indica uma quantidade máxima de subcamadas temporais em uma camada particular da pluralidade de camadas. Em uma modalidade, o segundo elemento de sintaxe é sps_max_sub_layers_minus1.
[0193] No bloco 504A, se o valor do segundo elemento de sintaxe for maior que 0, o decodificador 33 define o valor do primeiro sinalizador igual ao valor de um segundo sinalizador que indica se um ID temporal de uma imagem de referência pode ser aninhado, em que o segundo sinalizador está associado a um VPS no fluxo de bits, no bloco 505A. O segundo sinalizador pode indicar se uma imagem atual em uma AU atual pode usar uma terceira imagem como uma imagem de referência na qual a terceira imagem tem um ID temporal que é menor ou igual a um ID temporal da imagem atual e precede a imagem atual na ordem de decodificação quando uma quarta imagem tem um ID temporal menor que o ID temporal da terceira imagem e segue a terceira imagem mas precede a imagem atual na ordem de decodificação. A terceira imagem e a quarta imagem podem ser referir à mesma imagem que a primeira imagem e a segunda imagem acima, respectivamente. O primeiro e o segundo sinalizadores podem indicar se uma imagem particular que tem o mesmo ID temporal ou um ID temporal menor que a imagem atual pode ser usado como uma imagem de referência quando existir outra imagem que tem um ID temporal menor que a imagem particular e segue a imagem particular mas precede a imagem atual na ordem de decodificação. Em uma modalidade, o segundo sinalizador é vps_temporal_id_nesting_flag.
[0194] No bloco 504A, se o valor do segundo elemento de sintaxe for menor ou igual a 0, o decodificador 33 define o valor do primeiro sinalizador igual a 1, no bloco 506A.
[0195] O processo 500A termina no bloco 507A. Os blocos podem ser adicionados e/ou omitidos no processo 500A, dependendo da modalidade, os blocos do processo 500A podem ser realizados em ordens diferentes, dependendo da modalidade.
[0196] Quaisquer recursos e/ou modalidades descritas em relação à derivação de informações de aninhamento temporal de ID de SPS para fluxos de bits com múltiplas camadas nessa revelação podem ser implantados separadamente ou em qualquer combinação dos mesmos. Por exemplo, quaisquer recursos e/ou modalidades descritas em conexão com as Figuras 1 a 5 e outras partes da revelação podem ser implantados em qualquer combinação com quaisquer recursos e/ou modalidades descritas em conexão com a Figura 5A, e vice-versa.
INFORMAÇÕES DA UNIDADE DE NAL DE FIM DE SEQUÊNCIA PARA FLUXOS DE BITS COM MÚLTIPLAS CAMADAS
[0197] Dado que SHVC e MV-HEVC possam conter imagens de uma ou mais camadas, uma unidade de acesso pode conter imagens que são provenientes de diferentes camadas mas têm o mesmo valor de POC. Portanto, pode não ser claro se uma unidade de NAL de fim de sequência se aplica a certa camada ou se aplica a diversas ou todas as camadas. Uma unidade de NAL de EOS pode indicar o fim de uma sequência de imagens ou unidades de acesso. Por exemplo, a imagem ou a unidade de acesso após um EOS pertence a outra sequência. Em fluxos de bits com múltiplas camadas (por exemplo, SHVC ou MV-HEVC), visto que uma unidade de acesso pode conter mais de uma imagem, não está claro se o escopo de uma unidade de NAL de fim de sequência está associado a uma imagem ou uma unidade de acesso. Consequentemente, as técnicas de acordo com certos aspectos podem modificar as versões anteriores de SHVC e MV-HEVC a fim de esclarecer se a unidade de NAL de EOS se aplica a uma camada particular, ou algumas ou todas as camadas.
MODALIDADE EXEMPLIFICATIVA 2
[0198] As modalidades exemplificativas nessa revelação são fornecidas no contexto de versões anteriores de SHVC e MV-HEVC (por exemplo, WD 5 de SHVC e WD 7 de MV- HEVC). As instruções para modificar as versões anteriores de SHVC e MV-HEVC são indicadas em itálico, e eliminações das versões anteriores de SHVC e MV-HEVC são indicadas {entre chaves}. TABELA 5 - MODALIDADE EXEMPLIFICATIVA 2
[0199] Nessa modalidade, existe uma unidade de NAL de EOS em uma AU que se aplica a todas as camadas na AU. Por exemplo, a unidade de NAL de EOS que está presente em uma AU tem um ID de camada igual a 0. Se a unidade de NAL de EOS tiver um ID de camada maior que 0, o decodificador pode ignorar a unidade de NAL de EOS. Uma unidade de NAL pode ter diversos tipos, e o tipo EOS_NUT pode indicar que a unidade de NAL contém um EOS. De acordo com certos aspectos, uma unidade de NAL que é do tipo de EOS_NUT pode ser referida como a unidade de NAL de EOS.
[0200] A Modalidade Exemplificativa 2 esclarece que a unidade de NAL de EOS se aplica a todas as camadas e, desse modo, elimina a ambiguidade no processamento de unidades de NAL de EOS em fluxos de bits com múltiplas camadas.
MODALIDADE EXEMPLIFICATIVA 3
[0201] As modalidades exemplificativas nessa revelação são fornecidas no contexto de versões anteriores de SHVC e MV-HEVC (por exemplo, WD 5 de SHVC e WD 7 de MV- HEVC). As instruções para modificar as versões anteriores de SHVC e MV-HEVC são indicadas em itálico. As adições às versões anteriores de SHVC e MV-HEVC são indicadas em itálico e sublinhado, e eliminações das versões anteriores de SHVC e MV-HEVC são indicadas em tachado. TABELA 6 - MODALIDADE EXEMPLIFICATIVA 3
[0202] Nessa modalidade, uma unidade de NAL de EOS em uma camada particular é aplicável apenas àquela camada. Por exemplo, cada camada pode ter sua própria unidade de NAL de EOS, e uma AU pode incluir mais de uma unidade de NAL de EOS. Uma imagem que segue uma unidade de NAL de EOS de uma camada particular deve ser uma imagem de IRAP, que pode ser uma imagem de IDR, uma imagem de BLA ou uma imagem de CRA. Quando uma unidade de NAL de EOS existe para uma camada particular, a unidade de NAL de EOS pode seguir as unidades de NAL da Camada de Codificação de Vídeo (VCL) com o mesmo ID ou um ID de camada menor que a camada particular e precede a unidade de NAL do fim do fluxo de bits (EOB), quando estiver presente, na AU.
[0203] Desse modo, a Modalidade Exemplificativa 3 esclarece que a unidade de NAL de EOS em uma camada particular se aplica apenas à camada particular e, desse modo, elimina a ambiguidade no processamento de unidades de NAL de EOS em fluxos de bits com múltiplas camadas.
MÉTODO DE DERIVAÇÃO DE INFORMAÇÕES DA UNIDADE DE NAL DE EOS PARA FLUXOS DE BITS COM MÚLTIPLAS CAMADAS
[0204] A Figura 6 é um fluxograma que ilustra um método para codificar informações de vídeo, de acordo com uma modalidade da presente revelação. O método se refere à derivação de informações de unidade de NAL de EOS para fluxos de bits com múltiplas camadas. O processo 600 pode ser realizado por um encriptador (por exemplo, o encriptador conforme mostrado na Figura 2A, 2B, etc.), um decodificador (por exemplo, o decodificador conforme mostrado na Figura 3A, 3B, etc.), ou qualquer outro componente, dependendo da modalidade. Os blocos do processo 600 são descritos em relação ao decodificador 33 na Figura 3B, mas o processo 600 pode ser realizado por outros componentes, como um encriptador, conforme mencionado acima. O decodificador de vídeo da camada 1 30B do decodificador 33 e/ou o decodificador da camada 0 30A do decodificador 33 pode realizar o processo 600, dependendo da modalidade. Todas as modalidades descritas em relação à Figura 6 podem ser implantadas separadamente, ou em combinação entre si. Certos detalhes em relação ao processo 600 são explicados acima, por exemplo, em relação às Figuras 4 e 5.
[0205] O processo 600 começa no bloco 601. O decodificador 33 pode incluir uma memória para armazenar informações de vídeo associadas a uma ou mais camadas.
[0206] No bloco 602, o decodificador 33 codifica uma AU atual em um fluxo de bits que inclui uma pluralidade de camadas, sendo que a pluralidade de camadas inclui uma camada de referência e pelo menos uma camada de melhoria correspondente.
[0207] No bloco 603, o decodificador 33 codifica uma primeira unidade de NAL de EOS associada à camada de referência na AU atual, sendo que a primeira unidade de NAL de EOS tem o mesmo ID de camada que a camada de referência. Uma imagem que está em uma AU subsequente à AU atual e tem o mesmo ID de camada que a primeira unidade de NAL de EOS pode ser uma imagem de IRAP selecionada a partir de uma ou mais dentre: uma imagem de IDR, uma imagem de BLA, ou uma imagem de CRA. Em determinadas modalidades, uma imagem de IRAP em uma AU subsequente à AU atual, que tem o mesmo ID de camada que a primeira unidade de NAL de EOS tem um valor de NoRas1OutputFlag igual a 1. Em determinadas modalidades, a primeira unidade de NAL de EOS é subsequente a uma ou mais unidades de VCL na AU atual que têm o mesmo ID de camada ou um ID de camada menor que a camada de referência, e a primeira unidade de NAL de EOS precede qualquer unidade de NAL de fim de fluxo de bits na AU atual.
[0208] No bloco 604, o decodificador 33 codifica uma segunda unidade de NAL de EOS associada à camada de melhoria na AU atual, sendo que a segunda unidade de NAL de EOS tem o mesmo ID de camada que a camada de melhoria. Uma imagem que está em uma AU subsequente à AU atual e tem o mesmo ID de camada que a segunda unidade de NAL de EOS pode ser uma imagem de IRAP selecionada a partir de uma ou mais dentre: uma imagem de IDR, uma imagem de BLA, ou uma imagem de CRA. Em determinadas modalidades, uma imagem de IRAP em uma AU subsequente à AU atual, que tem o mesmo ID de camada que a segunda unidade de NAL de EOS tem um valor de NoRas1OutputFlag igual a 1. Em determinadas modalidades, a segunda unidade de NAL de EOS é subsequente a uma ou mais unidades de VCL na AU atual que têm o mesmo ID de camada ou um ID de camada menor que a camada de melhoria, e a segunda unidade de NAL de EOS precede qualquer unidade de NAL de fim de fluxo de bits na AU atual.
[0209] O processo 600 termina no bloco 605. Os blocos podem ser adicionados e/ou omitidos no processo 600, dependendo da modalidade, os blocos do processo 600 podem ser realizados em ordens diferentes, dependendo da modalidade.
[0210] Quaisquer recursos e/ou modalidades descritas em relação à derivação de informações de unidade de NAL de EOS para fluxos de bits com múltiplas camadas nessa revelação podem ser implantados separadamente ou em qualquer combinação dos mesmos. Por exemplo, quaisquer recursos e/ou modalidades descritas em conexão com as Figuras 1 a 5 e outras partes da revelação podem ser implantados em qualquer combinação com quaisquer recursos e/ou modalidades descritas em conexão com a Figura 6, e vice-versa.
MANUSEIO DE CRA COMO BLA PARA FLUXOS DE BITS COM MÚLTIPLAS CAMADAS
[0211] Se uma AU contiver imagens provenientes de mais de uma camada que no SHVC e MV-HEVC, pode ser certo que uma variável ou um sinalizador associado a uma camada particular (por exemplo, a camada-base), como a variável HandleCraAsBlaFlag, deve se aplicar à toda AU ou apenas à camada particular com a qual a mesma está associada. Com as abordagens existentes à SHVC/MV-HEVC, HandleCraAsBlaFlag pode ser associada a cada imagem de CRA. A variável pode ser introduzida como um meio externo para facilitar o acesso aleatório ou a emenda nos quais o sistema não consegue mudar uma imagem de CRA para uma imagem de BLA. No contexto de múltiplas camadas, o acesso aleatório e a emenda podem ser feitos em uma imagem de IRAP na camada- base (por exemplo, uma unidade de acesso de IRAP). Dessa forma, o valor de HandleCraAsBlaFlag para uma imagem de CRA na camada-base ou em qualquer outra camada deve ser a mesma. Por exemplo, quando o acesso aleatório acontecer em uma unidade de acesso de IRAP com uma imagem de CRA na camada-base, e uma ou mais (ou mesmo todas) imagens de camada de melhoria na mesma unidade de acesso também são imagens de CRA, pode ser desejável que as mesmas tenham o mesmo valor de HandleCraAsBlaFlag, de modo que o decodificador trate ou lide com as mesmas do mesmo modo. Consequentemente, a variável HandleCraAsBlaFlag pode ser simplificada para serem associadas a uma unidade de acesso, ao invés de serem associadas a uma imagem.
MODALIDADE EXEMPLIFICATIVA 4
[0212] As modalidades exemplificativas nessa revelação são fornecidas no contexto de versões anteriores de SHVC e MV-HEVC (por exemplo, WD 5 de SHVC e WD 7 de MV- HEVC). As adições às versões anteriores de SHVC e MV-HEVC são indicadas em itálico, e eliminações das versões anteriores de SHVC e MV-HEVC são indicadas {entre chaves}. TABELA 7 - MODALIDADE EXEMPLIFICATIVA 4
[0213] Nessa modalidade, quando um AU contiver uma ou mais imagens de CRA, a variável HandleCraAsBlaFlag é derivada para ser a mesma para todas as imagens de CRA naquela AU. Se os meios externos puderem fornecer o valor de HandleCraAsBlaFlag, o valor fornecido pelos meios externos é usado para definir o valor do HandleCraAsBlaFlag. Caso contrário, HandleCraAsBlaFlag é definido igual a 0.
[0214] Associar HandleCraAsBlaFlag com cada imagem de CRA pode levar potencialmente a ter diferentes valores para HandleCraAsBlaFlag para as diferentes imagens de CRA. Consequentemente, as técnicas podem simplificar a inferência do valor de HandleCraAsBlaFlag garantindo que o valor de HandleCraAsBlaFlag para todas as imagens de CRA em uma AU seja o mesmo.
[0215] As informações e os sinais revelados no presente documento podem ser representados com o uso de qualquer um dentre uma variedade de tecnologias e conjunto de procedimentos diferentes. Por exemplo, dados, instruções, comandos, informações, sinais, bits, símbolos, e circuitos integrados que podem ser referenciados por toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, partículas ou campos magnéticos, partículas ou campos ópticos ou qualquer combinação dos mesmos.
[0216] As várias etapas de blocos lógicos ilustrativos, circuitos e algoritmos descritos em conjunto com as modalidades reveladas no presente documento podem ser implantadas como hardware eletrônico, software de computador ou combinações de ambos. A fim de ilustrar claramente essa possibilidade de intercâmbio de hardware e software, vários componentes, blocos, módulos, circuitos e etapas ilustrativos foram descritos acima geralmente em termos de funcionalidade dos mesmos. Se tal funcionalidade deve ser implantada como hardware ou software, depende da restrição de projeto e pedido particular impostas no sistema geral. As pessoas versadas na técnica podem implantar a funcionalidade descrita de várias maneiras para cada aplicação em particular, porém, tais decisões de implantação não devem ser interpretadas como causadoras de um afastamento do escopo da presente revelação.
[0217] 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, tal como, computadores de propósito geral, aparelhos de telefone de dispositivos de comunicação sem fio, ou dispositivos de circuitos integrados que têm múltiplos usos incluindo a aplicação em aparelhos de telefone de dispositivos de comunicação sem fio e outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implantados juntos em um dispositivo de lógica integrada ou separadamente como dispositivos de lógica distinta, porém, interoperável. Caso sejam implantadas em software, as técnicas podem ser concretizadas pelo menos parcialmente por um meio de armazenamento de dados legível por computador que compreende código de programa incluindo instruções que, quando executadas, realizam um ou mais entre os 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 empacotamento. O meio legível por computador pode compreender uma memória ou mídias de armazenamento de dados, tal como, memória de acesso aleatório (RAM), tal como, memória de acesso aleatório dinâmica síncrona (SDRAM), memória somente de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória somente de leitura programável e eletricamente apagável (EEPROM), memória flash, mídias de armazenamento de dados magnéticas ou ópticas, e semelhantes. As técnicas podem ser concretizadas, adicional ou alternativamente, pelo menos parcialmente por um meio de comunicação legível por computador que porta ou comunica código de programa na forma de instruções ou de estruturas de dados e que pode ser acessado, lido, e/ou executado por um computador, tal como, sinais propagados ou ondas.
[0218] O Código De Programa Pode Ser Executado Por Um Processador, Que Pode Incluir Um Ou Mais Processadores De Sinal Digital (Dsps), Microprocessadores Para Propósitos Gerais, Circuitos Integrados De Aplicação Específica (Asics), Matrizes Lógicas Programáveis Por Campo (Fpgas) Ou Outro Conjunto De Circuitos Lógicos Equivalentes Integrados Ou Distintos. Tal Processador Pode Ser Configurado Para Realizar Qualquer Uma Dentre As Técnicas Descritas Na Presente Revelação. Um Processador De Propósito Geral Pode Ser Um Microprocessador, Porém 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 Dos 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 Configuração. Correspondentemente, O Termo "Processador", Conforme Usado No Presente Documento Pode Se Referir A Qualquer Uma Dentre As Estruturas Supracitadas, Qualquer Combinação Das Estruturas Supracitadas, 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 Dentro De Módulos De Software Ou De Hardware Dedicados Configurados Para Codificar E Decodificar, Ou Incorporados Em Um Codificador De Vídeo-decodificador Combinado (Codec). Adicionalmente, As Técnicas Podem Ser Totalmente Implantadas Em Um Ou Mais Circuitos Ou Elementos Lógicos.
[0219] As técnicas dessa revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um telefone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nessa revelação para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização por 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 uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0220] Várias modalidades da revelação foram descritas. Essas e outras modalidades estão dentro do escopo das reivindicações a seguir.

Claims (3)

1. Aparelho para codificar informações de vídeo de acordo com extensão de codificação de vídeo escalável de HEVC, caracterizado pelo fato de que compreende: uma memória para armazenar informações de vídeo associadas a uma ou mais camadas; e um processador de hardware acoplado de modo operacional à memória e configurado para: codificar uma unidade de acesso (AU) atual em um fluxo de bits que inclui uma pluralidade de camadas, sendo que a pluralidade de camadas inclui uma camada de referência tendo um primeiro identificador de camada (ID), elemento de sintaxe nuh_layer_id e pelo menos uma camada de melhoria correspondente tendo um segundo identificador de camada (ID), elemento de sintaxe nuh_layer_id o qual é maior do que o primeiro identificador de camada (ID), em que a AU atual pode incluir mais de uma unidade de camada de abstração de rede (NAL) de fim de sequência (EOS); na AU atual, codificar uma primeira unidade de NAL de EOS associada à camada de referência, sendo que a primeira unidade de NAL de EOS tem o primeiro elemento de sintaxe de identificador de camada (ID) correspondente à camada de referência; na AU atual, codificar uma segunda unidade de NAL de EOS associada à camada de melhoria, sendo que a segunda unidade de NAL de EOS tem o segundo ID de camada correspondente à camada de melhoria, em que cada camada pode ter sua própria unidade de NAL de EOS e uma unidade de NAL de EOS em uma camada particular é aplicável somente àquela camada; em que uma imagem que está em uma AU subsequente à AU atual e tem o mesmo ID de camada que a primeira unidade de NAL de EOS é uma imagem de ponto de acesso intra-aleatório (IRAP) selecionada a partir de uma ou mais dentre: uma imagem de renovação de decodificação instantânea (IDR), uma imagem de acesso de enlace quebrado (BLA) ou uma imagem de acesso aleatório limpo (CRA); em que uma imagem que está em uma AU subsequente à AU atual e tem o mesmo ID de camada que a segunda unidade de NAL de EOS é uma imagem de IRAP selecionada a partir de uma ou mais dentre: uma imagem de IDR, uma imagem de BLA ou uma imagem de CRA; codificar uma AU subsequente à AU atual com base na restrição de que uma primeira NoRas1OutputFlag da primeira imagem de IRAP seja igual a 1, em resposta a (i) a AU atual conter a primeira unidade de NAL de EOS que tem o primeiro ID de camada e (ii) a AU subsequente conter uma primeira imagem de IRAP que tem o primeiro ID de camada; NoRaslOutputFlag indicando que imagens esquerdas ignoradas por acesso aleatório (RASL) não devem ser emitidas se definidas para 1 e que imagens RASL devem ser emitidas se definidas para 0;e na restrição de que uma segunda NoRas1OutputFlag da segunda imagem de IRAP seja igual a 1, em resposta a (i) a AU atual conter a segunda unidade de NAL de EOS que tem o segundo ID de camada e (ii) a AU subsequente conter uma segunda imagem de IRAP que tem o segundo ID de camada, em que a primeira unidade de NAL de EOS é subsequente a uma ou mais unidades de Camada de Codificação de Vídeo (VCL) na AU atual que têm o mesmo ID de camada ou um ID de camada menor que a camada de referência, e em que a primeira unidade de NAL de EOS precede qualquer unidade de NAL de fim de fluxo de bits na AU atual, em que a segunda unidade de NAL de EOS é subsequente a uma ou mais unidades de VCL na AU atual que têm o mesmo ID de camada ou um ID de camada menor que a camada de melhoria, e em que a segunda unidade de NAL de EOS precede qualquer unidade de NAL de fim de fluxo de bits na AU atual.
2. Método de codificação de informações de vídeo de acordo com extensão de codificação de vídeo escalável de HEVC, caracterizado pelo fato de que compreende: armazenar informações de vídeo associadas a uma ou mais camadas; codificar uma unidade de acesso (AU) atual em um fluxo de bits que inclui uma pluralidade de camadas, sendo que a pluralidade de camadas inclui uma camada de referência tendo um primeiro identificador de camada (ID), elemento de sintaxe nuh_layer_id e pelo menos uma camada de melhoria correspondente tendo um segundo identificador de camada (ID), elemento de sintaxe nuh_layer_id o qual é maior do que o primeiro identificador de camada (ID), em que a AU atual pode incluir mais de uma unidade de camada de abstração de rede (NAL) de fim de sequência (EOS); na AU atual, codificar uma primeira unidade de NAL de EOS associada à camada de referência, sendo que a primeira unidade de NAL de EOS tem um primeiro identificador de camada (ID) correspondente à camada de referência; na AU atual, codificar uma segunda unidade de NAL de rede de EOS associada à camada de melhoria, sendo que a segunda unidade de NAL de EOS tem um segundo ID de camada correspondente à camada de melhoria; em que cada camada possui sua própria unidade de NAL de EOS e uma unidade de NAL de EOS em uma camada particular é aplicável somente àquela camada, em que uma imagem que está em uma AU subsequente à AU atual e tem o mesmo ID de camada que a segunda unidade de NAL de EOS é uma imagem de ponto de acesso intra- aleatório (IRAP) selecionada a partir de uma ou mais dentre:uma imagem de renovação de decodificação instantânea (IDR), uma imagem de acesso de enlace quebrado (BLA) ou uma imagem de acesso aleatório limpo (CRA); em que uma imagem que está em uma AU subsequente à AU atual e tem o mesmo ID de camada que a segunda unidade de NAL de EOS é uma imagem de IRAP selecionada a partir de uma ou mais dentre: uma imagem de IDR, uma imagem de BLA ou uma imagem de CRA; codificar uma AU subsequente à AU atual com base na restrição de que uma primeira NoRas1OutputFlag da primeira imagem de IRAP seja igual a 1, em resposta a (i) a AU atual conter a primeira unidade de NAL de EOS que tem o primeiro ID de camada e (ii) a AU subsequente conter uma primeira imagem de IRAP que tem o primeiro ID de camada; NoRaslOutputFlag indicando que imagens esquerdas ignoradas por acesso aleatório (RASL) não devem ser emitidas se definidas para 1 e que imagens RASL devem ser emitidas se definidas para 0; e na restrição de que uma segunda NoRas1OutputFlag da segunda imagem de IRAP seja igual a 1, em resposta a (i) a AU atual conter a segunda unidade de NAL de EOS que tem o segundo ID de camada e (ii) a AU subsequente conter uma segunda imagem de IRAP que tem o segundo ID de camada, em que a segunda unidade de NAL de EOS é subsequente a uma ou mais unidades de VCL na AU atual que têm o mesmo ID de camada ou um ID de camada menor que a camada de melhoria, e em que a segunda unidade de NAL de EOS precede qualquer unidade de NAL de fim de fluxo de bits na AU atual, em que a segunda unidade de NAL de EOS é subsequente a uma ou mais unidades de VCL na AU atual que têm o mesmo ID de camada ou um ID de camada menor que a camada de melhoria, e em que a segunda unidade de NAL de EOS precede qualquer unidade de NAL de fim de fluxo de bits na AU atual.
3. Memória legível por computador caracterizada por compreender instruções que quando executadas em um processador compreendendo hardware de computador fazem com que o processador execute o método conforme definido na reivindicação 2.
BR112016021453-6A 2014-03-18 2015-03-16 Aparelho e método de codificação de informações de vídeo e memória legível por computador BR112016021453B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461955158P 2014-03-18 2014-03-18
US61/955,158 2014-03-18
US14/657,624 2015-03-13
US14/657,624 US9794595B2 (en) 2014-03-18 2015-03-13 Derivation of end of sequence NAL unit information for multi-layer bitstreams
PCT/US2015/020734 WO2015142725A1 (en) 2014-03-18 2015-03-16 Derivation of end of sequence nal unit information for multi-layer bitstreams

Publications (3)

Publication Number Publication Date
BR112016021453A2 BR112016021453A2 (pt) 2017-08-15
BR112016021453A8 BR112016021453A8 (pt) 2021-07-06
BR112016021453B1 true BR112016021453B1 (pt) 2024-06-11

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
ES2778463T3 (es) Inferencia mejorada de indicador de no emisión de imagen previa en codificación de video
ES2889976T3 (es) Derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa
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
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) マルチレイヤビデオコーディングにおける異なるコーデックのベースレイヤのサポート
BR112016008225B1 (pt) Aparelhos e métodos para codificação e decodificação de informações de vídeo e memória legível por computador
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
BR112016024233B1 (pt) Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas
BR112016007916B1 (pt) Sinalização para armazenamento temporário de figuração subdecodificada (sub-dpb) com base em operações de dpb em codificação de vídeo
BR112016014227B1 (pt) Dispositivo e método para codificação escalável de informação de vídeo
BR112016001223B1 (pt) Aparelho e método para codificar ou decodificar informações de vídeo e memória legível por computador
JP6608374B2 (ja) ビデオ情報のスケーラブルコーディングのためのデバイスおよび方法
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
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
BR112016008241B1 (pt) Indicação de processamento paralelo em codificação de vídeo
JP2017507539A (ja) マルチレイヤコーディングにおいて回復点補足エンハンスメント情報(sei)メッセージと領域リフレッシュ情報seiメッセージとをコーディングするための方法
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
BR112016021475B1 (pt) Dispositivo e método para codificação escalável de informação de vídeo
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
BR112016021453B1 (pt) Aparelho e método de codificação de informações de vídeo e memória legível por computador
BR112016030211B1 (pt) Restrições de conformidade de fluxo de bits em codificação de vídeo escalonável
BR112016015568B1 (pt) Método e aparelho para codificar ou decodificar dados de vídeo e memória legível por computador
BR112016001121B1 (pt) Dispositivo e método para codificação escalável de informações de vídeo e memória legível por computador
BR112016015931B1 (pt) Suporte de camada-base de não hevc em extensões de muticamadas de hevc