BR112016015931B1 - Suporte de camada-base de não hevc em extensões de muticamadas de hevc - Google Patents

Suporte de camada-base de não hevc em extensões de muticamadas de hevc Download PDF

Info

Publication number
BR112016015931B1
BR112016015931B1 BR112016015931-4A BR112016015931A BR112016015931B1 BR 112016015931 B1 BR112016015931 B1 BR 112016015931B1 BR 112016015931 A BR112016015931 A BR 112016015931A BR 112016015931 B1 BR112016015931 B1 BR 112016015931B1
Authority
BR
Brazil
Prior art keywords
video
layer
base layer
unit
hevc
Prior art date
Application number
BR112016015931-4A
Other languages
English (en)
Other versions
BR112016015931A2 (pt
Inventor
Ye-Kui Wang
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/590,897 external-priority patent/US20150195549A1/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016015931A2 publication Critical patent/BR112016015931A2/pt
Publication of BR112016015931B1 publication Critical patent/BR112016015931B1/pt

Links

Abstract

SUPORTE DE CAMADA-BASE DE NÃO HEVC EM EXTENSÕES DE MUTICAMADAS DE HEVC. Trata-se de um aparelho configurado para codificar informações de vídeo que inclui uma memória e um processador em comunicação com a memória. A memória é configurada para armazenar informações de vídeo associadas a um fluxo de bits. O aparelho inclui adicionalmente um processador em comunicação com a memória, sendo que o processador é configurado para determinar se uma camada de referência está incluída no fluxo de bits. O processador é adicionalmente configurado para determinar uma indicação de um ou mais parâmetros para um armazenamento temporário de figuração decodificada com base na possibilidade de a camada de referência estar incluída no fluxo de bits e para codificar as informações de vídeo com base, pelo menos em parte, na indicação determinada dos um ou mais parâmetros para o armazenamento temporário de figuração decodificada.

Description

CAMPO DA TÉCNICA
[0001] Esta revelação se refere ao campo de compactação e codificação de vídeo, particularmente, a codificação de vídeo escalonável (SVC), codificação de vídeo de multivistas (MVC) ou codificação de vídeo tridimensional (3D).
ANTECEDENTES
[0002] As capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores do tipo laptop ou desktop, câmeras digitais, dispositivos de registro digitais, reprodutores de mídia digitais, dispositivos de videogame, consoles de videogame, telefones celulares ou por rádio satélite, dispositivos de teleconferência por vídeo e semelhantes. As técnicas de compactação de vídeo de implantação de dispositivos de vídeo digitais, 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 Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficácia (HVEC) atualmente sob desenvolvimento e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de modo mais eficaz mediante a implantação de tais técnicas de codificação de vídeo.
[0003] As técnicas de compactação de vídeo realizam predição espacial (intrafiguração) e/ou previsão espacial (interfigurações) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser particionada em blocos de vídeo, que também podem ser referenciados como treeblocks, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma figuração são codificados com o uso de predição espacial em relação às amostras de referência em blocos próximos na mesma figuração. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma figuração podem usar predição espacial em relação às amostras de referência em blocos próximos na mesma figuração ou predição temporal em relação às amostras de referência em outras figurações de referência. As figurações podem referenciadas como quadros e figurações de referência podem ser referenciadas como quadros de referência.
[0004] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e o dados residuais. Para compactação adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residuais, os quais, então, podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em uma matriz bidirecional, podem ser varridos a fim de produzir um vetor monodimensional de coeficientes de transformada e uma codificação de entropia pode ser aplicada para alcançar ainda mais compactação.
SUMÁRIO
[0005] A codificação de vídeo não escalonável (SVC) se refere à codificação de vídeo na qual uma camada- base (BL), algumas vezes referenciada como uma camada de referência (RL) e uma ou mais camadas de intensificação escalonáveis (ELs) são usadas. Em SVC, a BL pode executar dados de vídeo com um nível de base de qualidade. As uma ou mais ELs podem executar dados de vídeo adicionais para suportar, por exemplo, níveis espaciais, temporais e/ou de sinal para ruído (SNR) maiores. ELs podem ser definidas em relação a uma camada anteriormente codificada. Por exemplo, uma camada de fundo pode servir como uma BL, enquanto uma camada de topo pode servir como uma EL. As camadas intermediárias podem servir ou como ELs ou como RLs ou ambas. Por exemplo, uma camada no meio pode ser uma EL para as camadas abaixo da mesma, como a BL ou qualquer ELs interpostas e, ao mesmo tempo, serve como uma RL para uma ou mais ELs acima da mesma. Similarmente, nas Multivistas ou na extensão em 3D do padrão de HEVC, pode haver múltiplas vistas e informações de que uma vista pode ser utilizada para codificar (por exemplo, codificar ou decodificar) as informações de outra vista (por exemplo, estimativa de movimento, predição de vetor de movimento e/ou outras redundâncias).
[0006] Em SVC, um bloco atual na EL pode ser codificado (por exemplo, codificado ou decodificado) com o uso das informações derivadas de uma RL. Por exemplo, um bloco atual na EL pode ser codificado com o uso das informações (por exemplo, informações de textura ou informações de movimento) de um bloco colocalizado na RL (o termo “colocalizado” conforme usado na presente revelação pode se referir a um bloco em outra camada que corresponde à mesma imagem que o bloco atual, por exemplo, o bloco que está atualmente sendo codificado). Em algumas implantações, se uma RL particular for usada para codificar, uma EL pode ser sinalizada como um sinalizador ou elemento de sintaxe. Se o sinalizador ou elemento de sintaxe indicar que a RL particular é usada para codificar a EL, outro sinalizador ou elemento de sintaxe pode ser adicionalmente sinalizado para indicar que tipo de informações na figuração de referência particular são usadas para codificar a EL como, por exemplo: informações de textura (pixel), informações de movimento ou ambas.
[0007] Em determinados casos, uma porção das informações na RL pode não estar disponível para uso na codificação da EL. Por exemplo, em algumas implantações, se a RL for codificada com o uso de um codec de não HEVC, as informações de movimento da RL podem não estar disponíveis para um codec de HEVC para codificar a EL. Em tal caso, a EL ainda pode ser codificada com o uso das informações de textura da RL, mas as informações de movimento da RL não podem ser usadas para codificar a EL.
[0008] Mediante a exploração dessa dependência da disponibilidade de determinados tipos de informações na RL sobre o tipo de codec usado para codificar a RL, um pouco do processamento que é realizado para determinar que tipo de informações que são derivadas da RL podem ser omitidas (por exemplo, se as informações estiverem indisponíveis, não há necessidade de verificar se essas informações são usadas para codificar a EL) resultando, desse modo, em eficiência de codificação aprimorada e/ou complexidade computacional reduzida.
[0009] Os sistemas, métodos e dispositivos dessa revelação, cada um, têm vários aspectos inovadores, nenhum dos quais é exclusivamente responsável pelos atributos desejáveis revelados no presente documento.
[0010] Em um aspecto, a presente revelação descreve um método para codificar informações de vídeo. O método inclui determinar se uma camada de referência está incluída em um fluxo de bits, determinar uma indicação de um ou mais parâmetros para um armazenamento temporário de figuração decodificada com base na possibilidade de a camada de referência está incluída no fluxo de bits e codificar as informações de vídeo com base, pelo menos em parte, na indicação determinada dos um ou mais parâmetros para o armazenamento temporário de figuração decodificada.
[0011] Em alguns aspectos, a camada de referência pode ser codificada com o uso de um codec de não HEVC (Codificação de Vídeo de Alta Eficácia) e/ou com o uso de um codec de Codificação Vídeo Avançada (AVC). Determinar se a camada de referência está incluída no fluxo de bits pode incluir determinar se a camada de referência está incluída no fluxo de bits com base em um valor de um sinalizador ou uma variável. Em alguns aspectos, os um ou mais parâmetros incluem um parâmetro que sinaliza um tamanho máximo do armazenamento temporário de figuração decodificada para uma mais alta subcamada temporal. Por exemplo, determinar a indicação do parâmetro que sinaliza o tamanho máximo do armazenamento temporário de figuração decodificada para a mais alta subcamada temporal com base na possibilidade de a camada de referência está incluída no fluxo de bits pode incluir, se a camada de referência não está incluída no fluxo de bits, determinar a indicação do parâmetro que sinaliza o tamanho máximo do armazenamento temporário de figuração decodificada para que a mais alta subcamada temporal tenha um valor igual a 0. Os um ou mais parâmetros podem incluir um parâmetro que sinaliza uma latência máxima. Em um aspecto, os um ou mais parâmetros podem incluir um parâmetro que sinaliza um reordenamento máximo de figurações de saída. Em alguns aspectos, as informações de vídeo de codificação podem incluir pelo menos uma dentre informações de vídeo de codificação e/ou decodificação.
[0012] Em um aspecto, a presente revelação descreve um aparelho configurado para codificar as informações de vídeo, em que o aparelho inclui uma memória configurada para armazenar informações de vídeo associadas a um fluxo de bits. O aparelho também inclui um processador em comunicação com a memória, em que o processador é configurado para determinar se uma camada de referência está incluída no fluxo de bits, determinar uma indicação de um ou mais parâmetros para um armazenamento temporário de figuração decodificada com base na possibilidade de a camada de referência está incluída no fluxo de bits e codificar as informações de vídeo com base, pelo menos em parte, na indicação determinada dos um ou mais parâmetros para o armazenamento temporário de figuração decodificada.
[0013] Um aspecto da presente revelação descreve um meio legível por computador não transitório que compreende um código que, quando executado, faz com que um aparelho realize um processo. O processo inclui determinar se a camada de referência está incluída no fluxo de bits. O processo inclui adicionalmente determinar uma indicação de um ou mais parâmetros para um armazenamento temporário de figuração decodificada com base na possibilidade de a camada de referência está incluída no fluxo de bits. O processo inclui adicionalmente codificar as informações de vídeo com base, pelo menos em parte, na indicação determinada dos um ou mais parâmetros para o armazenamento temporário de figuração decodificada.
[0014] Em um aspecto, é descrito um dispositivo de codificação de vídeo configurado para codificar informações de vídeo. O dispositivo de codificação de vídeo inclui meios para determinar se a camada de referência está incluída no fluxo de bits, meios para determinar uma indicação de um ou mais parâmetros para um armazenamento temporário de figuração decodificada com base na possibilidade de a camada de referência está incluída no fluxo de bits e meios para codificar as informações de vídeo com base, pelo menos em parte, na indicação determinada dos um ou mais parâmetros para o armazenamento temporário de figuração decodificada.
BREVE DESCRIÇÃO DOS DESENHOS
[0015] A Figura 1A é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificativo que pode utilizar técnicas de acordo com aspectos descritos nesta revelação.
[0016] A Figura 1B é um diagrama de blocos que ilustra outro sistema de codificação e decodificação de vídeo exemplificativo que pode realizar técnicas de acordo com aspectos descritos nesta revelação.
[0017] A Figura 2 A é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar técnicas de acordo com aspectos descritos nesta revelação.
[0018] A Figura 2B é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar técnicas de acordo com aspectos descritos nesta revelação.
[0019] 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.
[0020] 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.
[0021] A Figura 4 ilustra um fluxograma que ilustra um método para codificar informações de vídeo, de acordo com uma modalidade da presente revelação.
[0022] A Figura 5 ilustra um fluxograma que ilustra um método para codificar informações de vídeo, de acordo com uma modalidade da presente revelação.
[0023] A Figura 6 ilustra um fluxograma que ilustra um método para codificar informações de vídeo, de acordo com uma modalidade da presente revelação.
[0024] A Figura 7 ilustra um fluxograma que ilustra um método para codificar informações de vídeo, de acordo com outra modalidade da presente revelação.
DESCRIÇÃO DETALHADA
[0025] Certas modalidades descritas no presente documento se referem a predição de intercamada para codificação de vídeo escalonável no contexto de codecs de vídeo avançados, como HEVC (Codificação de Vídeo de Alta Eficácia). Mais especificamente, a presente revelação se refere a sistemas e métodos para desempenho aprimorado de predição de intercamada em multicamadas codificação de vídeo.
[0026] Na descrição abaixo, técnicas de H.264/AVC relacionadas a determinadas modalidades são descritas; o padrão de HEVC e técnicas relacionadas também são discutidas. Embora determinadas modalidades sejam descritas no presente documento no contexto dos padrões de HEVC e/ou H.264, um indivíduo que tem habilidade comum na técnica pode verificar que sistemas e 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 dos padrões a seguir: ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de Vídeo Escalonável (SVC) e Codificação de Vídeo de Multivistas (MVC).
[0027] HEVC, em geral, segue a estrutura de padrões de codificação de vídeo anteriores em muitos aspectos. A unidade de predição em HEVC é diferente daquela em determinados padrões de codificação de vídeo anteriores (por exemplo, macrobloco). De fato, o conceito de macrobloco não existe em HEVC como entendido em determinados padrões de codificação de vídeo anteriores. O macrobloco é substituído por uma estrutura hierárquica com base em um esquema de quadtree, que pode fornecer flexibilidade alta, dentre outros benefícios possíveis. Por exemplo, dentro do esquema de HEVC, três tipos de blocos, Unidade de Codificação (CU), Unidade de Predição (PU) e Unidade de Transformada (TU), são definidos. CU pode se referir à unidade básica de divisão de região. CU pode ser considerada análoga ao conceito de macrobloco, mas a mesma não restringe o tamanho máximo e pode permitir divisão recursiva em quatro CUs de tamanho igual para aprimorar a capacidade de adaptação de conteúdo. PU pode ser considerada a unidade básica de inter/intra predição e a mesma pode conter múltiplas partições de formato arbitrário em uma única PU para codificar de modo mais efetivo padrões de imagem irregulares. TU pode ser considerada a unidade básica de transformada. A mesma pode ser definida independentemente da PU; no entanto, seu tamanho pode ser limitado à CU a qual a TU pertence. Essa separação da estrutura de bloco em três conceitos diferentes pode permitir que cada um seja otimizado de acordo com seu papel, que pode resultar em eficiência de codificação aprimorada.
[0028] Apenas para propósitos de ilustração, determinadas modalidades reveladas no presente documento são descritas com exemplos incluindo apenas duas camadas (por exemplo, uma camada inferior, como a camada-base e uma camada superior, como a camada de intensificação). Deve ser verificado que tais exemplos podem ser aplicáveis a configurações, incluindo múltiplas camadas-base e/ou de intensificação. Além disso, para facilidade de explicação, a revelação a seguir inclui os termos “quadros” ou “blocos” em referência a determinadas modalidades. No entanto, esses termos não devem ser considerados limitantes. Por exemplo, as técnicas descritas abaixo podem ser usadas com quaisquer unidades de vídeo adequadas, como blocos (por exemplo, CU, PU, TU, macroblocos, etc.), fatias, quadros, etc.
PADRÕES DE CODIFICAÇÃO DE VÍDEO
[0029] Uma imagem digital, como uma imagem de vídeo, uma imagem de TV, uma imagem estática ou uma imagem gerada por um registrador de vídeo ou um computador, pode consistir em pixels ou amostras dispostas em linhas horizontais e verticais. O número de pixels em uma única imagem é tipicamente na casa das dezenas de milhares. Cada pixel tipicamente contém informações de luminância e crominância. Sem compactação, a quantidade de informações a serem conduzidas de um codificador de imagem para um decodificador de imagem é tão grande que a mesma torna a transmissão de imagem em tempo real impossível. Para reduzir a quantidade de informações a serem transmitidas, diversos métodos de compactação diferentes, como padrões de JPEG, MPEG e H.263, foram desenvolvidos.
[0030] 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, incluindo suas extensões de SVC e MVC.
[0031] Além disso, um novo padrão de codificação de vídeo, a saber Codificação de Vídeo de Alta Eficácia (HEVC), está sendo desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) de Grupo de Especialistas em Codificação de Vídeo de ITU-T (VCEG) e Grupo de Especialistas de Filme Cinematográfico de ISO/IEC (MPEG) (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 de Elaboração Conjunta em Codificação de Vídeo (JCT-VC) de ITU-T SGI 6 WP3 e ISO/IEC JTC1/SC29/WG11, 12° Encontro: Gênova, Suíça, 14 de janeiro de 2013 para 23 de janeiro 2013. A extensão de multivistas para HEVC, a saber MV-HEVC, e a extensão escalonável para HEVC, chamada de SHVC, também estão sendo desenvolvidas pela JCT-3V (Equipe de Colaboração Conjunta de ITU-T/ISO/IEC em Desenvolvimento de Extensão de Codificação de Vídeo em 3D) e JCT-VC, respectivamente.
[0032] Vários aspectos dos sistemas, aparelhos e métodos inovadores são descritos mais completamente doravante em referência aos desenhos anexos. Esta revelação pode, no entanto, ser incorporada de muitas formas diferentes e não deve ser interpretada como limitante a qualquer estrutura ou função específica apresentada ao longo desta revelação. Em vez disso, esses aspectos são fornecidos de modo que essa revelação seja minuciosa e completa e transmita completamente o escopo da revelação para aqueles versados na técnica. Com base nos ensinamentos no presente documento, um indivíduo versado na técnica deve observar que o escopo da revelação é destinado a cobrir quaisquer aspectos dos sistemas, aparelhos e métodos inovadores revelados no presente documento, independentemente de estarem implantados independentemente ou combinados com qualquer outro aspecto da presente revelação. Por exemplo, um aparelho pode ser implantado ou um método pode ser praticado com o uso de qualquer número dos aspectos estabelecidos no presente documento. Além disso, o escopo da presente revelação é destinado a cobrir tal aparelho ou método que é praticado com o uso de outra estrutura, funcionalidade ou estrutura e funcionalidade adicionalmente ou além dos vários aspectos da presente revelação estabelecidos no presente documento. Deve-se compreender que qualquer aspecto revelado no presente documento pode ser incorporado por um ou mais elementos de uma reivindicação.
[0033] Embora aspectos particulares sejam descritos no presente documento, muitas variações e permutações desses aspectos são abrangidos dentro do escopo da revelação. Embora alguns benefícios e vantagens dos aspectos preferenciais sejam mencionados, o escopo da revelação não se destina a ser limitado por benefícios, usos ou objetivos particulares. Ao invés disso, os aspectos da revelação são destinados a serem amplamente aplicáveis às diferentes tecnologias sem fio, configurações de sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados por meio de exemplo nas Figuras e na descrição a seguir dos aspectos preferenciais. A descrição detalhada e os desenhos são meramente ilustrativos da revelação em vez de limitantes, sendo que o escopo da revelação é definido pelas reivindicações anexas e os equivalentes das mesmas.
[0034] Os desenhos anexos ilustram exemplos. Os elementos indicados por números de referência nos desenhos anexos correspondem aos elementos indicados por números de referência semelhantes na descrição a seguir. Nesta revelação, os elementos que tem nomes que começam com palavras ordinais (por exemplo, “primeiro”, “segundo”, “terceiro” e assim por diante) não implicam necessariamente que os elementos têm uma ordem particular. Em vez disso, tais palavras ordinais são meramente usadas para se referir a elementos diferentes de um mesmo tipo ou similares.
SISTEMA DE CODIFICAÇÃO DE VÍDEO
[0035] A Figura 1A é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplificativo 10 que pode utilizar técnicas de acordo com aspectos descritos nesta revelação. Conforme descrito no presente documento, o termo “codificador de vídeo” se refere genericamente tanto a codificadores de vídeo quanto a decodificadores de vídeo. Nesta revelação, os termos “codificação de vídeo” ou “codificação” pode se referir genericamente a criptação de vídeo e decodificação de vídeo. Além dos codificadores de vídeo e decodificadores de vídeo, os aspectos descritos no presente pedido podem ser estendidos a outros dispositivos relacionados, como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e codificar novamente outro fluxo de bits) e caixas intermediárias (por exemplo, dispositivos que podem modificar, transformar e/ou, de outro modo, manipular um fluxo de bits).
[0036] Conforme mostrado na Figura 1A, o sistema de codificação de vídeo 10 inclui um módulo de fonte 12 que gera dados de vídeo codificados a serem decodificados em um tempo posterior por um módulo de destino 14. No exemplo da Figura 1A, o módulo de fonte 12 e o módulo de destino 14 estão em dispositivos separados - especificamente, o módulo de fonte 12 é parte de um dispositivo de fonte e o módulo de destino 14 é parte de um dispositivo de destino. No entanto, é verificado que os módulos de fonte e de destino 12, 14 podem estar em ou ser parte do mesmo dispositivo, conforme mostrado no exemplo da Figura 1B.
[0037] Novamente, em referência à Figura 1A, o módulo de fonte 12 e o módulo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores do tipo desktop, computadores do tipo notebook (por exemplo, laptop), computadores do tipo tablet, decodificadores de sinal, aparelhos telefônicos, como os chamados telefones “inteligentes”, os chamados computadores do tipo pad “inteligentes”, televisões, câmeras, dispositivos de exibição, reprodutores de mídia digitais, consoles de vídeo game, dispositivos de transmissão de vídeo ou semelhantes. Em alguns casos, o módulo de fonte 12 e o módulo de destino 14 podem ser equipados para comunicação sem fio.
[0038] O módulo de destino 14 pode receber os dados de vídeo codificados a serem decodificados por meio de um enlace 16. O enlace 16 pode compreender qualquer tipo de meio ou dispositivo com capacidade de mover os dados de vídeo codificados do módulo de fonte 12 para o módulo de destino 14. No exemplo da Figura 1A, o enlace 16 pode compreender um meio de comunicação para possibilitar que o módulo de fonte 12 transmita os dados de vídeo codificados diretamente para o módulo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio e transmitidos para o módulo de destino 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 formar parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área ampla ou uma rede global, como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações-base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do módulo de fonte 12 para o módulo de destino 14.
[0039] Alternativamente, os dados codificados podem ser emitidos de uma interface de saída 22 para um dispositivo de armazenamento opcional 31. Similarmente, os dados codificados podem ser acessados do dispositivo de armazenamento 31 por uma interface de entrada 28. O dispositivo de armazenamento 31 pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados acessados de modo local ou distribuídos, como um disco rígido, memória flash, memória volátil ou não volátil ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 31 pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode conter o vídeo codificado gerado pelo módulo de fonte 12. O módulo de destino 14 pode acessar dados de vídeo armazenados do dispositivo de armazenamento 31 por meio de transmissão ou transferência por download. O servidor de arquivo pode ser qualquer tipo de servidor com capacidade de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Exemplos de servidores de arquivo incluem um servidor da web (por exemplo, para um site da web), um servidor de FTP, dispositivos de armazenamento fixados à rede (NAS) ou uma unidade de disco local. O módulo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão por Wi-Fi), uma conexão com fio (por exemplo, DSL, modem de cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do dispositivo de armazenamento pode ser uma transmissão de transferência, uma transmissão de transferência por download ou uma combinação das mesmas.
[0040] As técnicas desta revelação não são limitadas às configurações ou aplicativos sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte de qualquer uma dentre uma variedade de aplicativos de multimídia, como difusões para televisão suspensas, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissão de vídeo de transmissão contínua, por exemplo, por meio da Internet (por exemplo, transmissão adaptativa dinâmica através de HTTP (DASH), etc.), codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outros aplicativos. Em alguns exemplos, o sistema de codificação de vídeo 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações como difusão de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia por vídeo.
[0041] No exemplo da Figura 1A, o módulo de fonte 12 inclui uma fonte de vídeo 18, codificador de vídeo 20 e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador/demodulador (modem) e/ou um transmissor. No módulo de fonte 12, a fonte de vídeo 18 pode incluir uma fonte como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém vídeo anteriormente capturado, uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo e/ou um sistema de gráficos de computador para gerar dados de gráficos de computador como o vídeo de fonte ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o módulo de fonte 12 e o módulo de destino 14 podem formar os chamados telefones com câmera ou telefones com vídeo, conforme ilustrado no exemplo da Figura 1B. No entanto, as técnicas descritas nesta revelação podem ser aplicáveis a codificação de vídeo em geral e podem ser aplicadas a aplicativos sem fio e/ou com fio.
[0042] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos diretamente para o módulo de destino 14 por meio da interface de saída 22 do módulo de fonte 12. Os dados de vídeo codificados também podem ser (ou alternativamente) armazenados no dispositivo de armazenamento 31 para acesso posterior pelo módulo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução. O codificador de vídeo 20 ilustrado na Figura 1A e IB pode compreender o codificador de vídeo 20 ilustrado na Figura 2A, o codificador de vídeo 23 ilustrado na Figura 2B ou qualquer outro codificador de vídeo descrito no presente documento.
[0043] No exemplo da Figura 1A, o módulo de destino 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 módulo de destino 14 pode receber os dados de vídeo codificados através do enlace 16. Os dados de vídeo codificados comunicados através do enlace 16 ou fornecidos no dispositivo de armazenamento 31 podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 para uso por um decodificador de vídeo, como o decodificador de vídeo 30, na decodificação de dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento ou armazenados em um servidor de arquivo. O decodificador de vídeo 30 ilustrado nas Figuras 1A e IB pode compreender o decodificador de vídeo 30 ilustrado na Figura 3A, o decodificador de vídeo 33 ilustrado na Figura 3B ou qualquer outro decodificador de vídeo descrito no presente documento.
[0044] O dispositivo de exibição 32 pode ser integrado a, ou externo a, o módulo de destino 14. Em alguns exemplos, o módulo de destino 14 pode incluir um dispositivo de exibição integrado e também ser configurado para fazer interface com um dispositivo de exibição externo. Em outros exemplos, o módulo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um dentre uma variedade de dispositivos de exibição como um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0045] Em aspectos relacionados, a Figura 1B mostra um sistema de codificação e decodificação de vídeo exemplificativo 10’, em que os módulos de fonte e de destino 12, 14 estão em ou fazem parte de um dispositivo ou dispositivo de usuário 11. O dispositivo 11 pode ser um fone de telefone, como um telefone “inteligente” ou semelhantes. O dispositivo 11 pode incluir um módulo de controlador/processador opcional 13 em comunicação operativa com os módulos de fonte e de destino 12, 14. O sistema 10’ da Figura 1B pode incluir adicionalmente uma unidade de processamento de vídeo 21 entre o codificador de vídeo 20 e a interface de saída 22. Em algumas implantações, a unidade de processamento de vídeo 21 é uma unidade separada, conforme ilustrado na Figura 1B; no entanto, em outras implantações, a unidade de processamento de vídeo 21 pode ser implantada como uma porção do codificador de vídeo 20 e/ou do módulo de processador/controlador 13. O sistema 10’ da Figura 1B e os componentes do mesmo são, de outro modo, similares ao sistema 10 da Figura 1A e aos componentes do mesmo.
[0046] O codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com um padrão de compactação de vídeo, como o padrão de HEVC atualmente sob desenvolvimento e podem se conformar para um Modelo de Teste de HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões de proprietário ou industriais, como o padrão ITU-T H.264, alternativamente referenciado como MPEG-4, Parte 10, Codificação Vídeo Avançada (AVC) ou extensões de tais padrões. As técnicas desta revelação, no entanto, não são limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de compactação de vídeo incluem MPEG-2 e ITU-T H.263.
[0047] Embora não mostrados nos exemplos das Figuras 1A e IB, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados com um codificador e decodificador de áudio e podem incluir unidades de MUX-DEMUX apropriadas ou outro hardware e software para lidar com codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, em alguns exemplos, as unidades de MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223 ou outros protocolos, como o protocolo de datagrama de usuário (UDP).
[0048] O codificador de vídeo 20 e o decodificador de vídeo 30, cada um, podem ser implantados como qualquer um dentre uma variedade de conjuntos de circuitos de codificador 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 são implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas dessa revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser incluídos em um ou mais codificadores ou decodificadores, em que qualquer um dos dois pode ser integrado como parte de um codificador/decodificar combinado (CODEC) em um respectivo dispositivo.
PROCESSO DE CODIFICAÇÃO DE VÍDEO
[0049] Conforme mencionado de modo breve acima, o codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais figurações. Cada uma das figurações é uma imagem estática que forma parte de um vídeo. Em alguns exemplos, uma figuração pode ser referenciada como um “quadro” de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que forma uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir figurações codificadas e dados associados. Uma figuração codificada é uma representação codificada de uma figuração.
[0050] Para gerar o fluxo de bits, o codificador de vídeo 20 pode realizar operações de codificação em cada figuração nos dados de vídeo. Quando o codificador de vídeo 20 realiza operações de codificação nas figurações, o codificador de vídeo 20 pode gerar uma série de figurações codificadas e dados associados. Os dados associados podem incluir um conjunto de parâmetros de vídeo (VPS), um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de figuração (PPS), um conjunto de parâmetros de adaptação (APS) e outras estruturas de sintaxe. Um SPS pode conter parâmetros aplicáveis a zero ou mais sequências de figurações. Um PPS pode conter parâmetros aplicáveis a zero ou mais figurações. Um APS pode conter parâmetros aplicáveis a zero ou mais figurações. Os parâmetros em um APS podem ser parâmetros que são mais prováveis de alterar que os parâmetros em um PPS.
[0051] Para gerar uma figuração codificada, o codificador de vídeo 20 pode particionar uma figuração em blocos de vídeo igualmente dimensionados. Um bloco de vídeo pode ser uma matriz bidimensional de amostras. Cada um dos blocos de vídeo é associado a um treeblock. Em alguns exemplos, um treeblock pode ser referenciado como uma unidade de codificação maior (LCU). Os treeblocks de HEVC podem ser amplamente análogos aos macroblocos de padrões anteriores, como H.264/AVC. No entanto, um treeblock não é necessariamente limitado a um tamanho particular e pode incluir uma ou mais CUs. O codificador de vídeo 20 pode usar divisão de quadtree para particionar os blocos de vídeo de treeblocks em blocos de vídeo associados às Cus, por isso, o nome “treeblocks”.
[0052] Em alguns exemplos, o codificador de vídeo 20 pode particionar uma figuração em uma pluralidade de fatias. Cada uma das fatias pode incluir um número inteiro de CUs. Em alguns exemplos, uma fatia compreende um número inteiro de treeblocks. Em outros exemplos, um limite de uma fatia pode estar dentro de um treeblock.
[0053] Como parte de realização de uma operação de codificação em uma figuração, o codificador de vídeo 20 pode realizar operações de codificação em cada fatia da figuração. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma fatia, o codificador de vídeo 20 pode gerar dados codificados associados à fatia. Os dados codificados associados à fatia podem ser referenciados como uma “fatia codificada”.
[0054] Para gerar uma fatia codificada, o codificador de vídeo 20 pode realizar operações de codificação em cada treeblock em uma fatia. Quando o codificador de vídeo 20 realiza uma operação de codificação em um treeblock, o codificador de vídeo 20 pode gerar um treeblock codificado. O treeblock codificado pode compreender dados que representam uma versão codificada do treeblock.
[0055] Quando o codificador de vídeo 20 gera uma fatia codificada, o codificador de vídeo 20 pode realizar operações de codificação (por exemplo, codificar) nos treeblocks na fatia de acordo com uma ordem de varredura de rastreamento. Por exemplo, o codificador de vídeo 20 pode codificar os treeblocks da fatia em uma ordem que prossegue da esquerda para a direita através de uma fileira mais no topo de treeblocks na fatia, então, da esquerda para a direita através de uma fileira inferior próxima de treeblocks e assim por diante até que o codificador de vídeo 20 tenha codificado cada um dos treeblocks na fatia.
[0056] Com resultado da codificação dos treeblocks de acordo com a ordem de varredura de rastreio, os treeblocks acima e à esquerda de um determinado treeblock podem ter sido codificados, mas treeblocks abaixo e à direita do determinado treeblock ainda não foram codificados. Consequentemente, o codificador de vídeo 20 pode ter capacidade de acessar informações geradas por treeblocks de codificação acima e à esquerda do determinado treeblock quando codifica o determinado treeblock. No entanto, o codificador de vídeo 20 pode não ter capacidade de acessar informações geradas por treeblocks de codificação abaixo e à direita do determinado treeblock quando codifica o determinado treeblock.
[0057] Para gerar um treeblock codificado, o codificador de vídeo 20 pode realizar de modo recursivo o particionamento de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, o codificador de vídeo 20 pode particionar o bloco de vídeo de um treeblock em quatro sub-blocos igualmente dimensionados, particionar um ou mais dos sub-blocos em quatro sub-sub-blocos igualmente dimensionados e assim por diante. Uma CU particionada pode ser uma CU cujo bloco de vídeo é particionado em blocos de vídeo associados a outras CUs. Uma CU não particionada pode ser uma CU cujo bloco de vídeo não é particionado em blocos de vídeo associados a outras CUs.
[0058] Um ou mais elementos de sintaxe no fluxo de bits podem indicar um número máximo de vezes que o codificador de vídeo 20 pode particionar o bloco de vídeo de um treeblock. Um bloco de vídeo de uma CU pode ser quadrado em formato. O tamanho do bloco de vídeo de uma CU (por exemplo, o tamanho da CU) pode estar na faixa de pixels 8x8 até o tamanho de um bloco de vídeo de um treeblock (por exemplo, o tamanho do treeblock) com um máximo de pixels 64x64 ou mais.
[0059] O codificador de vídeo 20 pode realizar operações de codificação em (por exemplo, codificar) cada CU de um treeblock de acordo com uma ordem de varredura z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU de topo esquerda, uma CU de topo direita, uma CU de fundo esquerda e, então, uma CU de fundo direita, nessa ordem. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma CU particionada, o codificador de vídeo 20 pode codificar CUs associadas aos sub-blocos do bloco de vídeo da CU particionada de acordo com a ordem de varredura z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU associada a um sub-bloco de topo esquerdo, uma CU associada a um sub- bloco de topo direito, uma CU associada a um sub-bloco de fundo esquerdo e, então, uma CU associada a um sub-bloco de fundo direito, nessa ordem.
[0060] Como resultado da codificação das CUs de um treeblock de acordo com uma ordem de varredura z, as CUs acima, acima e à esquerda, acima e à direita, esquerda e abaixo e à esquerda de uma determinada CU podem ter sido codificadas. As CUs abaixo e à direita da determinada CU ainda não foram codificadas. Consequentemente, o codificador de vídeo 20 pode ter capacidade de acessar as informações geradas pela codificação de algumas CUs que estão próximas à determinada CU quando codifica a determinada CU. No entanto, o codificador de vídeo 20 pode não ter capacidade de acessar as informações geradas por codificação de outras CUs que estão próximas à determinada CU quando codifica a determinada CU.
[0061] Quando o codificador de vídeo 20 codifica uma CU não particionada, o codificador de vídeo 20 pode gerar uma ou mais PUs para a CU. Cada uma das PUs da CU pode ser associada a um bloco de vídeo diferente dentro do bloco de vídeo da CU. O codificador de vídeo 20 pode gerar um bloco de vídeo previsto para cada PU da CU. O bloco de vídeo previsto de uma PU pode ser um bloco de amostras. O codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar o bloco de vídeo previsto para uma PU.
[0062] Quando o codificador de vídeo 20 usa intrapredição para gerar o bloco de vídeo previsto de uma PU, o codificador de vídeo 20 pode gerar o bloco de vídeo previsto da PU com base em amostras decodificadas da figuração associada à PU. Se o codificador de vídeo 20 usar intrapredição para gerar blocos de vídeo previstos das PUs de uma CU, a CU é uma CU intraprevista. Quando o codificador de vídeo 20 usa interpredição para gerar o bloco de vídeo previsto da PU, o codificador de vídeo 20 pode gerar o bloco de vídeo previsto da PU com base em amostras decodificadas de um ou mais figurações além da figuração associada à PU. Se o codificador de vídeo 20 usar interpredição para gerar blocos de vídeo previstos das PUs de uma CU, a CU é uma CU interprevista.
[0063] Além disso, quando o codificador de vídeo 20 usa interpredição para gerar um bloco de vídeo previsto para uma PU, o codificador de vídeo 20 pode gerar informações de movimento para a PU. As informações de movimento para uma PU podem indicar um ou mais blocos de referência da PU. Cada bloco de referência da PU pode ser um bloco de vídeo dentro de uma figuração de referência. A figuração de referência pode ser uma figuração além da figuração associada à PU. Em alguns exemplos, um bloco de referência de uma PU também pode ser referido como a “amostra de referência” da PU. O codificador de vídeo 20 pode gerar o bloco de vídeo previsto para a PU com base nos blocos de referência da PU.
[0064] Após o codificador de vídeo 20 gerar blocos de vídeo previstos para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar dados residuais para a CU com base nos blocos de vídeo previstos para as PUs da CU. Os dados residuais para a CU podem indicar diferenças entre as amostras nos blocos de vídeo previstos para as PUs da CU e o bloco de vídeo original da CU.
[0065] Além disso, como parte de realização de uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 pode realizar particionamento de quadtree recursivo nos dados residuais da CU para particionar os dados residuais da CU em um ou mais blocos de dados residuais (por exemplo, blocos de vídeo residuais) associados às TUs da CU. Cada TU de uma CU pode ser associada a um bloco de vídeo residual diferente.
[0066] O codificador de vídeo 20 pode aplicar uma ou mais transformadas aos blocos de vídeo residuais associados às TUs para gerar blocos de coeficiente de transformada (por exemplo, blocos de coeficientes de transformada) associados às TUs. Conceitualmente, um bloco de coeficiente de transformada pode ser uma matriz bidimensional (2D) de coeficientes de transformada.
[0067] Após gerar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode realizar um processo de quantização no bloco de coeficiente de transformada. A quantização, em geral, se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, fornecendo compactação adicional. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bit pode ser arredondado para baixo para um coeficiente de transformada de m-bit durante a quantização, em que n é maior que m.
[0068] O codificador de vídeo 20 pode associar cada CU a um valor de parâmetro de quantização (QP). O valor de QP associado a uma CU pode determinar quanto o codificador de vídeo 20 quantiza os blocos de coeficiente de transformada associados à CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente de transformada associados a uma CU mediante o ajuste do valor de QP associado à CU.
[0069] Após o codificador de vídeo 20 quantizar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode gerar conjuntos de elementos de sintaxe que representam os coeficientes de transformada no bloco de coeficiente de transformada quantizado. O codificador de vídeo 20 pode aplicar operações de codificação de entropia, como operações de Codificação Aritmética Binária Adaptativa de Contexto (CABAC), a alguns dos elementos de sintaxe. Outras técnicas de codificação de entropia, como codificação de comprimento variável adaptativa de contexto (CAVLC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra codificação aritmética binária também poderia ser usada.
[0070] O fluxo de bits gerado pelo codificador 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 um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, uma fatia codificada, informações de intensificação suplementar (SEI), um delimitador de unidade de acesso, dados de preenchimento ou outro tipo de dados. Os dados em uma unidade de NAL podem incluir várias estruturas de sintaxe.
[0071] O decodificador de vídeo 30 pode receber o fluxo de bits gerado pelo codificador de vídeo 20. O fluxo de bits pode incluir uma representação codificada dos dados de vídeo codificados pelo codificador de vídeo 20. Quando o decodificador de vídeo 30 recebe o fluxo de bits, o decodificador de vídeo 30 pode realizar uma operação de análise no fluxo de bits. Quando o decodificador de vídeo 30 realiza a operação de análise, o decodificador de vídeo 30 pode extrair elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo para reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser, em geral, recíproco ao processo realizado pelo codificador de vídeo 20 para gerar os elementos de sintaxe.
[0072] Após o decodificador de vídeo 30 extrair os elementos de sintaxe associados a uma CU, o decodificador de vídeo 30 pode gerar blocos de vídeo previstos para as PUs da CU com base nos elementos de sintaxe. Além disso, o decodificador de vídeo 30 pode quantizar de modo inverso blocos de coeficiente de transformada associados a TUs da CU. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficiente de transformada para reconstruir blocos de vídeo residuais associados à TUs da CU. Após gerar os blocos de vídeo previstos e reconstruir os blocos de vídeo residuais, o decodificador de vídeo 30 pode reconstruir o bloco de vídeo da CU com base nos blocos de vídeo previstos e nos blocos de vídeo residuais. Dessa maneira, o decodificador de vídeo 30 pode reconstruir os blocos de vídeo de CUs com base nos elementos de sintaxe no fluxo de bits.
CODIFICADOR DE VÍDEO
[0073] A Figura 2A é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar técnicas de acordo com aspectos descritos nesta revelação. O criptógrafo de vídeo 20 pode ser configurado para processar uma única camada de um quadro de vídeo, como para HEVC. Adicionalmente, o codificador de vídeo 20 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação. Com um exemplo, a unidade de processamento de predição 100 pode ser configurada para realizar qualquer uma ou todas as técnicas descritas nessa revelação. Em outra modalidade, o codificador de vídeo 20 inclui uma unidade de predição de intercamada adicional 128 que é configurada para realizar qualquer uma ou todas as técnicas descritas nesta revelação. Em outras modalidades, a predição de intercamada pode ser realizada por unidade de processamento de predição 100 (por exemplo, unidade de interpredição 121 e/ou unidade de intrapredição (126), em que a unidade de predição de intercamada 128 pode ser omitida. No entanto, os aspectos desta revelação não são tão limitados. Em alguns exemplos, as técnicas descritas nessa revelação podem ser compartilhadas entre os diversos componentes de criptógrafo de vídeo 20. Em alguns exemplos, de modo adicional ou alternativo, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nessa revelação.
[0074] Para propósitos explicativos, essa revelação descreve o criptógrafo de vídeo 20 no contexto de codificação de HEVC. No entanto, as técnicas desta revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo representado na Figura 2A é para um codec de camada única. No entanto, conforme será descrito adicionalmente em relação à Figura 2B, alguns ou todos os codificadores de vídeo 20 podem ser duplicados para processamento de um codec de multicamadas.
[0075] O codificador de vídeo 20 pode realizar intra e intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação tem base na previsão espacial para reduzir ou remover a redundância espacial no vídeo dentro de um quadro de vídeo ou gravura dados. A intercodificação depende da predição temporal para reduzir ou remover redundância temporal em vídeo dentro de quadros ou figurações adjacentes de uma sequência de vídeo. O Intramodo (modo I) pode se referir a qualquer um dentre vários modos de codificação baseados em espaço. Os intermodos, como predição unidirecional (modo P) ou predição bidirecional (modo B), pode se referir a qualquer um dentre vários modos de codificação baseados em tempo.
[0076] No exemplo da Figura 2A, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do codificador de vídeo 20 incluem uma unidade de processamento de predição 100, uma unidade de geração de residual 102, uma unidade de processamento de transformada 104, a unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 113, um armazenamento temporário de imagem decodificada 114 e uma unidade de codificação de entropia 116. A unidade de processamento de predição 100 inclui uma unidade de interpredição 121, uma unidade de estimativa de movimento 122, uma unidade de compensação de movimento 124, uma unidade de intrapredição 126 e uma unidade de predição de intercamada 128. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, poucos ou componentes funcionais diferentes. Além disso, a unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem ser altamente integradas, mas são representadas no exemplo da Figura 2A separadamente para propósitos de explicação.
[0077] O codificador de vídeo 20 pode receber os dados de vídeo. O codificador de vídeo 20 pode receber os dados de vídeo de várias fontes. Por exemplo, o codificador de vídeo 20 pode receber os dados de vídeo de fonte de vídeo 18 (por exemplo, mostrados na Figura 1A ou IB) ou outra fonte. Os dados de vídeo podem representar uma série de figurações. Para codificar os dados de vídeo, o codificador de vídeo 20 pode realizar uma operação de codificação em cada uma das figurações. Como parte de realização de uma operação de codificação em uma figuração, o codificador de vídeo 20 pode realizar operações de codificação em cada fatia da figuração. Como parte de realização de uma operação de codificação em uma fatia, o codificador de vídeo 20 pode realizar operações de codificação em treeblocks na fatia.
[0078] Como parte de realização de uma operação de codificação em um treeblock, a unidade de processamento de predição 100 pode realizar particionamento de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, a unidade de processamento de predição 100 pode particionar um bloco de vídeo de um treeblock em quatro sub-blocos igualmente dimensionados, particionar um ou mais dos sub-blocos em quatro sub-sub- blocos igualmente dimensionados e assim por diante.
[0079] Os tamanhos dos blocos de vídeo associados a CUs podem estar na faixa de amostras 8x8 até o tamanho do treeblock como um máximo de amostras 64x64 ou maior. Nesta revelação, “NxN” e “N por N” podem ser usados de modo intercambiável para se referir às dimensões de amostra de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, amostras 16x16 ou amostras 16 por 16. Em geral, um bloco de vídeo 16x16 tem dezesseis amostras em uma direção vertical (y = 16) e dezesseis amostras em uma direção horizontal (x = 16). Do mesmo modo, um bloco NxN, em geral, tem N amostras em uma direção vertical e N amostras em uma direção horizontal, em que N representa um valor de número inteiro não negativo.
[0080] Além disso, como parte de realização da operação de codificação em um treeblock, a unidade de processamento de predição 100 pode gerar uma estrutura de dados quadtree hierárquica para o treeblock. Por exemplo, um treeblock pode corresponder a um nó raiz da estrutura de dados de quadtree. Se a unidade de processamento de predição 100 particionar o bloco de vídeo do treeblock em quatro sub-blocos, o nó raiz tem quatro nós filhos na estrutura de dados de quadtree. Cada um dos nós filhos corresponde a uma CU associada a um dos sub-blocos. Se a unidade de processamento de predição 100 particionar um dos sub-blocos em quatro sub-sub-blocos, o nó que corresponde à CU associada ao sub-bloco pode ter quatro nós filhos, em que cada dos quais corresponde a uma CU associada a um dos sub-sub-blocos.
[0081] Cada nó da estrutura de dados de quadtree pode conter dados de sintaxe (por exemplo, elementos de sintaxe) para o treeblock ou CU correspondente. Por exemplo, um nó no quadtree pode incluir um sinalizador de divisão que indica se o bloco de vídeo da CU corresponde ao nó é particionado (por exemplo, dividido) em quatro sub-blocos. Os elementos de sintaxe para uma CU podem ser definidos de modo recursivo e podem depender de se o bloco de vídeo da CU é dividido em sub-blocos. Uma CU cujo bloco de vídeo não é particionado pode corresponder a um nó folha na estrutura de dados de quadtree. Um treeblock codificado pode incluir dados com base na estrutura de dados de quadtree para um treeblock correspondente.
[0082] O codificador de vídeo 20 pode realizar operações de codificação em cada CU não particionada de um treeblock. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 gera dados que representam uma representação codificada da CU não particionada.
[0083] Como parte de realização de uma operação de codificação em uma CU, a unidade de processamento de predição 100 pode particionar o bloco de vídeo da CU dentre uma ou mais PUs da CU. O codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar vários tamanhos de PU. Ao assumir que o tamanho de uma CU particular é 2Nx2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN, e interpredição em tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, nLx2N, nRx2N ou semelhantes. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em alguns exemplos, a unidade de processamento de predição 100 pode realizar particionamento geométrico para particionar o bloco de vídeo de uma CU dentre PUs da CU ao longo de um limite que não alcança os lados do bloco de vídeo da CU em ângulos direitos.
[0084] A unidade de interpredição 121 pode realizar interpredição em cada PU da CU. A interpredição pode fornecer compactação temporal. Para realizar interpredição em uma PU, a unidade de estimativa de movimento 122 pode gerar informações de movimento para a PU. A unidade de compensação de movimento 124 pode gerar um bloco de vídeo previsto para a PU com base nas informações de movimento e amostras decodificadas de figurações além da figuração associada à CU (por exemplo, figurações de referência). Nesta revelação, um bloco de vídeo previsto gerado por unidade de compensação de movimento 124 pode ser referido como um interbloco de vídeo previsto.
[0085] As fatias podem ser fatias I, fatias P ou fatias B. A unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem realizar operações diferentes para uma PU de uma CU dependendo de se a PU está em uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intra previstas. Consequentemente, se a PU estiver em uma fatia I, a unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 não realizam interpredição na PU.
[0086] Se a PU estiver em uma fatia P, a figuração que contém a PU é associada a uma lista de figurações de referência referida como “lista 0”. Cada uma das figurações de referência na lista 0 contém amostras que podem ser usadas para interpredição de outras figurações. Quando a unidade de estimativa de movimento 122 realiza a operação de estimativa de movimento em relação a uma PU em uma fatia P, a unidade de estimativa de movimento 122 pode procurar por figurações de referência na lista 0 para um bloco de referência para a PU. O bloco de referência da PU pode ser um conjunto de amostras, por exemplo, um bloco de amostras, que corresponde de modo mais próximo às amostras no bloco de vídeo da PU. A unidade de estimativa de movimento 122 pode usar uma variedade de métricas para determinar quão proximamente um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, a unidade de estimativa de movimento 122 pode determinar quão proximamente um conjunto de amostras em uma figuração de referência corresponde às amostras no bloco de vídeo de uma PU pela soma de diferença absoluta (SAD), soma de diferença quadrada (SSD) ou outras métricas de diferença.
[0087] 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ção de referência na lista 0 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. Em vários exemplos, a unidade de estimativa de movimento 122 pode gerar vetores de movimento para variar graus de precisão. Por exemplo, a unidade de estimativa de movimento 122 pode gerar vetores de movimento em precisão de amostra de um quarto, precisão de amostra de um oitavo ou outra precisão de amostra fracional. No caso de precisão de amostra fracional, os valores de bloco de referência podem ser interpolados de valores de amostra de posição de número inteiro na figuração 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.
[0088] Se a PU estiver em uma fatia B, a figuração que contém a PU pode ser associada a duas listas de figurações de referência, referidas como “lista 0” e “lista 1”. Em alguns exemplos, uma figuração que contém uma fatia B pode ser associada a uma combinação de lista que é uma combinação de lista 0 e lista 1.
[0089] Além disso, se a PU estiver em uma fatia B, a unidade de estimativa de movimento 122 pode realizar predição unidirecional ou predição bidirecional para a PU. Quando unidade de estimativa de movimento 122 realiza predição unidirecional para a PU, a unidade de estimativa de movimento 122 pode procurar as figurações de referência de lista 0 ou lista 1 para um bloco de referência para a PU. A unidade de estimativa de movimento 122 pode, então, gerar um índice de referência que indica a figuração de referência na lista 0 ou lista 1 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. A unidade de estimativa de movimento 122 pode emitir o índice de referência, um indicador de direção de predição e o vetor de movimento como as informações de movimento da PU. O indicador de direção de predição pode indicar se o índice de referência indica uma figuração de referência na lista 0 ou lista 1. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo previsto da PU com base no bloco de referência indicado pelas informações de movimento da PU.
[0090] Quando a unidade de estimativa de movimento 122 realiza predição bidirecional para uma PU, a unidade de estimativa de movimento 122 pode procurar as figurações de referência na lista 0 para um bloco de referência para a PU e também pode procurar as figurações de referência na lista 1 para outro bloco de referência para a PU. A unidade de estimativa de movimento 122 pode, então, gerar índices de referência que indicam as figurações de referência na lista 0 e lista 1 que contêm os blocos de referência e vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e a PU. A unidade de estimativa de movimento 122 pode emitir os índices de referência e os vetores de movimento da PU como as informações de movimento da PU. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo previsto da PU com base nos blocos de referência indicados pelas informações de movimento da PU.
[0091] Em alguns exemplos, a unidade de estimativa de movimento 122 não emite um conjunto completo de informações de movimento para uma PU para a unidade de codificação de entropia 116. Em vez disso, a unidade de estimativa de movimento 122 pode sinalizar as informações de movimento de uma PU com referência às informações de movimento de outra PU. Por exemplo, a unidade de estimativa de movimento 122 pode determinar que as informações de movimento da PU são semelhantes o suficiente às informações de movimento de uma PU próxima. Nesse exemplo, a unidade de estimativa de movimento 122 pode indicar, em uma estrutura de sintaxe associada à PU, um valor que indica para o decodificador de vídeo 30 que a PU tem as mesmas informações de movimento que a PU próxima. Em outro exemplo, a unidade de estimativa de movimento 122 pode identificar, em uma estrutura de sintaxe associada à PU, uma PU próxima e uma diferença de vetor de movimento (MVD). A diferença de vetor de movimento indica uma diferença entre o vetor de movimento da PU e o vetor de movimento da PU próxima indicada. O decodificador de vídeo 30 pode usar o vetor de movimento da PU próxima indicada e a diferença de vetor de movimento para determinar o vetor de movimento da PU. Em referência às informações de movimento de uma primeira PU quando sinaliza as informações de movimento de uma segunda PU, o codificador de vídeo 20 pode ter capacidade de sinalizar as informações de movimento da segunda PU com o uso de poucos bits.
[0092] Como parte de realização de uma operação de codificação em uma CU, a unidade de intrapredição 126 pode realizar intrapredição em PUs da CU. A intrapredição pode fornecer compactação espacial. Quando a unidade de intrapredição 126 realiza intrapredição em uma PU, a unidade de intrapredição 126 pode gerar dados de predição para a PU com base em amostras decodificadas de outras PUs na mesma figuração. Os dados de predição para a PU podem incluir um bloco de vídeo previsto e vários elementos de sintaxe. A unidade de intrapredição 126 pode realizar intrapredição em PUs em fatias I, fatias P e fatias B.
[0093] Para realizar intrapredição em uma PU, a unidade de intrapredição 126 pode usar múltiplos modos de intrapredição para gerar múltiplos conjuntos de dados de predição para a PU. Quando a unidade de intrapredição 126 usa um modo de intrapredição para gerar um conjunto de dados de predição para a PU, a unidade de intrapredição 126 pode estender amostras de blocos de vídeo de PUs próximas através do bloco de vídeo da PU em uma direção e/ou gradiente associados ao modo de intrapredição. As PUs próximas podem estar acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma ordem de codificação da esquerda para a direita, do topo para o fundo para PUs, CUs e treeblocks. A unidade de intrapredição 126 pode usar diversos modos de intrapredição, por exemplo, 33 modos de intrapredição direcionais, dependendo do tamanho da PU.
[0094] A unidade de processamento de predição 100 pode selecionar os dados de predição para uma PU dentre os dados de predição gerados pela unidade de compensação de movimento 124 para a PU ou os dados de predição gerados pela unidade de intrapredição 126 para a PU. Em alguns exemplos, a unidade de processamento de predição 100 seleciona os dados de predição para a PU com base em métricas de taxa/distorção dos conjuntos de dados de predição.
[0095] Se a unidade de processamento de predição 100 selecionar dados de predição gerados pela unidade de intrapredição 126, a unidade de processamento de predição 100 pode sinalizar o modo de intrapredição que foi usado para gerar os dados de predição para as PUs, por exemplo, o modo de intrapredição selecionado. A unidade de processamento de predição 100 pode sinalizar o modo de intrapredição selecionado de várias maneiras. Por exemplo, é provável que o modo de intrapredição selecionado seja o mesmo que o modo de intrapredição de uma PU próxima. Em outras palavras, o modo de intrapredição da PU próxima pode ser o modo mais provável para a PU atual. Assim, a unidade de processamento de predição 100 pode gerar um elemento de sintaxe para indicar que o modo de intrapredição selecionado é o mesmo que o modo de intrapredição da PU próxima.
[0096] Conforme discutido acima, o codificador de vídeo 20 pode incluir a unidade de predição de 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 estão disponíveis em SVC (por exemplo, uma camada-base ou de referência). Tal predição pode ser referida como predição de intercamada. A unidade de predição de intercamada 128 utiliza métodos de predição para reduzir redundância de intercamada aperfeiçoando, desse modo, a eficácia de codificação e reduzindo as exigências de recurso computacional. Alguns exemplos de predição de intercamada incluem intrapredição de intercamada, predição de movimento de intercamada e predição residual de intercamada. A intrapredição de intercamada usa a reconstrução de blocos colocalizados na camada-base para prever o bloco atual na camada de intensificação. A predição de movimento de intercamada usa as informações de movimento da camada-base para prever movimento na camada de intensificação. A predição residual de intercamada usa o resíduo da camada-base para prever o resíduo da camada de intensificação. Cada um dos esquemas de predição de intercamada é discutido abaixo em maiores detalhes.
[0097] Após a unidade de processamento de predição 100 selecionar os dados de predição para PUs de uma CU, a unidade de geração de residual 102 pode gerar dados residuais para a CU mediante a subtração dos (por exemplo, indicada pelo sinal de menos) blocos de vídeo previstos das PUs da CU do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir blocos de vídeo residuais em 2D que correspondem a componentes de amostra diferentes das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que corresponde às diferenças entre componentes de luminância de amostras nos blocos de vídeo previstos das PUs da CU e componentes de luminância de amostras no bloco de vídeo original da CU. Além disso, os dados residuais da CU podem incluir blocos de vídeo residuais que correspondem às diferenças entre componentes de crominância de amostras nos blocos de vídeo previstos das PUs da CU e os componentes de crominância das amostras no bloco de vídeo original da CU.
[0098] A unidade de processamento de predição 100 pode realizar particionamento de quadtree para particionar os blocos de vídeo residuais de uma CU em sub- blocos. Cada bloco de vídeo residual não dividido pode ser associado a uma TU diferente da CU. Os tamanhos e posições dos blocos de vídeo residuais associados a TUs de uma CU podem ter ou não como base os tamanhos e as posições de blocos de vídeo associados às PUs da CU. Uma estrutura de quadtree conhecida como um “quadtree residual” (QT) pode incluir nós associados a cada um dos blocos de vídeo residuais. As TUs de uma CU podem corresponder a nós folha da RQT.
[0099] A unidade de processamento de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU mediante a aplicação de uma ou mais transformadas a um bloco de vídeo residual associado à TU. Cada um dos blocos de coeficiente de transformada pode ser uma matriz em 2D de coeficientes de transformada. A unidade de processamento de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada direcional ou uma transformada conceitualmente semelhante ao bloco de vídeo residual associado a uma TU.
[0100] 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.
[0101] O codificador de vídeo 20 pode associar um valor de QP a uma CU de várias maneiras. Por exemplo, o codificador de vídeo 20 pode realizar uma análise de distorção de taxa em um treeblock associado à CU. Na análise de distorção de taxa, o codificador de vídeo 20 pode gerar múltiplas representações codificadas do treeblock mediante a realização de uma operação de codificação múltiplas vezes no treeblock. O codificador de vídeo 20 pode associar valores de QP diferentes à CU quando o codificador de vídeo 20 gera representações codificadas diferentes do treeblock. O codificador de vídeo 20 pode sinalizar que um determinado valor de QP é associado à CU quando o determinado valor de QP é associado à CU em uma representação codificada do treeblock que tem uma taxa de bits inferior e métrica de distorção.
[0102] A unidade de quantização inversa 108 e unidade de transformada inversa 110 podem aplicar quantização inversa e transformadas inversas ao bloco de coeficiente de transformada, respectivamente, para reconstruir um bloco de vídeo residual do bloco de coeficiente de transformada. A unidade de reconstrução 112 pode adicionar o bloco de vídeo residual reconstruído às amostras correspondentes de um ou mais blocos de vídeo previstos gerados pela unidade de processamento de predição 100 para produzir um bloco de vídeo reconstruído associado a uma TU. Ao reconstruir os blocos de vídeo para cada TU de uma CU dessa maneira, o codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[0103] Após a unidade de reconstrução 112 reconstruir o bloco de vídeo de uma CU, a unidade de filtro 113 pode realizar uma operação de desbloqueio para reduzir artefatos de desbloqueio no bloco de vídeo associado à CU. Após realizar as uma ou mais operações de desbloqueio, a unidade de filtro 113 pode armazenar o bloco de vídeo reconstruído da CU em armazenamento temporário de imagem decodificada 114. A unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem usar uma imagem de referência que contenha o bloco de vídeo reconstruído para realizar interpredição em PUs de imagens subsequentes. Além disso, a unidade de intrapredição 126 pode usar blocos de vídeo reconstruídos em armazenamento temporário de imagem decodificada 114 para realizar intrapredição em outras PUs na mesma imagem que a CU.
[0104] A unidade de codificação de entropia 116 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação de entropia 116 pode receber blocos de coeficiente de transformada da unidade de quantização 106 e pode receber elementos de sintaxe da unidade de processamento de predição 100. Quando a unidade de codificação de entropia 116 recebe os dados, a unidade de codificação de entropia 116 pode realizar uma ou mais operações de codificação de entropia para gerar dados codificados de entropia. Por exemplo, o codificador de vídeo 20 pode realizar uma operação de codificação de comprimento variável adaptativo de contexto (CAVLC), uma operação de CABAC, uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), uma operação de codificação de Entropia de Particionamento de Intervalo de Probabilidade (PIPE) ou outro tipo de operação de codificação de dados nos dados. A unidade de codificação de entropia 116 pode emitir um fluxo de bits que inclui os dados codificados de entropia.
[0105] Como parte de realização de uma operação de codificação de dados em dados, a unidade de codificação de entropia 116 pode selecionar um modelo de contexto. Se a unidade de codificação de entropia 116 estiver realizando uma operação de CABAC, o modelo de contexto pode indicar estimativas de probabilidades de binários particulares que têm valores particulares. No contexto de CABAC, o termo “binário” é usado para se referir a um bit de uma versão de binarização de um elemento de sintaxe.
CODIFICADOR DE VÍDEO DE MULTICAMADAS
[0106] A Figura 2B é um diagrama de blocos que ilustra um exemplo de um criptógrafo de vídeo de múltiplas camadas 23 que pode implantar técnicas de acordo com aspectos descritos nessa revelação. O criptógrafo de vídeo 23 pode ser configurado para processar quadros de vídeo de multicamadas, como para SHVC e codificação de multivistas. O criptógrafo de vídeo 23 pode ser configurado para realizar qualquer ou todas as técnicas dessa revelação.
[0107] O codificador de vídeo 23 inclui um codificador de vídeo 20A e um codificador de vídeo 20B, em que cada um dos quais pode ser configurado com o codificador de vídeo 20 e pode realizar as funções descritas acima em relação ao codificador de vídeo 20. Adicionalmente, conforme indicado pela reutilização de números de referência, os codificadores de vídeo 20A e 20B podem incluir pelo menos alguns dos sistemas e subsistemas, como o codificador de vídeo 20. Embora o codificador de vídeo 23 seja ilustrado como incluindo dois codificadores de vídeo 20A e 20B, o codificador de vídeo 23 não é limitado como tal e pode incluir várias camadas de codificador de vídeo 20. Em algumas modalidades, o codificador de vídeo 23 pode incluir um codificador de vídeo 20 para cada figuração ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco figurações pode ser processada ou codificada por um codificador de vídeo que inclui cinco camadas de codificador. Em algumas modalidades, o codificador de vídeo 23 pode incluir mais camadas de codificador que quadros em uma unidade de acesso. Em alguns casos, algumas das camadas de codificador de vídeo podem estar inativas quando processa algumas unidades de acesso.
[0108] Além dos criptógrafos de vídeo 20A e 20B, o criptógrafo de vídeo 23 pode incluir uma unidade de reamostragem 90. A unidade de reamostragem 90 pode, em alguns casos, aumentar a resolução de uma camada-base de um quadro de vídeo recebido para, por exemplo, criar uma camada de aprimoramento. A unidade de reamostragem 90 pode aumentar a resolução de informações particulares associadas à camada-base recebida de um quadro, mas não outras informações. Por exemplo, a unidade de reamostragem 90 pode aumentar a resolução do tamanho espacial ou número de pixels da camada-base, mas o número de fatias ou a contagem de ordem de figuração podem permanecer constantes. Em alguns casos, a unidade de reamostragem 90 pode não processar o vídeo recebido e/ou pode ser opcional. Por exemplo, em alguns casos, a unidade de processamento de predição 100 pode realizar aumento de resolução de amostragem. Em algumas modalidades, a unidade de reamostragem 90 é configurada para aumentar a resolução de uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para se submeter a um conjunto de regras de limite de fatia e/ou regras de varredura de rastreio. Embora primeiramente descrita como aumento de resolução de uma camada-base, ou uma camada inferior em uma unidade de acesso, em alguns casos, a unidade de reamostragem 90 pode diminuir a resolução de uma camada. Por exemplo, se durante a transmissão contínua de um vídeo a largura de banda for reduzida, um quadro pode ter resolução reduzida em vez de resolução aumentada.
[0109] A unidade de reamostragem 90 pode ser configurada para receber uma figuração ou quadro (ou informações de figuração associadas à imagem) do armazenamento temporário de figuração decodificada 114 do codificador de camada inferior (por exemplo, o codificador de vídeo 20A) e para aumentar a resolução da figuração (ou as informações de figuração recebidas). Essa figuração com resolução aumentada pode, então, ser fornecida para a unidade de processamento de predição 100 de um codificador de camada superior (por exemplo, o codificador de vídeo 20B) configurado para codificar uma figuração na mesma unidade de acesso que o codificador de camada inferior. Em alguns casos, o codificador de camada superior é uma camada removida do codificador de camada inferior. Em outros casos, podem haver um ou mais codificadores de camada superior entre o codificador de vídeo de camada 0 e o codificador de camada 1 da Figura 2B.
[0110] Em alguns casos, a unidade de reamostragem 90 pode ser omitida ou contornada. Em tais casos, a figuração do armazenamento temporário de figuração decodificada 114 do codificador de vídeo 20A pode ser fornecida diretamente, ou pelo menos sem ser fornecida para a unidade de reamostragem 90, para a unidade de processamento de predição 100 do codificador de vídeo 20B. Por exemplo, se os dados de vídeo fornecidos para o codificador de vídeo 20B e a figuração de referência do armazenamento temporário de figuração decodificada 114 do codificador de vídeo 20A forem do mesmo tamanho ou resolução, a figuração de referência pode ser fornecida para o codificador de vídeo 20B sem qualquer reamostragem.
[0111] Em algumas modalidades, o codificador de vídeo 23 reduz a resolução de dados de vídeo a serem fornecidos para o codificador de camada inferior com o uso da unidade de redução de resolução 94 que antes fornecia os dados de vídeo para o codificador de vídeo 20A. Alternativamente, a unidade de redução de resolução 94 pode ser uma unidade de reamostragem 90 com capacidade de aumentar a resolução ou reduzir a resolução dos dados de vídeo. Em ainda outras modalidades, a unidade de redução de resolução 94 pode ser omitida.
[0112] Conforme ilustrado na Figura 2B, o criptógrafo de vídeo 23 pode incluir adicionalmente um multiplexador 98 ou mux. O mux 98 pode emitir um fluxo de bits combinado do codificador de vídeo 23. O fluxo de bits combinado pode ser criado ao tomar um fluxo de bits de cada um dos codificadores de vídeo 20A e 20B e alterar qual fluxo de bits é emitido em um determinado momento. Enquanto em alguns casos os bits dos dois (ou mais no caso de mais de duas camadas de codificador de vídeo) fluxos de bits podem ser alternados em um bit de cada vez, em muitos casos, os fluxos de bits são combinados de modo diferente. Por exemplo, o fluxo de bits de emissão pode ser criado mediante a alternância do fluxo de bits selecionado em um bloco em um momento. Em outro exemplo, o fluxo de bits de emissão pode ser criado mediante a emissão de uma razão de blocos não 1: 1 de cada um dos codificadores de vídeo 20A e 20B. Por exemplo, dois blocos podem ser emitidos do codificador de vídeo 20B para cada bloco emitido do codificador de vídeo 20A. Em algumas modalidades, o fluxo de emissão do mux 98 pode ser programado. Em outras modalidades, o mux 98 pode combinar os fluxos de bits dos codificadores de vídeo 20A, 20B com base em um sinal de controle recebido de um sistema externo ao codificador de vídeo 23, como de um processador em um dispositivo de fonte, incluindo o dispositivo de fonte 12. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um vídeo da fonte de vídeo 18, com base em uma largura de banda do enlace 16, com base em uma assinatura associada a um usuário (por exemplo, uma assinatura paga versus uma assinatura grátis), ou com base em qualquer outro fator para determinar uma emissão de resolução desejada do codificador de vídeo 23.
DECODIFICADOR DE VÍDEO
[0113] 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. O decodificador de vídeo 30 pode ser configurado para processar uma única camada de um quadro de vídeo, como para HEVC. Adicionalmente, o decodificador de vídeo 30 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação. Com um exemplo, a unidade de compensação de movimento 162 e/ou a unidade de intrapredição 164 podem ser configuradas para realizar qualquer uma ou todas as técnicas descritas nessa revelação. Em uma modalidade, o decodificador de vídeo 30 incluir opcionalmente uma unidade de predição de intercamada 166 que é configurada para realizar qualquer uma ou todas as técnicas descritas nesta revelação. Em outras modalidades, a predição de intercamada pode ser realizada por unidade de processamento de predição 152 (por exemplo, unidade de compensação de movimento 162 e/ou unidade de intrapredição 164), em que a unidade de predição de intercamada 166 pode ser omitida. No entanto, os aspectos desta revelação não são tão limitados. Em alguns exemplos, as técnicas descritas nesta revelação podem ser compartilhadas dentre os vários componentes do decodificador de vídeo 30. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nesta revelação.
[0114] Para propósitos de explicação, esta revelação descreve o decodificador de vídeo 30 no contexto de codificação de HEVC. No entanto, as técnicas desta revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo representado na Figura 3A é para um codec de camada única. No entanto, conforme será descrito adicionalmente em relação à Figura 3B, alguns ou todos os decodificadores de vídeo 30 podem ser duplicados para processamento de um codec de multicamadas.
[0115] No exemplo da Figura 3A, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem uma unidade de decodificação de entropia 150, uma unidade de processamento de predição 152, uma unidade de quantização inversa 154, uma unidade de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 159 e um armazenamento temporário de figuração decodificada 160. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 162, uma unidade de intrapredição 164 e uma unidade de predição de intercamada 166. Em alguns exemplos, o decodificador de vídeo 30 pode realizar um passo de decodificação, em geral, recíproco ao passo de codificação descrito em relação ao codificador de vídeo 20 da Figura 2A. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, poucos ou componentes funcionais diferentes.
[0116] O decodificador de vídeo 30 pode receber um fluxo de bits que compreende dados de vídeo codificados. O fluxo de bits pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 recebe o fluxo de bits, a unidade de decodificação de entropia 150 pode realizar uma operação de análise no fluxo de bits. Como resultado de realizar a operação de análise no fluxo de bits, a unidade de decodificação de entropia 150 pode extrair elementos de sintaxe do fluxo de bits. Como parte de realização da operação de análise, a unidade de decodificação de entropia 150 pode decodificar por entropia elementos de sintaxe codificados por entropia no fluxo de bits. A unidade de processamento de predição 152, a unidade de quantização inversa 154, a unidade de transformada inversa 156, a unidade de reconstrução 158 e a unidade de filtro 159 podem realizar uma operação de reconstrução que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0117] Conforme discutido acima, o fluxo de bits pode compreender uma série de unidades de NAL. As unidades de NAL do fluxo de bits podem incluir unidades de NAL de conjunto de parâmetros de vídeo, unidades de NAL de conjunto de parâmetros de sequência, unidades de NAL de conjunto de parâmetros de figuração, unidades de NAL de SEI e assim por diante. Como parte de realização da operação de análise no fluxo de bits, a unidade de decodificação de entropia 150 pode realizar operações de análise que extraem e decodificam por entropia conjuntos de parâmetros de sequência de unidades de NAL de conjunto de parâmetros de sequência, conjuntos de parâmetros de figuração de unidades de NAL de conjunto de parâmetros de figuração, dados de SEI de unidades de NAL de SEI e assim por diante.
[0118] Além disso, as unidades de NAL do fluxo de bits podem incluir unidades de NAL de fatia codificada. Como parte de realização da operação de análise no fluxo de bits, a unidade de decodificação de entropia 150 pode realizar operações de análise que extraem e decodificam por entropia fatias codificadas das unidades de NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe relativos a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um conjunto de parâmetros de figuração associado a uma figuração que contém a fatia. A unidade de decodificação de entropia 150 pode realizar operações de decodificação de entropia, como operações de decodificação de CABAC, em elementos de sintaxe no cabeçalho de fatia codificada para recuperar o cabeçalho de fatia.
[0119] Como parte de extração dos dados de fatia de unidades de NAL de fatia codificada, a unidade de decodificação de entropia 150 pode realizar operações de análise que extraem elementos de sintaxe de CUs codificadas nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados aos blocos de coeficiente de transformada. A unidade de decodificação de entropia 150 pode, então, realizar operações de decodificação de CABAC em alguns dos elementos de sintaxe.
[0120] Após a unidade de decodificação de entropia 150 realizar uma operação de análise em uma CU não particionada, o decodificador de vídeo 30 pode realizar uma operação de reconstrução na CU não particionada. Para realizar a operação de reconstrução em uma CU não particionada, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir um bloco de vídeo residual associado à CU.
[0121] Como parte de realização de uma operação de reconstrução em uma TU, a unidade de quantização inversa 154 pode quantizar de modo inverso, por exemplo, desquantizar, um bloco de coeficiente de transformada associado à TU. A unidade de quantização inversa 154 pode quantizar de modo inverso o bloco de coeficiente de transformada de uma maneira semelhantes aos processos de quantização inversa propostos para HEVC ou definidos pelo padrão de decodificação H.264. A unidade de quantização inversa 154 pode usar um parâmetro de quantização QP calculado pelo codificador de vídeo 20 para uma CU do bloco de coeficiente de transformada para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa para a unidade de quantização inversa 154 aplicar.
[0122] Após a unidade de quantização inversa 154 quantizar de modo inverso um bloco de coeficiente de transformada, a unidade de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associado ao bloco de coeficiente de transformada. A unidade de transformada inversa 156 pode aplicar uma transformada inversa ao bloco de coeficiente de transformada a fim de gerar o bloco de vídeo residual para a TU. Por exemplo, a unidade de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada de número inteiro inversa, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou outra transformada inversa para o bloco de coeficiente de transformada. Em alguns exemplos, a unidade de transformada inversa 156 pode determinar uma transformada inversa para aplicar ao bloco de coeficiente de transformada com base na sinalização do codificador de vídeo 20. Em tais exemplos, a unidade de transformada inversa 156 pode determinar a transformada inversa com base em uma transformada sinalizada no nó raiz de um quadtree para um treeblock associado ao bloco de coeficiente de transformada. Em outros exemplos, a unidade de transformada inversa 156 pode inferir na transformada inversa de uma ou mais características de codificação, como tamanho de bloco, tamanho de codificação ou semelhantes. Em alguns exemplos, a unidade de transformada inversa 156 pode aplicar uma transformada inversa em cascata.
[0123] Em alguns exemplos, a unidade de compensação de movimento 162 pode refinar o bloco de vídeo previsto de uma PU mediante a realização de interpolação com base em filtros de interpolação. Os identificadores para filtros de interpolação a serem usados para compensação de movimento com precisão de subamostra podem ser incluídos nos elementos de sintaxe. A unidade de compensação de movimento 162 pode usar os mesmos filtros de interpolação usados pelo codificador de vídeo 20 durante a geração do bloco de vídeo previsto da PU para calcular valores interpolados para amostras de subnúmeros inteiros de um bloco de referência. A unidade de compensação de movimento 162 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 de acordo com as informações de sintaxe recebidas e usar os filtros de interpolação para produzir o bloco de vídeo previsto.
[0124] Se uma PU for codificada com o uso de intrapredição, a unidade de intrapredição 164 pode realizar intrapredição para gerar um bloco de vídeo previsto para a PU. Por exemplo, a unidade de intrapredição 164 pode determinar um modo de intrapredição para a PU com base em elementos de sintaxe no fluxo de bits. O fluxo de bits pode incluir elementos de sintaxe que a unidade de intrapredição 164 pode usar para determinar o modo de intrapredição da PU.
[0125] Em alguns exemplos, os elementos de sintaxe podem indicar que a unidade de intrapredição 164 é para usar o modo de intrapredição de outra PU para determinar o modo de intrapredição da PU atual. Por exemplo, pode ser provável que o modo de intrapredição da PU atual seja o mesmo que o modo de intrapredição de uma PU próxima. Em outras palavras, o modo de intrapredição da PU próxima pode ser o modo mais provável para a PU atual. Consequentemente, nesse exemplo, o fluxo de bits pode incluir um elemento de sintaxe pequeno que indica que o modo de intrapredição da PU é o mesmo que o modo de intrapredição da PU próxima. A unidade de intrapredição 164 pode, então, usar o modo de intrapredição para gerar dados de predição (por exemplo, amostras previstas) para a PU com base nos blocos de vídeo de Pus espacialmente próximos.
[0126] Conforme discutido acima, o decodificador de vídeo 30 também pode incluir unidade de predição de 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 estão disponíveis em SVC (por exemplo, uma camada-base ou de referência). Tal predição pode ser referida como predição de intercamada. A unidade de predição de intercamada 166 utiliza métodos de predição para reduzir redundância de intercamada aperfeiçoando, desse modo, a eficácia de codificação e reduzindo as exigências de recurso computacional. Alguns exemplos de predição de intercamada incluem intrapredição de intercamada, predição de movimento de intercamada e predição residual de intercamada. A intrapredição de intercamada usa a reconstrução de blocos colocalizados na camada-base para prever o bloco atual na camada de intensificação. A predição de movimento de intercamada usa as informações de movimento da camada-base para prever movimento na camada de intensificação. A predição residual de intercamada usa o resíduo da camada-base para prever o resíduo da camada de intensificação. Cada um dos esquemas de predição de intercamada é discutido abaixo em maiores detalhes.
[0127] A unidade de reconstrução 158 pode usar os blocos de vídeo residuais associados a TUs de uma CU e os blocos de vídeo previstos das PUs da CU, por exemplo, ou dados de intrapredição ou dados de interpredição, conforme aplicável, para reconstruir o bloco de vídeo da CU. Assim, o decodificador de vídeo 30 pode gerar um bloco de vídeo previsto e um bloco de vídeo residual com base em elementos de sintaxe no fluxo de bits e pode gerar um bloco de vídeo com base no bloco de vídeo previsto e no bloco de vídeo residual.
[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 desbloqueio para reduzir artefatos de desbloqueio associados à CU. Após a unidade de filtro 159 realizar uma operação de desbloqueio para reduzir artefatos de desbloqueio associados à CU, o decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU em armazenamento temporário de figuração decodificada 160. O armazenamento temporário de figuração decodificada 160 pode fornecer figurações de referência para compensação de movimento subsequente, intrapredição e apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da Figura 1A ou IB. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos de vídeo em armazenamento temporário de figuração decodificada 160, operações de intrapredição ou interpredição em PUs de outras CUs.
DECODIFICADOR DE MULTICAMADAS
[0129] A Figura 3B é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo de multicamadas 33 que pode implantar técnicas de acordo com aspectos descritos nessa revelação. O decodificador de vídeo 33 pode ser configurado para processar quadros de vídeo de multicamadas, como para SHVC e codificação de multivistas. Adicionalmente, o decodificador de vídeo 33 pode ser configurado para realizar qualquer uma ou todas as técnicas dessa 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 dos quais pode ser configurado como o decodificador de vídeo 30 e pode realizar as funções descritas acima em relação ao decodificador de vídeo 30. Adicionalmente, conforme indicado pelo reuso de números de referência, os decodificadores de vídeo 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 incluindo dois decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 não é limitado como tal e pode incluir qualquer número de camadas de decodificador de vídeo 30. Em algumas modalidades, o decodificador de vídeo 33 pode incluir um decodificador de vídeo 30 para cada figuração ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco figurações pode ser processada ou decodificada por um decodificador de vídeo que inclui cinco camadas de decodificador. Em algumas modalidades, o decodificador de vídeo 33 pode incluir mais camadas de decodificador que quadros em uma unidade de acesso. Em alguns casos, algumas das camadas de decodificador de vídeo podem estar inativas quando processam algumas unidades de acesso.
[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 intensificada para ser adicionada à lista de imagem de referência para o quadro ou unidade de acesso. Essa camada intensificada pode ser armazenada no armazenamento temporário de figuração decodificada 160. Em algumas modalidades, a unidade de aumento de resolução 92 pode incluir algumas ou todas as modalidades descritas em relação à unidade de reamostragem 90 da Figura 2A. Em algumas modalidades, a unidade de aumento de resolução 92 é configurada para aumentar a resolução de uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para se adequar a um conjunto de regras de limite de fatia e/ou regras de varredura de rastreio. Em alguns casos, a unidade de aumento de resolução 92 pode ser uma unidade de reamostragem configurada para aumentar a resolução e/ou diminuir a resolução de uma camada de um quadro de vídeo recebido.
[0132] A unidade de aumento de resolução 92 pode ser configurada para receber uma imagem ou quadro (ou informações de figuração associadas à figuração) do armazenamento temporário de figuração decodificada 160 do decodificador de camada inferior (por exemplo, o decodificador de vídeo 30A) e para aumentar a resolução da figuração (ou as informações de figuração recebidas). Essa imagem com resolução aumentada pode, então, ser fornecida para a unidade de processamento de predição 152 de um decodificador de camada superior (por exemplo, o decodificador de vídeo 30B) configurado para decodificar uma imagem na mesma unidade de acesso que o decodificador de camada inferior. Em alguns casos, o decodificador de camada superior é uma camada removida do decodificador de camada inferior. Em outros casos, pode haver um ou mais decodificadores de camada superior entre o decodificador de camada 0 e o decodificador de camada 1 da Figura 3B.
[0133] Em alguns casos, a unidade de aumento de resolução 92 pode ser omitida ou contornada. Em tais casos, a figuração do armazenamento temporário de figuração decodificada 160 do decodificador de vídeo 30A pode ser fornecida diretamente, ou pelo menos sem ser fornecida para a unidade de aumento de resolução 92, para a unidade de processamento de predição 152 do decodificador de vídeo 30B. Por exemplo, se os dados de vídeo fornecidos para o decodificador de vídeo 30B e a figuração de referência do armazenamento temporário de figuração decodificada 160 do decodificador de vídeo 30A forem do mesmo tamanho ou resolução, a figuração de referência pode ser fornecida para o decodificador de vídeo 30B sem aumento de resolução. Adicionalmente, em algumas modalidades, a unidade de aumento de resolução 92 pode ser uma unidade de reamostragem 90 configurada para aumentar a resolução ou diminuir a resolução de uma figuração de referência recebida do armazenamento temporário de figuração 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 em que cada emissão de fluxo de bits pelo demux 99 é fornecida para um decodificador de vídeo diferente 30A e 30B. Os múltiplos fluxos de bits podem ser criados mediante o recebimento de um fluxo de bits e cada um dos decodificadores de vídeo 30A e 30B recebe uma porção do fluxo de bits em um determinado momento. Embora, em alguns casos, os bits do fluxo de bits recebidos no demux 99 possam ser alternados em um bit de cada vez entre cada um dos decodificadores de vídeo (por exemplo, decodificadores de vídeo 30A e 30B no exemplo da Figura 3B), em muitos casos, o fluxo de bit é dividido de modo diferente. Por exemplo, o fluxo de bits pode ser dividido ao alterar qual decodificador de vídeo recebe o fluxo de bits um bloco de cada vez. Em outro exemplo, o fluxo de bit pode ser dividido por uma razão de não 1: 1 de blocos para cada um dos 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 pré-programada. Em outras modalidades, o demux 99 pode dividir o fluxo de bits com base em um sinal de controle recebido de um sistema externo ao decodificador de vídeo 33, como de um processador em um dispositivo de destino, incluindo o dispositivo de destino 14. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um vídeo da interface de entrada 28, com base em uma largura de banda do enlace 16, com base em uma assinatura associada a um usuário (por exemplo, uma assinatura paga versus uma assinatura grátis), ou com base em qualquer outro fator para determinar uma resolução obtenível pelo decodificador de vídeo 33.
FIGURAÇÕES DE PONTO DE INTRAPONTO DE ACESSO ALEATÓRIO (IRAP)
[0135] Alguns esquemas de codificação de vídeo podem fornecer vários pontos de acesso aleatório durante todo o fluxo de bits de modo que o fluxo de bits possa ser decodificado começando de qualquer um desses pontos de acesso aleatório sem precisar decodificar quaisquer figurações que precedem esses pontos de acesso aleatório no fluxo de bits. Em tais esquemas de codificação de vídeo, todas as figurações que seguem um ponto de acesso aleatório em ordem de saída (por exemplo, incluindo aquelas figurações que estão na mesma unidade de acesso que a figuração que fornece o ponto de acesso aleatório) podem ser decodificadas corretamente sem usar quaisquer figurações que precedem o ponto de acesso aleatório. Por exemplo, mesmo se uma porção do fluxo de bits for perdida durante a transmissão ou durante a decodificação, um decodificador pode resumir a decodificação do fluxo de bits começando a partir do próximo ponto de acesso aleatório. O suporte para acesso aleatório pode facilitar, por exemplo, serviços de transmissão contínua dinâmicos, operações de busca, comutação de canal, etc.
[0136] Em alguns esquemas de codificação, tais pontos de acesso aleatório podem ser fornecidos por imagens que são referidas como imagens de ponto de intraponto de acesso aleatório (IRAP). Por exemplo, um ponto de acesso aleatório (por exemplo, fornecido por uma figuração de IRAP de camada de intensificação) em uma camada de intensificação (“layerA”) contida em uma unidade de acesso (“auA”) pode fornecer acesso aleatório específico de camada de modo que para cada camada de referência (“layerB”) de layerA (por exemplo, uma camada de referência que é uma camada que é usada para prever layerA) que tem um ponto de acesso aleatório contido em uma unidade de acesso (“auB”) que está na layerB e precede auA em ordem de decodificação (ou um ponto de acesso aleatório contido em auA), as figurações na layerA que seguem auB em ordem de saída (incluindo aquelas figurações localizadas em auB), são corretamente decodificáveis sem precisar decodificar quaisquer figurações na layerA que precede auB.
[0137] As figurações de IRAP podem ser codificadas com o uso de intrapredição (por exemplo, codificadas sem referência a outras figurações) e/ou predição de intercamada e podem incluir, por exemplo, figurações de atualização de decodificar instantâneas (IDR), figurações de acesso aleatório claras (CRA) e figurações de acesso de enlace desfeito (BLA). Quando há uma figuração de IDR no fluxo de bits, todas as figurações que precedem a figuração de IDR em ordem de decodificação não são usadas para predição por figurações que seguem a figuração de IDR. Quando há uma figuração de CRA no fluxo de bits, as figurações que seguem a figuração de CRA podem usar ou não figurações que precedem a imagem de CRA em ordem de decodificação para predição. Essas figurações que seguem a figuração de CRA em ordem de decodificação, mas usam figurações que precedem a figuração de CRA em ordem de decodificação podem ser referidas como figurações principais omitidas de acesso aleatório (RASL). Outro tipo de figuração que pode seguir uma figuração de IRAP em ordem de decodificação e precede a mesma em ordem de emissão é uma figuração principal decodificável de acesso aleatório (RDAL), que pode não conter referências a quaisquer figurações que precedem a figuração de IRAP em ordem de decodificação. As figurações de RASL podem ser descartadas pelo decodificador se as figurações que precedem a figuração de CRA não estiverem disponíveis. Uma figuração de BLA indica para o decodificador que as figurações que precedem a figuração de BLA podem não estar disponíveis para o decodificador (por exemplo, devido ao fato de que dois fluxos de bits são unidos e a figuração de BLA é a primeira figuração do segundo fluxo de bits em ordem de decodificação). Uma unidade de acesso (por exemplo, um grupo de figurações que consiste em todas as figurações codificadas associadas ao mesmo tempo de emissão através de múltiplas camadas) que contém uma figuração de camada-base (por exemplo, que tem uma camada ID ou 0) que é uma figuração de IRAP pode ser referida como uma unidade de acesso de IRAP. A camada ID de uma camada, como a camada- base, pode estar contida em um valor nuh_layer_id. Em alguns aspectos, a camada-base pode ter uma camada ID de 0.
DIRECT_DEPENDENCY_FLAG
[0138] Em algumas implantações exemplificativas (por exemplo, MV-HEVC e SHVC), há um elemento de sintaxe chamado direct_dependency_flag que especifica, para uma camada particular, qual camada ou camadas podem ser usadas para predição de intercamada da camada particular. Em uma modalidade, o direct_dependency_flag é uma matriz bidimensional que especifica se uma camada de dados de vídeo é codificada com base em (ou dependente de) outra camada de dados de vídeo. Tal matriz bidimensional pode tomar uma forma de valores de direct_dependency_flag [i] [j], em que i corresponde à camada a ser codificada (por exemplo, camada atual) e j corresponde à camada a ser referenciada (por exemplo, camada de referência). Nesse exemplo, direct_dependency_flag pode ser 0 se a camada de referência não for uma camada de referência direta da camada atual e direct_dependency_flag pode ser 1 se a camada de referência for uma camada de referência direta da camada atual. Em uma modalidade, se direct_dependency_flag for omitido ou não definido, o valor é inferido para ser 0. Em outra modalidade, se direct_dependency_flag for omitido ou não definido, o valor é inferido para ser 1. Em uma modalidade, se Camada A for uma camada de referência direta de Camada B, isso significa que a Camada B pode ser codificada com base, pelo menos em parte, em informações incluídas na Camada A. Em outra modalidade, se a Camada A for uma camada de referência direta de Camada B, isso significa que a Camada B é codificada com base, pelo menos em parte, em informações incluídas na Camada A. Em algumas modalidades, todas as camadas que têm uma ID de camada menor (por exemplo, camada inferior) são camadas de referência direta de uma camada particular. Em outras modalidades, apenas algumas das camadas inferiores podem ser camadas de referência direta de uma camada particular. Por exemplo, o codificador pode escolher apenas algumas das camadas inferiores como camadas de dependência direta de uma camada particular para reduzir complexidade computacional. O esquema de codificação aplicável (por exemplo, HEVC) pode ter um limite quanto a quantas camadas de referência direta uma camada particular pode ter (por exemplo, não mais de uma camada de referência para escalabilidade espacial). Em uma modalidade, o sinalizador direct_dependency_flag é sinalizado no conjunto de parâmetros de vídeo (VPS) e se aplica à sequência de vídeo codificado completa (CVS).
TIPO DE DEPENDÊNCIA DIRETA
[0139] As informações que são usadas para codificar a camada atual podem incluir informações de textura (por exemplo, valores de pixel) da camada de referência, informações de movimento (por exemplo, vetores de movimento, índices de referência, direção de predição, etc.) da camada de referência. No entanto, as informações da camada de referência que pode ser usada para codificar a camada atual não são limitadas àquelas discutidas no presente documento, mas podem ser quaisquer informações que são incluídas em ou fazem parte da camada de referência.
[0140] Em algumas implantações, um ou mais sinalizadores adicionais ou elementos de sintaxe podem ser usados para indicar o tipo ou os tipos de informações que são derivadas ou importadas da camada de referência para codificar a camada atual. Por exemplo, em algumas modalidades, a camada de referência pode ser usada para predição de movimento de intercamada, predição de textura de intercamada ou ambas. Em uma modalidade, tal sinalizador ou elemento de sintaxe pode ser chamado “direct_dependency_type”.
[0141] Em uma modalidade, o tipo de dependência direta é uma matriz bidimensional que especifica que tipo de predição de intercamada é usada para codificar a camada atual com o uso da camada de referência. Tal matriz bidimensional pode tomar uma forma de valores de direct_dependency_type , em que i corresponde à atual (por exemplo, camada a ser codificada) e j corresponde à camada de referência (por exemplo, camada a ser referenciada). Nesse exemplo, um valor do tipo de dependência direta de 0 pode indicar predição de amostra de intercamada apenas, 1 pode indicar predição de movimento de intercamada apenas, e 2 pode indicar tanto a amostra de intercamada quanto a predição de movimento. Em algumas modalidades, um valor de direct_dependency_type de 3 (ou qualquer outro valor) pode indicar que não há dependência. Como cada valor de direct_dependency_type é designado ou mapeado para tipos diferentes de predição de intercamada pode ser diferente em outras implantações e a presente revelação não é limitada a qualquer designação ou mapeamento particular de valores de direct_dependency_type para tipos diferentes de predição de intercamada. Em uma modalidade, o elemento de sintaxe de direct_dependency_type é sinalizado no conjunto de parâmetros de vídeo (VPS) e se aplica à sequência de vídeo codificado completa (CVS).
CODEC DE CAMADA DE REFERÊNCIA
[0142] Em alguns esquemas de codificação existentes, um codec de referência ou de camada-base pode ser qualquer número de codecs. Por exemplo, um codec de HEVC pode ser usado para a camada de referência ou um H.264/AVC pode ser usado ou um codec de não HEVC geral. Além disso, pode haver um sinalizador em um conjunto de parâmetro que indica o codec a ser usado. Por exemplo, um sinalizador no conjunto de parâmetros de vídeo (VPS) pode indicar se codec de HEVC ou non-HEVC (por exemplo, AVC) é usado para codificar a camada de referência. Em um exemplo, um sinalizador avc_base_layer_flag pode ter um valor igual a 1, que indica que o codec de camada de referência se conforma ao padrão de codificação de vídeo de acordo com a Recomendação ITU-T H.264 | Padrão Internacional ISO/IEC 14496-10 e, alternativamente, pode ter um valor igual a 0, que indica que o codec de camada de referência se conforma à especificação de HEVC. Portanto, um dispositivo de codificação configurado para codificar ou decodificar uma camada de intensificação pode ter informações relacionadas a se um codec de AVC ou de HEVC (ou algum outro codec de não HEVC) é usado em relação à camada de referência.
[0143] Por exemplo, em alguns aspectos, um codec de não HEVC pode ser usado para uma referência ou camada-base e uma ou mais camadas de intensificação podem ter como base padrões de codificação de H.265/HEVC e suas extensões de multicamada. Por exemplo, essas camadas de intensificação podem ter como base extensão Escalonável de H.265/HEVC (SHVC). O uso de tal configuração pode ter várias vantagens. Por exemplo, isso pode permitir que os dispositivos sejam compatíveis apenas com codecs de não HEVC para decodificar o vídeo sem as camadas de intensificação e permite adicionalmente que os dispositivos sejam compatíveis com codecs de HEVC para codificar o vídeo e as camadas de intensificação.
SUPORTE PARA CAMADAS DE INTENSIFICAÇÃO BASEADAS EM SHVC
[0144] Certos projetos podem permitir suporte de uma camada-base de H.264/AVC (ou outro não HEVC), com camadas de intensificação baseadas em SHVC. Consequentemente, dois ou mais decodificadores podem ser usados para decodificar um vídeo com o uso dessas técnicas. Por exemplo, um decodificador pode decodificar a camada- base de não HEVC conforme é conhecido na técnica. Outro decodificador, como um decodificador de HEVC, pode ser usado para decodificar as uma ou mais camadas de intensificação baseadas em HEVC. Em alguns aspectos, pode ser benéfico fornecer um projeto para as camadas de intensificação que podem permitir que o decodificador de HEVC decodifique essas camadas quando uma camada-base de não HEVC é usada. A partir do ponto de vista do decodificador de HEVC, essas camadas-base podem ser decodificadas por uma fonte externa ou um meio externo. Consequentemente, o decodificador de HEVC pode não receber quaisquer informações da camada-base ou pode apenas receber um subconjunto limitado de informações da camada-base, como as informações de imagem para cada quadro da camada-base.
[0145] Quando decodifica uma camada de intensificação baseada em HEVC em um vídeo que inclui uma camada-base baseada em não HEVC, nenhuma informação de figuração de camada-base pode ser fornecida para a camada de intensificação. Alternativamente, a fonte externa (como um decodificador de camada-base) pode fornecer um conjunto proscrito de informações para o decodificador, incluindo os valores de amostra decodificados da figuração decodificada de camada-base, o formato de representação da figuração decodificada de camada-base, incluindo a largura e altura em amostras de luma, o formato de cor, a profundidade de bit de luma e a profundidade de bit de croma e uma indicação de se a figuração de camada-base é uma figuração de IDR ou não. Opcionalmente, as informações também são fornecidas sobre se a figuração é um quadro ou um campo e, quando um campo, a paridade de campo (que indica se o campo é um campo de topo ou um campo de fundo). Se essas informações não forem fornecidas, a figuração decodificada pode ser inferida para ser uma figuração de quadro.
[0146] Emitir uma figuração de camada-base pode ser a responsabilidade de um decodificador de camada- base. Por exemplo, esse decodificador pode ser um decodificador de H.264/AVC ou um decodificador de outro codec de não HEVC. A sincronização de saída entre a figuração de camada-base e uma figuração de camada de intensificação na mesma unidade de acesso pode ser controlada de modo externo. Por exemplo, um método de controle externo pode ser para usar carimbos de data/hora de apresentação. Em alguns aspectos, a associação de uma figuração decodificada de camada-base a uma unidade de acesso pode ser a responsabilidade da fonte externa/fonte, como o decodificador de camada-base ou outra fonte que é externa ao decodificador de camada de intensificação.
[0147] Em alguns aspectos, um decodificador de SHVC, que é usado para decodificar um ou mais camada de intensificação, pode precisar manter apenas um armazenamento de figuração decodificada de memória para uma figuração decodificada de camada-base e essa memória pode não ser considerada como parte do armazenamento temporário de figuração decodificada (DPB).
[0148] A figuração decodificada de camada-base de não HEVC pode ter uma ID de camada (valor de nuh_layer_id) de 0. Em alguns aspectos, um valor de HevcBaseLayerFlag pode ser usado para indicar se a camada- base é ou não uma camada-base de HEVC. Quando a camada-base não é uma camada-base de HEVC, esse sinalizador pode ter um valor de 0, enquanto esse sinalizador pode ter um valor de 1 quando a camada-base é uma camada de HEVC.
[0149] Em alguns aspectos, a contagem de ordem de figuração da figuração decodificada de camada-base é definida igual à contagem de ordem de figuração das figurações de camada de intensificação. Observe que, nesse caso, a contagem de ordem de figuração atual de uma figuração de camada-base decodificada pelo decodificador de camada-base em tal codec escalonável ou multivistas pode ser diferente do valor de contagem de ordem de figuração da mesma figuração quando a mesma é decodificada por um decodificador de AVC.
[0150] Em alguns aspectos, a figuração decodificada de camada-base pode ser marcada como “usada para referência a longo prazo”. Para as operações de armazenamento temporário de figuração codificada do decodificador de referência hipotética ou modelo de armazenamento temporário, a camada-base pode ser considerada como tendo zero bits. Para operações de armazenamento temporário de figuração decodificada do decodificador de referência hipotética ou modelo de armazenamento temporário, apenas figurações decodificadas de camadas de intensificação podem ser consideradas.
QUESTÕES IDENTIFICADAS COM SUPORTE PARA CAMADAS DE INTENSIFICAÇÃO BASEADAS EM SHVC
[0151] Conforme descrito acima, as camadas de intensificação baseadas em SHVC podem ser usadas com uma camada-base que usou um codec de não HEVC, como um codec de H.264/AVC. No entanto, essas camadas de intensificação baseadas em SHVC podem se deparar com determinados problemas, devido à combinação das camadas de intensificação baseadas em SHVC e a camada-base de não HEVC. Certas questões podem não surgir quando se usa uma camada-base de HEVC, mas apenas quando se usa uma camada- base de não HEVC, como quando uma figuração decodificada é fornecida para o codificador de SHVC por uma fonte externa, como um codificador de AVC.
[0152] Em alguns aspectos, quando a camada- base é uma camada de não HEVC, a sinalização de determinados parâmetros pode ser feita de uma maneira que limite a quantidade de bits usados para tal sinalização. Por exemplo, pode ser vantajoso usar uma quantidade de bits limitada para determinados parâmetros de DPB, como aqueles que atribuem um tamanho de sub-DPB, um reordenador máximo e uma latência máxima. Adicionalmente, pode ser vantajoso se determinadas estruturas de sintaxe não se aplicarem à camada-base (camada 0) quando a camada-base é uma camada não HVEC.
[0153] Por exemplo, a sinalização de determinados parâmetros pode ser desnecessária ou redundante quando se usa uma camada-base de não HEVC. Determinados parâmetros podem ser inferidos simplesmente da presença da camada-base de não HEVC e, desse modo, qualquer sinalização adicional desses parâmetros pode ser desnecessária. Desse modo, a fim de usar a memória e outros recursos de modo eficiente, um codificador pode ser configurado para determinar se uma camada-base é ou não codificada com o uso de um codec de HEVC e para escolher sinaliza ou não determinados parâmetros com base, pelo menos em parte, no codec usado para uma camada-base de um fluxo de vídeo. Quando a camada-base é uma camada-base de não HEVC, um codificador pode ser configurado para inferir determinados valores desses parâmetros, em vez de ter esses valores explicitamente definidos.
[0154] Em alguns aspectos, uma figuração decodificada de camada-base pode ser fornecida pelos meios externos ou fonte externa. Pode ser vantajoso se essa figuração for armazenada em um sub-DPB para a camada-base. O tamanho desse sub-DPB pode ser definido como 1 e o sub- DPB pode ser esvaziado na extremidade do processo de decodificação para cada unidade de acesso.
[0155] Também pode ser vantajoso se o decodificador de camada-base (que pode ser referenciado como uma fonte externa, devido ao fato de que o mesmo é externo ao decodificador de SHVC) fornecer determinados valores para o decodificador de SHVC, que contém informações sobre a camada-base. Por exemplo, a fonte externa pode fornecer uma figuração de camada-base decodificada e também pode fornecer uma indicação de se a figuração de camada-base é ou não uma figuração de IRAP. Se a figuração de camada-base for uma figuração de IRAP, a fonte externa pode ser adicionalmente exigida para fornecer o codificador com um tipo de unidade de NAL de IRAP, que especifica se a figuração é uma figuração de IDR, uma figuração de CRA ou uma figuração de BLA.
SINALIZAÇÃO EFICAZ DE PARÂMETROS DE DPB
[0156] Em alguns aspectos, determinada sinalização de parâmetros de DPB pode ser ineficaz quando se usa a camada-base de não HEVC e uma ou mais camada de intensificação baseada em SVHC. Por exemplo, determinados parâmetros podem ter valores restritos quando uma camada- base é uma camada-base de não HEVC. Por exemplo, um determinado parâmetro pode ter um único valor específico sempre que a camada-base for uma camada de não HEVC. Dessa maneira, a sinalização desses valores para cada elemento em uma matriz (ou outra estrutura de dados) pode ser redundante, à medida que esses valores podem ser inferidos com base em uma indicação de que a camada-base é uma camada de não HEVC, ou inferidos com base em outras informações.
[0157] Por exemplo, um parâmetro de DPB que pode ser sinalizado é vps_max_dec_pic_buffering_minus1 . O valor dessa matriz, plus 1, sinaliza o tamanho máximo necessário do armazenamento temporário de figuração decodificada para a mais alta subcamada temporal a ser decodificada. No entanto, quando se usa uma camada-base de não HEVC, vps_max_dec_pic_buffering_minus1 será 0 para todos os valores possíveis de i. Dessa maneira, uma vez que o valor de vps_max_dec_pic_buffering_minus1 é restrito quando se usa uma camada-base de não HEVC, pode ser desejável evitar a sinalização desses valores.
[0158] Por exemplo, quando uma camada-base de não HEVC estiver presente, o valor de HevcBaseLayerFlag pode ser definido para 0, e o valor de AvcBaseLayerFlag pode ser definido para 1. Dessa maneira, o codificador pode ser configurado para verificar um ou mais desses valores antes de definir um valor para vps_max_dec_pic_buffering_minus1 . Quando o codificador determinar que uma camada-base de não HEVC está presente, o codificador pode, então, se abster de definir valores para vps_max_dec_pic_buffering_minus1 para cada valor de i, à medida que o valor pode ser inferido a partir de outras informações, uma indicação de que a camada-base é codificada com o uso de um codec de não HEVC.
[0159] Em alguns aspectos, o codificador pode ser configurado para definir cada valor de vps_max_dec_pic_buffering_minus1 para 0, para cada i possível, quando o codificador determinar que uma camada- base de não HEVC está presente. Por exemplo, esse valor ou um outro valor pode usar a menor quantidade de bits possível para sinalizar vps_max_dec_pic_buffering_minus1 . Pode ser benéfico usar a menor quantidade de bits possível para sinalizar valores de vps_max_dec_pic_buffering_minus1 , quando os valores da matriz forem restritos devido ao uso de uma camada-base de não HEVC. Dessa maneira, os valores para vps_max_dec_pic_buffering_minus1 podem ser definidos para 0 para todos os valores de i. Quando em decodificação, um decodificador pode ser configurado para ignorar esses valores à medida que os valores podem ser restritos com base no uso da camada-base de não HEVC.
[0160] Ademais a vps_sub_layer_ordering_info_present_flag pode estar presente e definida para 1 quando uma camada-base de não HEVC for usada. Um valor de 1 pode indicar que vps_max_dec_pic_buffering_minus1 , vps_max_num_reorder_pics , e vps_max_latency_increase_plus1 estão presentes para as subcamadas i, enquanto um valor de 0 pode indicar que valores de vps_max_dec_pic_buffering_minus1 [vps_max_sub_layers_minus1], vps_max_num_reorder_pics [vps_max_sub_layers_minus1], e vps_max_latency_increase_plusl [vps_max_sub_layers_minus1] se aplicam a todas as subcamadas (de modo que cada uma dessas matrizes tenha o mesmo valor para cada uma das subcamadas i).
[0161] Um outro parâmetro de DPB que pode ser sinalizado é vps_max_num_reorder_pics , que indica uma quantidade máxima de reordenamento que pode ocorrer entre as figurações a serem emitidas. Por exemplo, determinadas figurações que devem ser emitidas podem preceder uma outra figuração a ser emitida na ordem de codificação, mas podem seguir essa mesma figuração na ordem de saída. O valor de reordenamento máximo (vps_max_num_reorder_pics ) indica, para um valor de HighestTid igual a i, um número máximo permitido de figurações que são definidas para serem emitidas que podem prosseguir uma dada figuração de saída na ordem de decodificação, mas segue essa mesma figuração na ordem de saída.
[0162] Conforme com vps_max_dec_pic_buffering_minus1 , quando a camada-base for uma camada de não HEVC, vps_max_num_reorder_pics pode ser definida para 0 para todos os valores de i. Dessa maneira, pode ser vantajoso que o codificador não sinalize os valores de vps_max_num_reorder_pics , após o codificador ter determinado que a camada-base é uma camada- base de não HEVC. Quando esse valor não for sinalizado, os valores de vps_max_num_reorder_pics podem ser inferidos, com base em uma indicação de que a camada-base é uma camada de não HEVC. Em alguns aspectos, o codificador pode ser configurado para definir cada valor de vps_max_num_order_pic para 0, para cada i possível, quando o codificador determinar que uma camada-base de não HEVC está presente.
[0163] Em alguns aspectos, o codificador pode ser configurado para definir cada valor de vps_max_num_order_pic para 0, para cada i possível, quando o codificador determinar que uma camada-base de não HEVC está presente. Por exemplo, esse valor ou um outro valor pode usar a menor quantidade de bits possível para sinalizar vps_max_num_reorder_pics . Pode ser benéfico usar a menor quantidade de bits possível para sinalizar valores de vps_max_num_reorder_pics , quando os valores da matriz forem restritos devido ao uso de uma camada-base de não HEVC. Dessa maneira, os valores para vps_max_num_reorder_pics podem ser definidos para 0 para todos os valores de i. Quando em decodificação, um decodificador pode ser configurado para ignorar esses valores à medida que os valores podem ser restritos com base no uso da camada-base de não HEVC.
[0164] Um outro parâmetro de DPB que pode ser sinalizado é vps_max_latency_increase_plus1 . Um valor desse parâmetro não igual a 0 pode ser usado para computar um número máximo de figurações de saída que podem preceder uma figuração de saída no fluxo de vídeo na ordem de saída e seguem essa figuração de saída na ordem de decodificação quando a mais alta subcamada temporal a ser decodificada for igual a i.
[0165] Conforme acima, quando a camada-base for uma camada de não HEVC, vps_max_latency_increase_plus1 pode ser definida para 0 para todos os valores de i. Dessa maneira, pode ser vantajoso que o codificador não sinalize os valores de vps_max_latency_increase_plus1 , após o codificador ter determinado que a camada-base é uma camada-base de não HEVC. Quando esse valor não for sinalizado, os valores de vps_max_latency_increase_plus1 podem ser inferidos, com base em uma indicação de que a camada-base é uma camada de não HEVC. Em alguns aspectos, o codificador pode ser configurado para definir cada valor de vps_max_latency_increase_plus1 para 0, para cada i possível, quando o codificador determinar que uma camada- base de não HEVC está presente.
[0166] Em alguns aspectos, o codificador pode ser configurado para definir cada valor de vps_max_latency_increase_plus1 para 0, para cada i possível, quando o codificador determinar que uma camada- base de não HEVC está presente. Por exemplo, esse valor ou um outro valor pode usar a menor quantidade de bits possível para sinalizar vps_max_latency_increase_plus1 . Pode ser benéfico usar a menor quantidade de bits possível para sinalizar valores de vps_max_latency_increase_plus1 , quando os valores da matriz forem restritos devido ao uso de uma camada-base de não HEVC. Dessa maneira, os valores para vps_max_latency_increase_plus1 podem ser definidos para 0 para todos os valores de i. Quando em decodificação, um decodificador pode ser configurado para ignorar esses valores à medida que os valores podem ser restritos com base no uso da camada-base de não HEVC.
[0167] Dessa maneira, conforme descrito acima, pode ser vantajoso que um codificador use a menor quantidade de bits possível para sinalizar vps_max_dec_pic_buffering_minus1 , vps_max_num_reorder_pics , e vps_max_latency_increase _plus1 . Por exemplo, se os valores de cada uma dessas matrizes forem restritos quando uma camada-base de não HEVC for usada, pode ser vantajoso sinalizar esses valores com o uso de menos bits do que seria necessário em situações em que os valores não são restritos. Por exemplo, os valores para cada uma dessas matrizes podem ser definidos para 0 para todos os valores de i. Um decodificador pode ser, então, configurado para ignorar esses valores. Por exemplo, um decodificador pode ser configurado para determinar se uma camada-base é ou não uma camada-base de HEVC, como verificando-se um sinalizador. Se a camada-base for uma camada-base de não HEVC, o decodificador pode ser configurado para ignorar os valores de cada uma dentre vps_max_dec_pic_buffering_minus1 , vps_max_num_reorder_pics , e vps_max_latency_increase_plus1 .
[0168] Em alguns aspectos, hrd_layer_set_idx pode ser usada para especificar a camada definida para os quais a i-ésima estrutura de sintaxe hrd_parameters() no VPS se aplica. Nas versões anteriores de fluxos de vídeo, pode ter sido especificado que hrd_layer_set_idx pode ser igual a 0. Dessa maneira, pode ser benéfico que hrd_layer_set_idx seja maior que 0, de modo que um decodificador possa estar ciente de que o fluxo de vídeo é um fluxo de vídeo que tem uma camada-base de não HEVC, em vez de aderir aos padrões anteriores. Ademais, em alguns aspectos, nenhuma das estruturas de sintaxe hrd_parameters() podem se aplicar à camada-base de não HEVC, que tem uma ID de camada de 0. Por exemplo, quando a camada-base for sinalizada para ser não HEVC ou externamente fornecida, não deveria haver parâmetros de HRD aplicáveis à camada-base, à medida que a camada-base não está no fluxo de bits.
FLUXOGRAMA EXEMPLIFICATIVO N° 1
[0169] A Figura 4 é um fluxograma que ilustra um método 400 para codificar informações de vídeo, de acordo com uma modalidade da presente revelação. As etapas ilustradas na Figura 4 podem ser realizadas por um codificador (por exemplo, o codificador de vídeo conforme mostrado na Figura 2A ou na Figura 2B), um decodificador (por exemplo, o decodificador de vídeo conforme mostrado na Figura 3A ou na Figura 3B), ou qualquer outro componente. Por questão de conveniência, o método 400 é descrito como realizado por um criptógrafo, que pode ser o codificador, o decodificador ou um outro componente. O método pode ser um método de decodificação ou um método de codificação.
[0170] O método 400 começa no bloco 401. No bloco 405, o codificador determina se uma camada de referência está incluída em um fluxo de bits. Por exemplo, a camada de referência pode não estar incluída no fluxo de bits quando a camada de referência for um codec de não HEVC. Dessa maneira, em alguns aspectos, a camada de referência pode ser codificada em um codec de não HEVC, ou pode ser codificada em um codec de AVC e, portanto, pode não estar incluída no fluxo de bits. Em alguns aspectos, o método determina se a camada de referência está incluída no fluxo de bits com base em um valor de um sinalizador ou uma variável. Tal sinalizador ou outro indicador pode ser recebido da fonte externa ou pode ser determinado pelo método. Em alguns aspectos, os meios para determinar podem incluir um processador.
[0171] Em seguida, no bloco 410, o codificador determina uma indicação de um ou mais parâmetros para um armazenamento temporário de figuração decodificada com base na possibilidade de a camada de referência estar incluída no fluxo de bits. Por exemplo, os um ou mais parâmetros par um armazenamento temporário de figuração decodificada podem incluir um parâmetro que sinaliza o tamanho máximo necessário do DPB, como um tamanho máximo de um sub-DPB. Em geral, se a camada de referência não estiver incluída no fluxo de bits, os valores para esses parâmetros podem ser conhecidos, conforme descrito acima. Em alguns aspectos, a determinação de uma indicação para o tamanho máximo do sub- DPB pode incluir determinar uma indicação para o tamanho máximo do sub-DPB que indica que o tamanho máximo do sub- DPB é 1. Em alguns aspectos, os meios para determinar podem incluir um processador. No processo de codificação de vídeo, o codificador pode incluir uma ou mais estruturas de sintaxe no fluxo de bits que inclui a indicação dos um ou mais parâmetros. No processo de decodificação de vídeo, a determinação da indicação pode incluir decodificar uma ou mais estruturas de sintaxe do fluxo de bits. Os detalhes das estruturas de sintaxe exemplificativas são descritos no presente documento.
[0172] Em alguns aspectos, os parâmetros também podem incluir um valor que sinaliza um número máximo de reordenamento de figurações de saída ou uma latência máxima. Em alguns aspectos, determinados parâmetros podem ser determinados com base, pelo menos em parte, no codec usado para a camada-base. Por exemplo, em alguns aspectos, os valores de um ou mais parâmetros podem ser definidos para 0, para todos os valores possíveis de i, quando a camada-base for um codec de não HEVC. No bloco 415, o codificador codifica as informações de vídeo com base, pelo menos em parte, na indicação determinada dos um ou mais parâmetros para o armazenamento temporário de figuração decodificada. Em alguns aspectos, os meios para codificar podem incluir um processador. O método 400 termina no bloco 425.
[0173] Conforme discutido acima, um ou mais componentes de codificador de vídeo 20 da Figura 2A, de codificador de vídeo 21 da Figura 2B, de decodificador de vídeo 30 da Figura 3A, ou de decodificador de vídeo 31 da Figura 3B (por exemplo, unidade de predição de intercamada 128 e/ou unidade de predição de intercamada 166) podem ser usados para implantar qualquer uma das técnicas discutidas na presente revelação, como determinar se a camada de referência codec é o tipo específico de codec, receber a figuração de camada-base decodificada, armazenar a figuração de camada-base decodificada, e esvaziar a memória.
REDUÇÃO DE SINALIZAÇÃO DESNECESSÁRIA NA EXTENSÃO VPS QUANDO SE USA UMA CAMADA-BASE DE NÃO HEVC
[0174] Em alguns aspectos, quando a camada- base for uma camada-base de não HEVC, pode ser desejável evitar a sinalização desnecessária para a camada-base na extensão de VPS, incluindo metadados de informações de usabilidade de vídeo (VUI) de VPS. Por exemplo, as VUI de VPS podem incluir inúmeros valores que podem ser inferidos simplesmente com base no conhecimento de que a camada-base é codificada com o uso de um codec de não HEVC, e então, pode ser desnecessário continuar a sinalizar essas informações redundantes no vídeo.
[0175] Por exemplo, determinados valores nas VUI de VPS podem ser determinados somente com base no conhecimento de que a camada-base é uma camada-base de não HEVC. Dessa maneira, se for sinalizado que a camada-base é uma camada-base de não HEVC, a sinalização adicional em determinados valores nas VUI de VPS pode ser redundante e desnecessária. Conforme descrito acima, se o valor de uma HevcBaseLayerFlag for definido para 0, a mesma pode sinalizar que a camada-base não é uma camada de HEVC. Dessa maneira, outra sinalização pode ser evitada como redundante e desnecessária.
[0176] Conforme descrito acima, direct_dependency_type indica um tipo de dependência entre a camada i e a camada j. Por exemplo, um valor de 0 indica que a camada j pode ser usada tanto para a predição de amostra intercamada quanto a predição de movimento intercamada para a camada i. Um valor de 1 indica que a camada j pode ser usada para a predição de amostra intercamada, mas não para a predição de movimento intercamada para a camada i. Um valor de 2 indica que a camada j pode ser usada para a predição de movimento intercamada, mas não para a predição de amostra intercamada para a camada i.
[0177] Quando se usar uma camada-base que é não HEVC, a predição de movimento intercamada da camada- base pode ser desabilitada para todas as outras camadas. Conforme descrito acima, a camada-base de não HEVC tem uma ID de camada de 0. Ademais, quando a predição de movimento intercamada não for permitida, isso pode corresponder a um valor de direct_dependency_type de 1. Assim, o valor de direct_dependency_type pode ser inferido para ser 1 para todos os valores de i, devido ao fato de que nenhuma camada pode usar a camada-base (com ID de camada de 0) para a predição de movimento intercamada. Esses valores não precisam ser explicitamente sinalizados, conforme tal sinalização pode ser redundante após uma indicação de que a camada-base é uma camada-base de não HEVC.
[0178] Por exemplo, um criptógrafo, ou um codificador ou um decodificador, pode reconhecer que a camada-base é uma camada-base de não HEVC. Com base nesse reconhecimento (que pode ser reconhecido, por exemplo, com base em uma ou mais indicações como um sinalizador), o codificador pode ser configurado para inferir valores de direct_dependency_type para todos os valores de i, de modo que os valores inferidos possam ser 1 para todos os valores de i.
[0179] Em alguns aspectos, o segmento de código a seguir pode ser usado para evitar a sinalização desnecessária na extensão de VPS. Esse segmento de código pode evitar sinalizar valores para direct_dependency_type uma vez que, conforme descrito acima, esses valores podem ser inferidos com base na indicação de que a camada-base não é uma camada de HEVC:
[0180] Outros valores nas VUI de VPS também podem ser desnecessários ou redundantes após ter sido sinalizado que a camada-base é uma camada de não HEVC. Por exemplo, o valor de sub_layers_vps_max_minus1 também pode ser inferido com base na presença de uma camada-base de não HEVC.
[0181] Por exemplo, sub_layer_vps_max_minus1 plus 1 especifica o número máximo de subcamadas temporais que pode estar presente na sequência de vídeo codificada para a camada i. Como antes, a ID de camada da camada-base é 0. Devido ao fato de que a camada-base é decodificada pela fonte externa e não pelo decodificador (ou seja, o decodificador de SHVC), a camada- base não irá conter quaisquer subcamadas, e então, é desnecessário sinalizar um valor para sub_layers_vps_max_minus1 para uma camada-base de não HEVC. Dessa maneira, um codificador pode ser configurado para inferir esse valor com base no reconhecimento de que a camada-base é uma camada-base de não HEVC.
[0182] Em alguns aspectos, o segmento de código a seguir de vps_extension() pode ser usado para evitar a sinalização do valor de sub_layers_vps_max_minus1 , quando a camada-base for uma camada-base de não HEVC, uma vez que esse valor pode ser desnecessário:
[0183] Outros valores nas VUI de VPS também podem ser desnecessários ou redundantes após ter sido sinalizado que a camada-base é uma camada de não HEVC. Por exemplo, o valor de max_tid_il_ref_pics_plus1 também pode ser inferido com base na presença de uma camada-base de não HEVC.
[0184] Em geral, max_tid_il_ref_pics _plus1 pode ser usada para determinar se uma figuração da camada i, com uma dada TemporalId, pode ou não ser usada para a predição de intercamada para uma figuração da camada j. Um valor igual a 0 indica que as figurações de não IRAP da camada i não são usadas para a predição de intercamada com camada j. Um valor maior que 0 indica que as figurações da camada i com TemporalId menor ou igual a max_tid_il_ref_pics _plus1 pode ser usado como referência para a predição de intercamada para figurações da camada j. Quando não estiver presente, max_tid_il_ref_pics _plus1 é inferida para ser igual a 7.
[0185] No entanto, quando a camada-base for uma camada-base de não HEVC e não estiver presente no fluxo de bits, o valor de max_tid_il_ref_pics _plus 1 (em que a camada-base é camada 0) que indica se uma figuração da camada 0, com uma dada TemporalId, pode ou não ser usada para a predição de intercamada para uma figuração da acamada j se tornar menos útil. Assim, a sinalização explícita desse valor pode ser desnecessária, e pode ser evitada.
[0186] Em alguns aspectos, o segmento de código a seguir pode ser usado em vps_extension() a fim de evitar a sinalização de valores para max_tid_il_ref_pics _plus 1 quando a camada-base for uma camada-base de não HEVC:
FLUXOGRAMA EXEMPLIFICATIVO N° 2
[0187] A Figura 5 é um fluxograma que ilustra um método 500 para codificar informações de vídeo, de acordo com uma modalidade da presente revelação. As etapas ilustradas na Figura 5 podem ser realizadas por um codificador (por exemplo, o codificador de vídeo conforme mostrado na Figura 2A ou na Figura 2B), um decodificador (por exemplo, o decodificador de vídeo conforme mostrado na Figura 3A ou na Figura 3B), ou qualquer outro componente. Por questão de conveniência, o método 500 é descrito como realizado por um criptógrafo, que pode ser o codificador, o decodificador ou um outro componente. O método pode ser um método de decodificação ou um método de codificação.
[0188] O método 500 começa no bloco 501. No bloco 505, o codificador determina se uma camada de referência está em um fluxo de bits. Em uma modalidade, a camada de referência pode ser codificada com o uso de um codec de AVC e/ou um codec de não HEVC. Em alguns aspectos, o codificador ou o processador determina se a camada de referência está incluída no fluxo de bits com base em um valor de um sinalizador ou outro indicador do codec. Tal sinalizador ou outro indicador pode ser recebido da fonte externa ou pode ser determinado pelo método. Em alguns aspectos, os meios para determinar podem incluir um processador. No processo de codificação de vídeo, a determinação da possibilidade de a camada de referência estar incluída no fluxo de bits com base em um valor de um sinalizador ou outro indicador do codec pode incluir gerar uma ou mais estruturas de sintaxe no fluxo de bits. No processo de decodificação de vídeo, a determinação da possibilidade de a camada de referência estar incluída no fluxo de bits com base em um valor de um sinalizador ou outro indicador do codec pode incluir decodificar uma ou mais estruturas de sintaxe a partir do fluxo de bits. Os detalhes das estruturas de sintaxe exemplificativas são descritos no presente documento.
[0189] Em seguida, o codificador determina se processa ou não uma indicação para a camada de referência, com base na possibilidade de a camada de referência estar incluída no fluxo de bits, no bloco 510. Por exemplo, essa determinação pode se basear na possibilidade de a indicação se tornar ou não redundante ou desnecessária, com base na possibilidade de a camada de referência estar incluída no fluxo de bits. Por exemplo, determinadas indicações podem ter um valor conhecido quando uma camada de referência não estiver incluída em um fluxo de bits, de modo que a sinalização da indicação possa ser desnecessária. Em alguns aspectos, a indicação pode incluir uma indicação de um tipo de predição de intercamada para a qual uma dada camada pode ser usada, como a predição de movimento e predição de amostra. Em alguns aspectos, a indicação pode ser uma indicação de inúmeras subcamadas para uma camada específica, que pode ser desnecessário sinalizar por uma camada-base que está sendo codificada pela fonte externa. Em alguns aspectos, a indicação pode ser uma indicação da possibilidade de uma dada camada poder ser ou não usada para a predição de intercamada para outra camada. Em alguns aspectos, os meios para determinar podem incluir um processador.
[0190] No bloco 515, o codificador processa, em um fluxo de bits de vídeo, uma indicação para a camada de referência se a camada de referência estiver incluída no fluxo de bits. Por exemplo, determinadas indicações podem ser processadas apenas quando a camada de referência estiver incluída no fluxo de bits, como quando a camada de referência for codificada com o uso de um codec de HEVC. Em outras situações, essas indicações podem não ser processadas, à medida que as mesmas podem ser desnecessárias ou redundantes. Em alguns aspectos, os meios para determinar podem incluir um processador.
[0191] No bloco 520, o codificador codifica as informações de vídeo com base, pelo menos em parte, na indicação processada. Em alguns aspectos, os meios para codificar podem incluir um processador. O método 500 termina no bloco 525.
[0192] Conforme discutido acima, um ou mais componentes de codificador de vídeo 20 da Figura 2A, de codificador de vídeo 21 da Figura 2B, de decodificador de vídeo 30 da Figura 3A, ou de decodificador de vídeo 31 da Figura 3B (por exemplo, unidade de predição de intercamada 128 e/ou unidade de predição de intercamada 166) podem ser usados para implantar qualquer uma das técnicas discutidas na presente revelação, como determinar se a camada de referência codec é o tipo específico de codec, receber a figuração de camada-base decodificada, armazenar a figuração de camada-base decodificada, e esvaziar a memória.
ARMAZENAMENTO DE FIGURAÇÕES DE CAMADA-BASE DECODIFICADAS NO DPB
[0193] Em alguns aspectos, a figuração de camada-base decodificada fornecida pela fonte externa (como um decodificador de camada-base) para uma unidade de acesso não é armazenada no DPB, ainda assim é marcada como “usada para referência a longo prazo” e, mais adiante, usada para referência de predição de intercamada. Dessa maneira, isso pode ser problemático, à medida que tal figuração decodificada pode não ser usada para referência, como para a referência de predição de intercamada, a menos que a mesma esteja no DPB.
[0194] Devido ao fato de a camada-base (ID de camada 0) no fluxo de vídeo ser uma camada de não HEVC, o decodificador pode não receber uma figuração codificada na camada 0. Como antes, o decodificador, no presente documento, se refere ao decodificador de SHVC, que pode ser usado para decodificar uma ou mais camadas de intensificação. Ao invés disso, a camada-base pode ser decodificada com o uso da fonte externa. Essas fontes externas podem incluir, por exemplo, um decodificador de AVC que é configurado para decodificar a camada-base e para passar a figuração de camada-base decodificada para o decodificador de SHVC. Além da figuração de camada-base decodificada, a fonte externa pode ser configurada para fornecer determinadas outras informações para o decodificador também, conforme descrito acima.
[0195] Dessa maneira, a camada-base pode conter uma figuração decodificada, com ID de camada de 0. O decodificador pode ser configurado para armazenar a figuração de camada-base decodificada no sub-DPB, e para marcar essa figuração como “usada para referência a longo prazo”. Ademais, se uma unidade de acesso tiver pelo menos uma figuração com uma ID de camada maior que 0, a PicOrderCntVal da figuração decodificada de camada-base é definida para ser igual à PicOrderCntVal de qualquer outra figuração na unidade de acesso. De outro modo, a figuração de camada-base é descartada e o sub-DPB para a camada-base é definido para estar vazio, se não houverem outras figurações na unidade de acesso fora a figuração decodificada de camada-base.
[0196] Quando a unidade de acesso tiver pelo menos uma figuração com ID de camada maior que 0, após todas as figurações na unidade de acesso serem decodificadas, o sub-DPB para a camada-base é definido como vazio. Ou seja, o sub-DPB que contém a figuração de camada- base decodificada pode estar vazio após cada figuração na unidade de acesso ter sido decodificada. O tamanho do sub- DPB pode ser definido igual a 1. Assim, o sub-DPB pode armazenar uma figuração, e cada unidade de acesso pode incluir uma figuração decodificada de camada-base.
FLUXOGRAMA EXEMPLIFICATIVO N° 3
[0197] A Figura 6 é um fluxograma que ilustra um método 600 para decodificar informações de vídeo, de acordo com uma modalidade da presente revelação. As etapas ilustradas na Figura 6 podem ser realizadas por um decodificador (por exemplo, o decodificador de vídeo conforme mostrado na Figura 3A ou na Figura 3B), ou qualquer outro componente. Em alguns aspectos, o método determina se a camada de referência está incluída no fluxo de bits com base em um valor de um sinalizador ou uma variável, como um valor incluído em um dentre um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de figuração, ou um conjunto de parâmetros de adaptação. Tal sinalizador ou outro indicador pode ser recebido da fonte externa ou pode ser determinado pelo método. Em alguns aspectos, os meios para determinar podem incluir um processador.
[0198] O método 600 começa no bloco 601. No bloco 605, o decodificador determina que uma camada de referência não está incluída em um fluxo de bits. Em um exemplo, a camada de referência pode ser codificada de acordo com um codec de AVC e/ou um codec de não HEVC. Em alguns aspectos, o método determina se o fluxo de bits inclui uma camada de referência com base em um valor de um sinalizador ou outro indicador do codec. O valor pode estar incluído em um dentre um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de figuração ou um conjunto de parâmetros de adaptação. Tal sinalizador ou outro indicador pode ser recebido da fonte externa ou pode ser determinado pelo método. Em alguns aspectos, os meios para determinar podem incluir um processador.
[0199] Em seguida, o decodificador recebe uma figuração de camada-base decodificada a partir de uma fonte externa, a figuração de camada-base decodificada associada a uma unidade de acesso, no bloco 610. Em um aspecto, a fonte externa pode incluir um outro decodificador, como um decodificador que é configurado para usar um codec de AVC, ou um decodificador que é configurado para usar um codec de não HEVC. Por exemplo, a fonte externa pode incluir um segundo decodificador. Em alguns aspectos, pode haver uma figuração de camada-base decodificada associada a cada unidade de acesso. Em alguns aspectos, os meios para determinar podem incluir um processador.
[0200] O decodificador armazena, então, a figuração de camada-base decodificada em uma memória no bloco 615. A memória pode incluir um DPB ou um sub-DPB. Em alguns aspectos, o sub-DPB pode ser dimensionado de modo que o mesmo possa reter uma, e apenas uma, figuração de camada-base decodificada. Em alguns aspectos, o decodificador pode fornecer adicionalmente uma indicação de que a figuração de camada-base decodificada pode ser usada para a referência a longo prazo. Em alguns aspectos, os meios para armazenar podem incluir uma memória.
[0201] O decodificador decodifica, então, as figurações associadas à unidade de acesso com base na figuração de camada-base decodificada armazenada no bloco 618. Os meios para decodificar podem incluir um processador. O codificador, subsequente à decodificação das figurações associadas à unidade de acesso, esvazia a figuração de camada-base decodificada da memória no bloco 620. Em alguns aspectos, os meios para esvaziar podem incluir um processador. O método 600 termina no bloco 625.
[0202] Conforme discutido acima, um ou mais componentes de codificador de vídeo 20 da Figura 2A, de codificador de vídeo 21 da Figura 2B, de decodificador de vídeo 30 da Figura 3A, ou de decodificador de vídeo 31 da Figura 3B (por exemplo, unidade de predição de intercamada 128 e/ou unidade de predição de intercamada 166) podem ser usados para implantar qualquer uma das técnicas discutidas na presente revelação, como determinar se a camada de referência codec é o tipo específico de codec, receber a figuração de camada-base decodificada, armazenar a figuração de camada-base decodificada, e esvaziar a memória. SINALIZAÇÃO DE UMA FIGURAÇÃO DE IRAP DE CAMADA- BASE
[0203] Em alguns aspectos, pode ser benéfico que um decodificador, como um decodificador de SHVC que opera em uma ou mais camadas de intensificação, para estar ciente de determinadas propriedades da camada-base de não HEVC. Por exemplo, pode ser desejável que o decodificador exija que a fonte externa sinalize se uma dada figuração de camada-base é uma figuração de IRAP ou não. Se a figuração de camada-base for uma figuração de IRAP, pode ser desejável se a fonte externa sinalizar adicionalmente a unidade NAL de IRAP, que pode especificar uma figuração de IDR, uma figuração de CRA ou uma figuração de BLA.
[0204] Quando uma camada-base de não HEVC for usada, cada unidade de acesso pode incluir uma figuração de camada-base decodificada (com ID de camada igual a 0) por uma fonte externa. Quando tal figuração não for fornecida, nenhuma figuração de camada-base pode ser usada para a predição de intercamada para essa unidade de acesso.
[0205] Quando uma figuração de camada-base decodificada for fornecida pela fonte externa, a fonte externa também pode fornecer outras informações. Por exemplo, a fonte externa pode fornecer valores de amostra decodificada. Se o valor chroma_format_idc for igual a 0, a fonte externa pode fornecer uma matriz de amostra SL como um valor de amostra decodificada. De outro modo, a fonte externa pode fornecer 3 matrizes de amostra, SL, SCb, e SCr.
[0206] A fonte externa também pode fornecer uma indicação da possibilidade de a figuração de camada- base decodificada ser ou não uma figuração de IRAP. Por exemplo, essa indicação pode ser encontrada em uma variável chamada de BlIrapPicFlag. Esse sinalizador de figuração de IRAP de camada-base pode indicar se a figuração de camada- base é ou não uma figuração de IRAP. Um valor de 1 pode indicar que a figuração de camada-base é uma figuração de IRAP. Similarmente, se uma variável chamada IrapPicFlag for igual a 1, isso pode indicar que a figuração de camada-base decodificada é uma figuração de não IRAP.
[0207] Quando a figuração de camada-base for uma figuração de IRAP, a fonte externa pode fornecer adicionalmente o tipo de unidade NAL de IRAP. Isso pode especificar uma figuração de IDR, uma figuração de CRA ou uma figuração de BLA. Por exemplo, isso pode ser fornecido como um valor para uma variável nal_unit_type. Essa variável pode ter um valor de IDR_W_RADL, CRA_NUT ou BLA_W_LP, que pode indicar se a figuração de IRAP é uma figuração de IDR, uma figuração de CRA ou uma figuração de BLA, respectivamente.
[0208] Por exemplo, a variável NAL_unit_type pode indicar que a figuração de IRAP de camada-base é IDR_W_RADL. Esse valor pode indicar que a figuração decodificada é uma figuração de IDR e foi decodificada a partir de uma ITU-T H.264 | ISO/IEC 14496-10.
[0209] Em alguns aspectos, a variável NAL_unit_type pode indicar que a figuração de IRAP de camada-base é CRA_NUT. Isso especifica que a figuração decodificada é uma figuração de CRA e foi decodificada a partir de uma figuração codificada de Rec. ITU-T H.264 | ISO/IEC 14496-10 que foi associada a uma mensagem de SEI de ponto de recuperação de Rec. ITU-T H.264 | ISO/IEC 14496-10 com recovery_frame_cnt igual a 0 e broken_link_flag igual a 0.
[0210] Em alguns aspectos, a variável NAL_unit_type pode indicar que a figuração de IRAP de camada-base é BLA_W_LP. Isso especifica que a figuração decodificada é uma figuração de BLA e foi decodificada a partir de uma figuração codificada de Rec. ITU-T H.264 | ISO/IEC 14496-10 que foi associada a uma mensagem de SEI de ponto de recuperação de Rec. ITU-T H.264 | ISO/IEC 14496-10 com recovery_frame_cnt igual a 0 e broken_link_flag igual a 1.
[0211] Opcionalmente, a fonte externa pode indicar também se a figuração é um quadro ou um campo. Então, a figuração é um campo, a fonte externa pode indicar a paridade de campo, como um campo de topo ou um campo de fundo. Se a fonte externa não indicar isso, a figuração decodificada pode ser inferida para ser uma figuração de quadro.
FLUXOGRAMA EXEMPLIFICATIVO N° 4
[0212] A Figura 7 é um fluxograma que ilustra um método 700 para codificar informações de vídeo, de acordo com uma modalidade da presente revelação. As etapas ilustradas na Figura podem ser realizadas por um codificador (por exemplo, o codificador de vídeo conforme mostrado na Figura 2A ou na Figura 2B), um decodificador (por exemplo, o decodificador de vídeo conforme mostrado na Figura 3A ou na Figura 3B), ou qualquer outro componente. Por questão de conveniência, o método 700 é descrito como realizado por um criptógrafo, que pode ser o codificador, o decodificador ou um outro componente.
[0213] O método 700 começa no bloco 701. No bloco 705, o decodificador determina que uma camada de referência não está incluída em um fluxo de bits. Em um exemplo, a camada de referência é decodificada de acordo com um codec de AVC e/ou de acordo com um codec de não HEVC. Em alguns aspectos, o método determina se a camada de referência está incluída no fluxo de bits com base em um valor de um sinalizador ou outro indicador do codec. Tal sinalizador ou outro indicador pode ser recebido da fonte externa ou pode ser determinado pelo método. Em alguns aspectos, os meios para determinar podem incluir um processador. Em alguns aspectos, o valor pode estar incluído em um dentre um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de figuração ou um conjunto de parâmetros de adaptação.
[0214] O decodificador recebe, então, de uma fonte externa, uma figuração de camada-base decodificada, no bloco 710. Em alguns aspectos, a figuração de camada- base pode estar associada a uma unidade de acesso. Em alguns aspectos, a fonte externa pode incluir um outro decodificador. Em alguns aspectos, o outro decodificador pode ser um decodificador de AVC. Em alguns aspectos, os meios para receber podem incluir um processador.
[0215] No bloco 715, o decodificador recebe, da fonte externa, uma indicação de que a figuração é uma figuração de FRAP. Por exemplo, essa indicação pode incluir um sinalizador que indica que a figuração de camada-base é uma figuração de FRAP. Em alguns aspectos, os meios para receber podem incluir um processador. No bloco 720, o decodificador recebe uma segunda indicação da possibilidade de a figuração ser uma dentre uma figuração de IDR, uma figuração de CLA ou uma figuração de BLA. Em alguns aspectos, os meios para receber podem incluir um processador. Em alguns aspectos, a segunda indicação pode ser um elemento de sintaxe que tem três ou mais valores possíveis. No bloco 730, o decodificador codifica as informações de vídeo com base, pelo menos em parte, na primeira e na segunda indicações. Em alguns aspectos, os meios para decodificar podem incluir um processador. O método 700 termina no bloco 730.
[0216] Conforme discutido acima, um ou mais componentes de codificador de vídeo 20 da Figura 2A, de codificador de vídeo 21 da Figura 2B, de decodificador de vídeo 30 da Figura 3A, ou de decodificador de vídeo 31 da Figura 3B (por exemplo, unidade de predição de intercamada 128 e/ou unidade de predição de intercamada 166) podem ser usados para implantar qualquer uma das técnicas discutidas na presente revelação, como determinar se a camada de referência codec é o tipo específico de codec, receber a figuração de camada-base decodificada, armazenar a figuração de camada-base decodificada, e esvaziar a memória.
ASPECTOS ADICIONAIS DE PROJETO
[0217] Em geral, para uma unidade de acesso atual, nenhuma informação de camada-base é fornecida pela fonte externa, ou a fonte externa deve fornecer pelo menos o conjunto de informações proscrito. Se nenhuma informação for fornecida, a figuração de camada-base não será usada para predição de intercamada para a unidade de acesso atual, independente da possibilidade de a figuração de camada-base ser fornecida na unidade de acesso no fluxo de bits de camada-base. Alternativamente, a fonte externa pode ser proscrita para fornecer: (1) os valores de amostra decodificada da figuração decodificada de camada-base, (2) o formato e representação da figuração decodificada de camada-base, incluindo a largura e altura e amostras, o formato de cor, o sinalizador de plano de cor separado, a profundidade de bit luma, e a profundidade de bit de croma, (3) informações quanto a possibilidade de a figuração de camada-base se uma figuração de IRAP ou não, e caso sim, o tio de unidade NAL de IRAP, que pode especificar uma figuração de IDR, uma figuração de CRA, ou a figuração de BLA, e opcionalmente, (4) se a figuração é um quadro ou um campo, e quando um campo, é paridade de campo (um campo de topo ou um campo de fundo). Quando as informações quanto à possibilidade de a figuração ser um quadro ou a campo não é fornecida, a figuração decodificada pode ser inferida como uma figuração de quadro.
[0218] A contagem de ordem de figuração da figuração decodificada de camada-base pode ser definida igual à contagem de ordem de figuração de qualquer figuração de camada de intensificação, caso presente, na mesma unidade de acesso. Nota-se que nesse caso, a contagem de ordem de figuração real de uma figuração de camada-base decodificada pelo decodificador de camada-base de tal modo que um codec escalonável ou multivistas pode ser diferente do valor de contagem de ordem de figuração da mesma figuração quando a mesma é decodificada por um decodificador de AVC. Quando nenhuma figuração de camada de intensificação estiver presente para a unidade de acesso, a figuração decodificada de camada-base não é usada e pode ser descartada.
[0219] A figuração decodificada de camada-base pode ser marcada como “usada para referência a longo prazo”. Para as operações de CPB, a camada-base pode ser considerada como tendo zero bit. Para as operações de DPB, apenas as figurações decodificadas das camadas de intensificação podem ser consideradas.
[0220] Quando a camada-base é não HEVC, general_profile_space na primeira estrutura de sintaxe profile_tier_level() em um VPS pode ser definida igual a 1. Nesse caso, o tipo de codec é sinalizado, e quando a AVC for indicada, as informações de perfil de AVC de três bytes e de nível são sinalizadas, e o restante dos bits na estrutura de sintaxe de profile_tier_level() é reservado.
[0221] Quando a camada-base for não HEVC, pode-se precisar que a sinalização dos três parâmetros de DPB (tamanho de sub-DPB máximo, reordenamento máximo máxima e latência máxima) use a menor quantidade de bits. Pode-se exigir também que nenhuma das estruturas de sintaxe hrd_parameters() se aplique à camada definido como 0 (apenas a camada-base).
[0222] Quando a camada-base for não HEVC, a sinalização desnecessária para a camada-base na extensão de VPS, incluindo VUI de VPS, pode ser evitada, como sub_layers_vps_max_minus1 [0], max_tid_il_ref_pics _plus1 [0] [j], e direct_dependency_type.
SEGMENTOS DE CÓDIGO ADICIONAIS
[0223] O segmento de código exemplificativo a seguir pode ser usado como parte da sintaxe de VUI de VPS, e pode estabelecer definir ou não definir determinados sinalizadores com base, pelo menos em parte, na possibilidade de uma camada-base ser uma camada de HEVC:
[0224] O segmento de código exemplificativo a seguir pode ser usado como parte da sintaxe perfil, camada e nível, e pode estabelecer definir ou não definir determinados sinalizadores com base em um valor de general_profile_space (que, o próprio, pode ser definido com base em um codec usado para uma camada-base de um fluxo de vídeo):
[0225] Em alguns aspectos, quando uma primeira estrutura de sintaxe profile_tier_level() na VPS tiver um sinalizador de general_profile_space igual a 0, a variável HevcBaseLayerFlag pode ser definida igual a 1 e a variável AvcBaseLayerFlag pode ser definida igual a 0. Por exemplo, a variável HevcBaseLayerFlag pode ser usada para indicar se a camada-base de um vídeo específico é codificada com base em um codec de HEVC ou não. Semelhantemente, a variável AvcBaseLayerFlag pode ser usada para indicar se a camada- base de um vídeo específico é codificada com base em um codec de AVC ou não.
[0226] Alternativamente, quando a primeira estrutura de sintaxe profile_tier_level() tiver general_profile_space igual a 1 e base_layer_codec_type igual a 0, a variável AvcBaseLayerFlag pode ser definida igual a 1, e a variável HevcBaseLayerFlag pode ser definida igual a 0. Ademais, nesse cenário, o valor de vps_sub_layer_ordering_info _present_flag pode ser igual a 0 e os valores de vps_max_dec_pic_buffering_minus1 , vps_max_num_reorder_pics , e vps_max_latency_increase_plus1 podem, todos, ser iguais a 0 para todos os valores possíveis de i. Nesse cenário, os decodificadores podem ser configurados para ignorar os valores de vps_sub_layer_ordering_info_present_flag, vps_max_dec_pic_buffering_minus1 , vps_max_num_reorder_pics , e vps_max_latency_increase _plus1 , e o valor de hrd_layer_set_idx pode ser maior que 0.
[0227] Em geral, um sinalizador vps_extension_offset pode especificar um deslocamento de byte, começando a partir da unidade de NAL de VPS, do próximo conjunto de informações codificadas de comprimento fixo que começa a partir de vps_vui_present_flag, quando presente, na unidade de NAL de VPS. Quando presente, os bytes de prevenção de emulação que aparecem na unidade de NAL de VPS são contados para fins de identificação de deslocamento de byte.
[0228] Em alguns aspectos, quando a camada- base não for codificada com o uso de um codec de HEVC (e, portanto, o sinalizador HevcBaseLayerFlag é igual a 0, pode ser necessária que um valor de sps_scaling_list_ref_layer_id seja maior que 0. Em geral, sps_scaling_list_ref_layer_id especifica a camada para o qual o SPS ativo está associado aos mesmos dados de lista de escalonamento como o SPS atual.
[0229] Em geral, pps_scaling_list_ref_layer_id especifica a camada para a qual o PPS ativo tem os mesmos dados de lista de escalonamento como o PPS atual. O valor de pps_scaling_list_ref_layer_id deve estar na faixa de 0 a 62, inclusive. Em alguns aspectos, quando a camada-base de um vídeo não for uma camada-base de HEVC (ou seja, HevcBaseLayerFlag é igual a 0), pode ser uma exigência de conformidade de fluxo de bits que pps_scaling_list_ref_layer_id seja maior que 0.
SEMÂNTICA DE PERFIL, CAMADA E NÍVEL
[0230] Em geral, quando um valor de general_profile_space não for fornecido, esse valor é inferido para ser 0. No entanto, se o valor de general_profile_space for igual a 1, um valor de base_layer_codec_type igual a 0 pode especificar que a camada-base se adéqua a Rec. ITU-T H.264 | ISO/IEC 14496-10. Outros valores de base_layer_codec_type, na faixa de 1 a 63, inclusive, podem ser reservados para uso futuro por ITU-T | ISO/IEC.
[0231] Ademais, avc_base_profile_level_idc pode indicar o ponto de conformidade da camada-base Rec. ITU-T H.264 | ISO/IEC 14496-10. Por exemplo, avc_base _profile_level_idc pode ter o mesmo valor que os três bytes em Rec. ITU-T H.264 | ISO/IEC 14496-10 compreendido de profile_idc, constraint_set0_flag, constraint_setl_flag, constraint_set2_flag, constraint_set3_flag, constraint_set4_flag, constraint_set5_flag, reserved_zero_2bits, e level_idc do conjunto de parâmetros de sequência de Rec. ITU-T H.264 | ISO/IEC 14496-10.
[0232] Adicionalmente, reserved_zero_24bits e reserved_zero_32bits devem ser, ambos, iguais a 0, e outros podem ser reservados para uso futuro por ITU-T | ISO/IEC. Os decodificadores podem ser configurados para ignorar os valores tanto de reserved_zero_24bits quanto de reserved_zero_32bits. Por exemplo, o segmento de código a seguir pode ser usado para definir valores de reserved_zero_24bits e reserved_zero_32bits quando general_profile_space for definido para 1:
PROCESSO DE DECODIFICAÇÃO GERAL
[0233] Em geral, quando a camada-base de um vídeo for uma camada-base de AVC (ou seja, quando AvcBaseLayerFlag for igual a 1), o seguinte se aplica:
[0234] Pode não haver figuração codificada com ID de camada 0 no fluxo de bits. Isso é devido ao fato de que a camada-base é uma camada de não HEVC, e então, a figuração para a camada-base pode surgir de uma fonte externa, em vez de estar incluída no fluxo de bits. O tamanho do sub-DPB para a ID de camada 0 é definido igual a um.
[0235] Os valores de pic_width_in_luma_samples, pic_height_in_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, e bit_depth_chroma_minus8 para figurações decodificadas com ID de camada 0 são fornecidos pela fonte externa.
[0236] Para cada unidade de acesso, uma figuração decodificada com ID de camada 0 pode ser fornecida pela fonte externa. Quando não fornecida, nenhuma figuração com ID de camada 0 é usada para predição de intercamada para a unidade de acesso atual. Quando tal figuração for fornecida, a figuração também pode incluir valores de amostra decodificada (1 matriz de amostra SL se chroma_format_idc for igual a 0 ou 3 matrizes de amostra SL, SCb e SCr, de outro modo), o valor da variável BlIrapPicFlag, e quando BlIrapPicFlag for igual a 1, o valor da nal_unit_type da figuração decodificada. Ademais, BlIrapPicFlag igual a 1 especifica que a figuração decodificada é uma figuração de IRAP. IrapPicFlag igual a 1 especifica que a figuração decodificada é uma figuração de não IRAP. O valor fornecido de nal_unit_type da figuração decodificada deve ser igual a IDR_W_RADL, CRA_NUT ou BLA_W_LP. Em geral, um valor de nal_unit_type igual a IDR_W_RADL especifica que a figuração decodificada é uma figuração de IDR e foi decodificada a partir de uma figuração de IDR de Rec. ITU-T H.264 | ISO/IEC 14496-10. Um valor de nal_unit_type igual a CRA_NUT especifica que a figuração decodificada é uma figuração de CRA e foi decodificada a partir de uma figuração codificada de Rec. ITU-T H.264 | ISO/IEC 14496-10 que foi associada a uma ITU- T H.264 | ISO/IEC 14496-10 mensagem de SEI de ponto de recuperação com recovery_frame_cnt igual a 0 e broken_link_flag igual a 0. Um valor de nal_unit_type igual a BLA_W_LP especifica que a figuração decodificada é uma figuração de BLA e foi decodificada a partir de uma figuração codificada de Rec. ITU-T H.264 | ISO/IEC 14496-10 que foi associada a uma mensagem de SEI de ponto de recuperação de Rec. ITU-T H.264 | ISO/IEC 14496-10 com recovery_frame_cnt igual a 0 e broken_link_flag igual a 1. A fonte externa pode indicar opcionalmente se a figuração é um quadro ou um campo, e quando um campo, a paridade de campo (um campo de topo ou um campo de fundo). Se não for fornecido, a figuração decodificada é inferida para ser uma figuração de quadro.
[0237] Em geral, a figuração decodificada com ID de camada 0 é armazenada no sub-DPB e é marcada como “usada para referência a longo prazo”. Se a unidade de acesso tiver pelo menos uma figuração com ID de camada maior que 0, a PicOrderCntVal da figuração decodificada para ID de camada 0 é definida igual à PicOrderCntVal de qualquer figuração com ID de camada maior que 0 na unidade de acesso. De outro modo, a figuração decodificada para ID de camada 0 é descartada e o sub-DPB para ID de camada 0 é definido como vazio. Quando a unidade de acesso tiver pelo menos uma figuração com ID de camada maior que 0, após todas as figurações na unidade de acesso serem decodificadas, o sub-DPB para a camada com ID de camada 0 é definido como vazio.
OUTRAS CONSIDERAÇÕES
[0238] As informações e os sinais revelados no presente documento podem ser representados com o uso de qualquer uma dentre uma variedade de tecnologias e técnicas diferentes. Por exemplo, os dados, as instruções, os comandos, as informações, os sinais, os bits, os símbolos e os chips que podem ser referenciados ao longo da descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, por campos magnéticos ou por partículas, campos ópticos ou partículas, ou qualquer combinação dos mesmos.
[0239] Os vários blocos lógicos, modelos, circuitos e etapas de algoritmo ilustrativos descritos em conjunto com as modalidades reveladas no presente documento podem ser implantados como hardware eletrônico, software de computador ou combinações de ambos. Para ilustrar claramente essa intercambialidade de hardware e software, vários componentes, blocos, modelos, circuitos e etapas ilustrativos foram descritos acima em termos gerais de sua funcionalidade. Se tal funcionalidade for implantada como hardware ou software, depende das restrições de projeto e pedido particular impostas no sistema geral. Os versados na técnica podem implantar a funcionalidade descrita de vários modos para cada aplicação específica, mas tais decisões de implantação não devem ser interpretadas como ocasionando um afastamento do escopo da presente invenção.
[0240] As técnicas descritas no presente documento podem ser implantadas em hardware, software, firmware ou em qualquer combinação dos mesmos. Tais técnicas podem ser implantadas em qualquer um dentre uma variedade de dispositivos como computadores para fins gerais, dispositivo de comunicação sem fio fones, ou dispositivos de circuito integrado que tem múltiplos usos incluindo a aplicação em fones de dispositivo de comunicação sem e outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implantados em um dispositivo lógico integrado ou separadamente como dispositivos lógicos discretos, mas interoperáveis. Se implantadas em software, as técnicas podem ser realizadas, pelo menos em parte, por um meio de armazenamento de dados legível por computador que compreende código de programa que inclui instruções que, quando executadas, realiza um ou mais dos métodos descritos acima. O meio de armazenamento de dados legível por computador pode formar parte de um produto de programa de computador, que pode incluir materiais de embalagem. O meio legível por computador pode compreender memória ou mídia de armazenamento de dados, como memória de acesso aleatório (RAM) como memória de acesso aleatório dinâmica síncrona (SDRAM), memória apenas de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória apenas de leitura eletricamente programável e apagável (EEPROM), memória FLASH, mídia de armazenamento de dados magnética ou óptica, e semelhantes. As técnicas podem, adicional ou alternativamente, ser realizadas, pelo menos em parte, por um meio de comunicação legível por computador que transporta ou comunica código de programa na forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador, como sinais ou ondas propagados.
[0241] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para fins gerais, circuitos integrados específicos de aplicação (ASICs), matrizes lógicas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógicos discretos ou integrados equivalente. Tal processador pode ser configurado para realizar qualquer uma dentre as técnicas descritas nesta revelação. Um processador para fins gerais pode ser um microprocessador, mas alternativamente, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador também pode ser implantado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo de DSP, ou qualquer outra tal configuração. Dessa maneira, o termo “processador”, conforme usado no presente documento pode se referir a qualquer uma dentre a estrutura anterior, qualquer combinação da estrutura anterior, ou qualquer outra estrutura ou aparelho adequado para a implantação das técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida nos módulos de software ou módulos de hardware dedicado configurado para codificar e decodificar, ou incorporado em um codificador-decodificador de vídeo combinado (CODEC). Também, as técnicas poderiam ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[0242] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um fone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um chipset). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização através de diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por um conjunto de unidades de hardware interoperativas, que incluem um ou mais processadores conforme descrito acima, em conjunto com o software e/ou o firmware adequado.
[0243] Várias modalidades da invenção foram descritas. Essas e outras modalidades estão dentro do escopo das reivindicações a seguir.

Claims (4)

1. Método de decodificação de informações de vídeo, caracterizadopelo fato de que compreende: receber um fluxo de bits que compreende um número de camadas de aperfeiçoamento de acordo com HEVC ou uma extensão escalonável da mesma, e um sinalizador indicando se uma camada de base codificada de acordo com um codec de Codificação de Vídeo Avançada está incluída no fluxo de bits; determinar se a camada de base para as camadas de aperfeiçoamento está incluída no fluxo de bits com base em um valor do sinalizador; e em resposta à determinação de que a camada de base não está incluída no fluxo de bits, ignorar, para cada camada de aperfeiçoamento, um valor de um parâmetro vps_max_dec_pic_buffering_minus1 que sinaliza um tamanho máximo do BUFFER de imagem decodificada para a camada de aperfeiçoamento ao decodificar a camada de aperfeiçoamento e inferir o tamanho máximo do BUFFER de imagem decodificada para a camada de aperfeiçoamento .
2. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que determinar se a camada base está incluída no fluxo de bits compreende determinar se a camada de base está incluída no fluxo de bits com base em um valor de um sinalizador incluído em um dentre um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, ou um conjunto de parâmetros de adaptação.
3. Aparelho configurado para decodificar informações de vídeo, caracterizadopelo fato de que compreende: uma memória configurada para armazenar as informações de vídeo; um processador em comunicação com a memória, o processador configurado para: receber um fluxo de bits que compreende um número de camadas de aperfeiçoamento de acordo com HEVC ou uma extensão escalonável da mesma, e um sinalizador indicando se uma camada de base codificada de acordo com um codec de Codificação de Vídeo Avançada está incluída no fluxo de bits; determinar se a camada de base para as camadas de aperfeiçoamento está incluída no fluxo de bits com base em um valor do sinalizador; e em resposta à determinação de que a camada de base não está incluída no fluxo de bits, ignorar, para cada camada de aperfeiçoamento, um valor de um parâmetro vps_max_dec_pic_buffering_minus1 que sinaliza um tamanho máximo do BUFFER de imagem decodificada para a camada de aperfeiçoamento ao decodificar a camada de aperfeiçoamento , e inferir o tamanho máximo do BUFFER de imagem decodificada para a camada de aperfeiçoamento .
4. Memória caracterizadapelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido na reivindicação 1 ou 2.
BR112016015931-4A 2014-01-08 2015-01-07 Suporte de camada-base de não hevc em extensões de muticamadas de hevc BR112016015931B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461925149P 2014-01-08 2014-01-08
US61/925,149 2014-01-08
US14/590,897 US20150195549A1 (en) 2014-01-08 2015-01-06 Support of non-hevc base layer in hevc multi-layer extensions
US14/590,897 2015-01-06
PCT/US2015/010472 WO2015105868A1 (en) 2014-01-08 2015-01-07 Support of non-hevc base layer in hevc multi-layer extensions

Publications (2)

Publication Number Publication Date
BR112016015931A2 BR112016015931A2 (pt) 2017-08-08
BR112016015931B1 true BR112016015931B1 (pt) 2023-09-05

Family

ID=

Similar Documents

Publication Publication Date Title
ES2854274T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
ES2879635T3 (es) Vaciado de imágenes e inferencia de parámetros de búfer de imágenes decodificadas para flujos de bits multicapa
ES2744201T3 (es) Dispositivo y procedimiento para la codificación escalable de información de vídeo
BR112016024233B1 (pt) Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas
ES2778463T3 (es) Inferencia mejorada de indicador de no emisión de imagen previa en codificación de video
KR102119296B1 (ko) Hevc 멀티-계층 확장물들에서 비-hevc 기본 계층의 지원
EP3090551B1 (en) Support of base layer of a different codec in multi-layer video coding
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
BR112016001223B1 (pt) Aparelho e método para codificar ou decodificar informações de vídeo e memória legível por computador
BR112016021473B1 (pt) Método e aparelho para codificar informação de vídeo usando extensão escalável para codificação de vídeo de alta eficiência, shvc, ou codificação de vídeo de alta eficiência de múltiplas vistas, mv-hevc, assim como memória legível por computador
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
BR112015023800B1 (pt) Dispositivo e método para codificação escalonável de informações de vídeo
US9848199B2 (en) Device and method for scalable coding of video information
KR20160072124A (ko) 비디오 정보의 스케일러블 코딩을 위한 디바이스 및 방법
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
BR112016015931B1 (pt) Suporte de camada-base de não hevc em extensões de muticamadas de hevc
BR112016015918B1 (pt) Suporte de camada base não-hevc em extensões de muticamada de hevc
BR112016015568B1 (pt) Método e aparelho para codificar ou decodificar dados 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
BR112016001121B1 (pt) Dispositivo e método para codificação escalável de informações de vídeo e memória legível por computador
BR112016022251B1 (pt) Uso de mensagens de sei de hevc específicas para codecs de vídeo de multicamada
BR112016022253B1 (pt) Dispositivo para associar semânticas de informações de comunicação de vídeo, método para associar semânticas de informações de codificação de vídeo e memória
BR112016015560B1 (pt) Método e aparelho para codificar informações de vídeo de um fluxo de bits de múltiplas camadas e memória legível por computador