BR112016015560B1 - 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 - Google Patents

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 Download PDF

Info

Publication number
BR112016015560B1
BR112016015560B1 BR112016015560-2A BR112016015560A BR112016015560B1 BR 112016015560 B1 BR112016015560 B1 BR 112016015560B1 BR 112016015560 A BR112016015560 A BR 112016015560A BR 112016015560 B1 BR112016015560 B1 BR 112016015560B1
Authority
BR
Brazil
Prior art keywords
video
image
unit
throwaway
block
Prior art date
Application number
BR112016015560-2A
Other languages
English (en)
Other versions
BR112016015560A2 (pt
Inventor
Adarsh Krishnan Ramasubramonian
Fnu HENDRY
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/585,041 external-priority patent/US20150195564A1/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016015560A2 publication Critical patent/BR112016015560A2/pt
Publication of BR112016015560B1 publication Critical patent/BR112016015560B1/pt

Links

Abstract

MÉTODO PARA CODIFICAR UM CONJUNTO DE IMAGEM DE REFERÊNCIA (RPS) EM CODIFICAÇÃO MULTICAMADA Um método para codificação de um conjunto de imagem de referência (RPS) em codificação multicamada é divulgado. Em um aspecto, o método pode envolver a determinação de se uma imagem atual da informação de vídeo é uma imagem descartável. O método também pode envolver abster-se de incluir a imagem atual em um RPS com base na determinação de que a imagem atual é uma imagem descartável. O método pode ainda envolver codificar a informação de vídeo com base, pelo menos em parte, no RPS.

Description

CAMPO TÉCNICO
[0001] Esta divulgação refere-se ao campo da codificação e compressão de vídeo, particularmente a codificação de vídeo escalável, codificação de vídeo multivista, e/ou codificação de vídeo tridimensional (3D).
FUNDAMENTOS Descrição da Técnica Relacionada
[0002] Capacidades de vídeo digitais podem ser incorporadas em uma ampla faixa de dispositivos, incluindo televisores digitais, sistemas de transmissão diretos digitais, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores desktop ou computadores laptop, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones de rádio celular ou via satélite, dispositivos de teleconferência de vídeo, e semelhantes. Dispositivos de vídeo digital implementar técnicas de compressão de vídeo, tais como aquelas descritas nos padrões definidos pelo Moving Picture Experts Group-2 (MPEG-2), MPEG-4, Internacional Telegraph Union-Telecommunication Standardization Sector (ITU-T) H.263, ITU-T H.264 / MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de codificação de vídeo de alta eficiência (HEVC), e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de forma mais eficiente através da aplicação de tais técnicas de codificação de vídeo.
[0003] Uma sequência de vídeo codificada pode incluir um conjunto de imagem de referência (RPS) que está associado com uma imagem e contém listas de imagem de referência que identificam as imagens que podem ser usadas para a interpredição da imagem associada ou quaisquer imagens seguintes. Algumas padrões de codificação de vídeo incluem uma indicação associada com uma imagem que indica se a imagem associada não é usada como referência, e, assim, pode ser descartada, sob certas condições.
SUMÁRIO
[0004] Os sistemas, métodos e dispositivos desta divulgação cada um tem vários aspectos inovadores, nenhum deles sendo o único responsável pelos atributos desejáveis aqui divulgados.
[0005] Em um aspecto, um método para codificação de informação de vídeo de um fluxo de bits multicamada compreende determinar se uma imagem atual da informação de vídeo é uma imagem descartável e abster-se de incluir a imagem atual em um conjunto de imagem de referência (RPS) com base na determinação de que a imagem atual é uma imagem descartável.
[0006] Em outro aspecto, um dispositivo para a codificação de informação de vídeo compreende uma memória configurada para armazenar informação de vídeo e um processador em comunicação com a memória e configurado para: determinar se uma imagem atual da informação de vídeo é uma imagem descartável e abster-se de incluir a imagem atual em um conjunto de imagem de referência (RPS) com base na determinação de que a imagem atual é uma imagem descartável.
[0007] Em ainda outro aspecto, um aparelho compreende meios para determinar se uma imagem atual da informação de vídeo é uma imagem descartável e meios para abster de incluir a imagem atual em um RPS com base na determinação de que a imagem atual é uma imagem descartável.
[0008] Em ainda outro aspecto, um meio de armazenamento legível por computador não transitório, tendo armazenado nele instruções que, quando executadas, fazem com que um processador de um dispositivo: determine se uma imagem atual é uma imagem descartável e abstenha-se de incluir a imagem atual em um RPS com base na determinação de que a imagem atual é uma imagem descartável.
BREVE DESCRIÇÃO DOS DESENHOS
[0009] A figura 1A é um diagrama de blocos que ilustra um exemplo de codificação de vídeo e o sistema de decodificação que pode utilizar técnicas de acordo com os aspectos descritos nesta divulgação.
[0010] A figura 1B é um diagrama de blocos que ilustra um outro exemplo de codificação de vídeo e o sistema de decodificação que pode executar técnicas de acordo com os aspectos descritos nesta divulgação.
[0011] A figura 2A é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos nesta divulgação.
[0012] A figura 2B é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos nesta divulgação.
[0013] A figura 3A é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos nesta divulgação.
[0014] A figura 3B é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos nesta divulgação.
[0015] A figura 4 é um diagrama de blocos que ilustra uma unidade de acesso de um fluxo de bits multicamada de acordo com os aspectos descritos nesta divulgação.
[0016] A figura 5 é um diagrama de blocos que ilustra um exemplo de como um RPS é gerado por um codificador ou decodificador.
[0017] As figuras 6-8 são fluxogramas de processos para a codificação ou decodificação de informação de vídeo de acordo com os aspectos descritos nesta divulgação ilustram.
DESCRIÇÃO DETALHADA
[0018] Certas modalidades aqui descritas referem- se ao fim de unidades de camada de acesso à rede (NAL) de fluxo de bits (EoB) e RPSs para codificação de vídeo de multicamada no contexto de codecs de vídeo avançado, tais como Codificação de Vídeo de Alta Eficiência (HEVC). Mais especificamente, a presente descrição refere-se a sistemas e métodos para melhorar o desempenho na codificação ou decodificação de unidades de NAL EoB e RPSs nas extensões multivista e escalável de HEVC, nomeadamente MV-HEVC e SHVC.
[0019] Na descrição abaixo, H.264/ técnicas de Codificação de Vídeo Avançada (AVC) relacionadas com certas modalidades são descritas; técnicas de padrão HEVC e relacionadas também são discutidas. Em particular, alguns esquemas de codificação de vídeo mantém um conjunto de imagem de referência (RPS) associado com uma imagem da sequência de vídeo codificado (CVS). O RPS para uma determinada imagem contém um conjunto de imagens de referência, incluindo todas as imagens de referência anteriores à imagem associada em ordem de decodificação que pode ser usado para a interpredição da imagem associada ou qualquer imagem após a imagem associada em ordem de decodificação. Uma imagem também pode ser indicada como descartável quando a imagem não é usada como referência para a predição intercamada, nem para interpredição por qualquer outra imagem. Esquemas de codificação convencionais não impedem uma imagem descartável de ser incluída em um RPS. Assim, se a imagem descartável é descartada (ou incorretamente decodificada) a partir do fluxo de bits, um decodificador pode incorretamente inferir uma perda.
[0020] Esta divulgação refere-se à semântica para esquemas de codificação multicamadas que podem impedir que os decodificadores de forma incorreta inferem uma perda quando uma imagem descartável perde (ou incorretamente decodificada) a partir do fluxo de bits. Em algumas implementações, imagens descartáveis não são permitidas de serem incluídas em nenhum dos RPSs intercamada ou RPSs termporais. Assim, um decodificador não irá incorretamente inferir uma perda devido à queda (ou decodificação incorreta) de uma imagem descartável.
[0021] Enquanto certas modalidades são aqui descritas no contexto da HEVC e/ou padrões H.264, um versado comum na técnica pode apreciar que os sistemas e métodos aqui divulgados podem ser aplicáveis a qualquer padrão de codificação de vídeo apropriado. Por exemplo, modalidades aqui divulgadas podem ser aplicáveis a um ou mais dos seguintes padrões: International Telecommunication Union (UIT) Telecommunication Standardization Sector (ITU- T) H.261, International Telecommunication for Standardization / Internacional Electrotechnical Commission (ISO/IEC) MPEG-1 Visual, H.262 ITU-T 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 as suas extensões escaláveis e multivistas.
[0022] HEVC geralmente segue a estrutura de padrões de codificação de vídeo anteriores em muitos aspectos. A unidade de predição no HEVC é diferente das unidades de predição (por exemplo, macroblocos) em certos padrões de codificação de vídeo anteriores. De fato, o conceito de um macrobloco não existe no HEVC como entendido em certos padrões de codificação de vídeo anteriores. Um macrobloco é substituído por uma estrutura hierárquica com base em um esquema quadtree, o que pode prover uma elevada flexibilidade, entre outros benefícios possíveis. Por exemplo, no sistema 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 referir-se a unidade básica de divisão de região. CU pode ser considerada análoga ao conceito de macrobloco, mas HEVC não restringe o tamanho máximo de CUs e pode permitir a divisão recursiva em quatra CUs de igual tamanho para melhorar a adaptabilidade do conteúdo. PU pode ser considerada a unidade básica de inter / intrapredição e uma única PU pode conter múltiplas partições de forma arbitrária para efetivamente codificar padrões de imagem irregular. TU pode ser considerada a unidade básica de transformada. TU pode ser definida independentemente da PU; No entanto, o tamanho de uma TU pode ser limitado ao tamanho da CU a que a TU pertence. Esta separação da estrutura do bloco em três conceitos diferentes pode permitir que cada unidade seja otimizada de acordo com o respectivo papel da unidade, o que pode resultar no aumento da eficiência de codificação.
[0023] Para fins de ilustração, certas modalidades aqui descritas são descritas com exemplos incluindo apenas duas camadas (por exemplo, uma camada inferior, tais como a camada de base, e uma camada superior, como a camada de acumulação) de dados de vídeo. Uma "camada" de dados de vídeo pode, em geral referir-se a uma sequência de imagens que possui pelo menos uma característica comum, tal como uma vista, uma taxa de quadro, uma resolução, ou semelhante. Por exemplo, uma camada pode incluir dados de vídeo associados com uma vista específica (por exemplo, em perspectiva) de dados de vídeo multivistas. Como outro exemplo, uma camada pode incluir dados de vídeo associados com uma camada especial de dados de vídeo escaláveis. Assim, esta divulgação pode indiferentemente referir-se a uma camada e uma vista de dados de vídeo. Isto é, uma vista de dados de vídeo pode ser referida como uma camada de dados de vídeo, e uma camada de dados de vídeo pode ser referida como uma vista de dados de vídeo. Além disso, um codec de multicamada (também referido como um codificador de vídeo multicamada ou codificador-decodificador multicamada) pode juntamente referir-se a um codec multivista ou um codec escalável (por exemplo, um codec configurado para codificar e/ou dados de vídeo de decodificação usando MV-HEVC, 3D-HEVC, SHVC, ou outra técnica de codificação multicamada). Codificação de vídeo e decodificação de vídeo tanto pode ser geralmente referido como codificação de vídeo. Deve entender-se que tais exemplos podem ser aplicáveis a configurações de base incluindo múltiplas camadas de base e/ou camadas de melhoramento. Além disso, para facilitar a explicação, a seguinte divulgação inclui os termos "quadros" ou "blocos" com referência a certas modalidades. No entanto, estes termos não pretendem ser limitativos. Por exemplo, as técnicas descritas a seguir podem ser usadas com quaisquer unidades de vídeo adequadas, tais como blocos (por exemplo, CU, PU, TU, macroblocos, etc.), fatias, quadros, etc.
Padrões de Codificação de Vídeo
[0024] Uma imagem digital, como uma imagem de vídeo, uma imagem de TV, uma imagem estática ou uma imagem gerada por um gravador de vídeo ou um computador, pode consistir em pixels ou amostras dispostas em linhas horizontais e verticais. O número de pixels em uma única imagem está tipicamente na casa das dezenas de milhares. Cada pixel contém, tipicamente, informações de luma e croma. Sem compressão, a grande quantidade de informação a ser transmitida a partir de um codificador para um decodificador de imagem tornaria transmissão de imagem em tempo real impossível. Para reduzir a quantidade de informação a ser transmitida, um número de diferentes métodos de compressão, como os padrões JPEG, MPEG e H.263, têm sido desenvolvidos.
[0025] Padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo as suas extensões escaláveis e multivistas.
[0026] Além disso, um padrão de codificação de vídeo, ou seja, HEVC, foi desenvolvido pela Joint Collaboration Team on Video Coding (JCT-VC) de ITU-T Video Coding Experts Group (VCEG) e ISO/IEC MPEG. A citação completa para o Projeto HEVC 10 é o documento JCTVC-L1003, Bross et al., "High Efficiency Video Coding (HEVC) Texto Specification Draft 10", Joint Collaboration Team on Video Coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12° Encontro: Genebra, Suíça, 14 de janeiro de 2013 a 23 de janeiro de 2013. A extensão multivista para HEVC, ou seja, MV-HEVC, e a extensão escalável para HEVC, chamada SHVC, também estão sendo desenvolvidas pelo JCT-3V (ITU-T/ISO/IEC Joint Collaborative Tema on 3D video Coding Extension Development) e JCT-VC, respectivamente.
Sistema de Codificação de Vídeo
[0027] Vários aspectos dos novos sistemas, aparelhos, e métodos são descritos mais completamente a seguir com referência aos desenhos anexos. Esta divulgação pode, no entanto, ser realizada de muitas formas diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apresentada ao longo desta divulgação. Em vez disso, estes aspectos são providas para que esta divulgação seja minuciosa e completa, e irão transmitir totalmente o âmbito da descrição para os especialistas na técnica. Com base nos ensinamentos aqui um versado na técnica deveria apreciar que o âmbito da descrição destina-se a cobrir qualquer aspecto dos novos sistemas, aparelhos e métodos aqui descritos, se implementados independentemente de, ou combinados com qualquer outro aspecto da presente divulgação. Por exemplo, um aparelho pode ser implementado ou um método pode ser praticado utilizando qualquer número dos aspectos aqui enunciados. Além disso, o âmbito da presente descrição destina-se a abranger um aparelho ou método que é praticado usando outra estrutura, funcionalidade, ou estrutura e funcionalidade, em complemento ou outro diferente dos vários aspectos da presente divulgação aqui estabelecidos. Deve ser entendido que qualquer aspecto aqui descrito pode ser concretizado por um ou mais elementos de uma reivindicação.
[0028] Embora os aspectos particulares sejam aqui descritos, muitas variações e permutações destes aspectos caem dentro do âmbito da divulgação. Embora alguns benefícios e vantagens dos aspectos preferidos sejam mencionados, o âmbito da divulgação não se destina a ser limitado aos benefícios particulares, utilizações ou objetivos. Em vez disso, os aspectos da presente descrição destinam-se a ser amplamente aplicáveis a diferentes tecnologias sem fio, as configurações do sistema, redes e protocolos de transmissão, algumas das quais são ilustradas a título de exemplo nas figuras e na descrição seguinte dos aspectos preferidos. A descrição detalhada e os desenhos são meramente ilustrativos da divulgação em vez de limitar, o âmbito da descrição que está sendo definido pelas reivindicações anexas e seus equivalentes.
[0029] Os desenhos anexos ilustram exemplos. Os elementos indicados por números de referência nos desenhos anexos correspondem a elementos indicados por números de referência como na descrição seguinte. Nesta divulgação, elementos com 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 usados para referirem-se a diferentes elementos de um mesmo tipo ou similar.
[0030] A figura 1A é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplar 10 que pode utilizar as técnicas de acordo com os aspectos descritos nesta divulgação. Tal como usado aqui descrito, o termo "codificador de vídeo" refere-se genericamente a ambos os codificadores de vídeo e decodificadores de vídeo. Nesta divulgação, os termos "codificação de vídeo" ou "codificação" podem referir-se, genericamente, a codificação de vídeo e decodificação de vídeo. Além de codificadores de vídeo e decodificadores de vídeo, os aspectos descritos na presente aplicação podem ser estendidos a outros dispositivos relacionados, como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e recodificar outro fluxo de bits) e middleboxes (por exemplo, dispositivos que podem modificar, transformar e/ou manipular um fluxo de bits).
[0031] Como mostrado na figura 1A, o sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 que gera dados de vídeo codificados para serem decodificados em um momento posterior por um dispositivo de destino 14. No exemplo da figura 1A, o dispositivo de origem 12 e dispositivo de destino 14 constituem dispositivos separados. Note-se, no entanto, que o dispositivo de destino 14 e o dispositivo de origem 12 podem ser ligados ou parte do mesmo dispositivo, como mostrado no exemplo da figura 1B.
[0032] Com referência, mais uma vez, à figura 1A, o dispositivo de origem 12 e o dispositivo de destino 14 podem compreender, respectivamente, qualquer um de uma ampla faixa de dispositivos, incluindo computadores desktop, computadores notebook (por exemplo, laptop), tablets, set-top boxes, aparelhos de telefone, como os chamados "smartphones", os chamados "smartpads", televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de jogos de vídeo, dispositivos de streaming de vídeo, ou algo semelhante. Em várias modalidades, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicações sem fio.
[0033] O dispositivo de destino 14 pode receber, via link 16, os dados de vídeo codificados para serem decodificados. O link 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. No exemplo da figura 1A, o link 16 pode compreender um meio de comunicação para permitir que o dispositivo de origem 12 transmita dados de vídeo codificados para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fio, tal como um espectro de rádio frequê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 pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal 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 dispositivo de origem 12 para o dispositivo de destino 14.
[0034] Em alternativa, os dados codificados podem ser produzidos a partir de uma interface de saída 22 para um dispositivo de armazenamento 31 (opcionalmente presente). Da mesma forma, os dados codificados podem ser acessados a partir do dispositivo de armazenamento 31 por uma interface de entrada 28, por exemplo, do dispositivo de destino 14. O dispositivo de armazenamento 31 pode incluir qualquer uma de uma variedade de meios de armazenamento de dados distribuídos ou localmente acessados, 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 o armazenamento de dados de vídeo codificados. Em um outro exemplo, o dispositivo de armazenamento 31 pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode conter o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento 31 através de streaming ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivos exemplares incluem um servidor de web (por exemplo, para um site), um servidor de Protocolo de Transferência de Arquivo (FTP), dispositivos de armazenamento ligado à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo acesso à Internet. Isto pode incluir um canal sem fio (por exemplo, uma conexão de rede de área local sem fio (WLAN)), uma conexão cabeada (por exemplo, uma linha de assinante digital (DSL), um modem por 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 31 pode ser uma transmissão ao vivo, uma transmissão de download, ou uma combinação de ambos.
[0035] As técnicas desta divulgação não se limitam a aplicações sem fio ou configurações. As técnicas podem ser aplicadas a codificação de vídeo em apoio de qualquer um de uma variedade de aplicações multimídia, como transmissões de televisão através do ar, transmissões de televisão por cabo, emissões de televisão por satélite, transmissões de vídeo por streaming, por exemplo, através da Internet (por exemplo, streaming adaptativo dinâmico sobre o Protocolo de Transferência de Hipertexto (HTTP), etc.), codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações. Em alguns exemplos, o sistema de codificação de vídeo 10 pode ser configurado para suportar uma transmissão de vídeo de uma via ou de duas vias para suportar aplicativos tais como streaming de vídeo, reprodução de vídeo, transmissão de vídeo, e/ou vídeo telefonia.
[0036] No exemplo da figura 1A, o dispositivo de origem 12 inclui uma fonte de vídeo 18, o codificador de vídeo 20 e a interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador / demodulador (modem) e/ou de um transmissor. No dispositivo de origem 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmara de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente, uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo, e/ou um sistema de computação gráfica para gerar dados de computação gráfica como o vídeo de origem, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 é uma câmara de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os chamados "celulares com câmera" ou "celulares com vídeo", tal como ilustrado no exemplo da figura 1B. No entanto, as técnicas descritas nesta divulgação podem ser aplicáveis à codificação de vídeo, em geral, e podem ser aplicadas para aplicações sem fio e/ou com fio.
[0037] O vídeo capturado, pré-capturado, ou gerado por computador pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos para o dispositivo de destino 14 através da interface de saída 22 do dispositivo de origem 12. Os dados de vídeo codificados podem também (ou alternativamente) ser armazenados no dispositivo de armazenamento 31 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução. O codificador de vídeo 20, ilustrado nas figuras 1A e 1B podem 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 aqui descrito.
[0038] No exemplo da figura 1A, o dispositivo de destino 14 inclui a interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 do dispositivo de destino 14 pode receber os dados de vídeo codificados através do link 16 e/ou do dispositivo de armazenamento 31. Os dados de vídeo codificados comunicados através do link 16, ou providos no dispositivo de armazenamento 31, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20, para utilização por um decodificador de vídeo, tal como o decodificador de vídeo 30, em decodificar os dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento, ou armazenados em um servidor de arquivo. O decodificador de vídeo 30 ilustrado nas figuras 1A e 1B pode compreender o decodificador de vídeo 30 ilustrado na figura 3A, o decodificador de vídeo 33 ilustrado na figura 3B, ou qualquer outro decodificador de vídeo aqui descrito.
[0039] O dispositivo de exibição 32 pode ser integrado com, ou externo ao, dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de visualização integrado e também ser configurado para interagir com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 mostra os dados de vídeo decodificados para um usuário, e pode compreender qualquer um de uma variedade de dispositivos de exibição, tais como um display de cristal líquido (LCD), uma tela de plasma, um diodo de exibição emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0040] Em aspectos relacionados, a figura 1B mostra um exemplo do sistema de codificação de vídeo 10', em que o dispositivo de origem 12 e o dispositivo de destino 14 estão em ou parte de um dispositivo 11. O dispositivo 11 pode ser um parelho telefônico, tal como um "smartphone" ou semelhante. O dispositivo 11 pode incluir um dispositivo processador / controlador 13 (opcionalmente presente) em comunicação operativa com o dispositivo de origem 12 e o dispositivo de destino 14. O sistema de codificação de vídeo 10’ da figura 1B pode incluir ainda uma unidade de processamento de vídeo 21, entre o codificador de vídeo 20 e a interface de saída 22. Em algumas implementações, a unidade de processamento de vídeo 21 é uma unidade separada, como ilustrado na figura 1B; No entanto, em outras implementações, a unidade de processamento de vídeo 21 pode ser implementada como uma porção do codificador de vídeo 20 e/ou do dispositivo de processador / controlador 13. O sistema de codificação de vídeo 10’ pode também incluir um rastreador 29 (opcionalmente presente), que pode acompanhar um objeto de interesse em uma sequência de vídeo. O objeto de interesse ou a serem rastreados podem ser segmentados através de uma técnica descrita em ligação com um ou mais aspectos da presente divulgação. Em aspectos relacionados, o rastreio pode ser realizado pelo dispositivo de exibição 32, sozinho ou em conjunto com o rastreador 29. O sistema de codificação de vídeo 10' da figura 1B, e os seus componentes, são de outra forma semelhantes ao sistema de codificação de vídeo 10 da figura 1A, e os seus componentes.
[0041] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, como HEVC, e pode estar de acordo com um modelo de teste 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 propriedade ou industriais, tais como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, AVC, ou extensões de tais padrões. As técnicas desta divulgação, no entanto, não estão limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de compressão de vídeo incluem o MPEG-2 e ITU-T H.263.
[0042] Embora não esteja representado nos exemplos das figuras 1A e 1B, o codificador de vídeo 20 e o decodificador de vídeo 30 pode cada um ser integrado com um codificador de áudio e decodificador, e pode incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se for o caso, em alguns exemplos, as unidades MUX-DEMUX podem estar de acordo com o protocolo multiplexador ITU H.223, ou outros protocolos, tais como o protocolo Datagrama de Usuário (UDP).
[0043] O codificador de vídeo 20 e o decodificador de vídeo 30 cada um pode ser implementado como qualquer um de uma variedade de circuitos de codificador adequado, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASIC), arranjos de porta programáveis (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer suas combinações. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador adequado, não transitório e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta divulgação. Cada um do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador / decodificador combinados em um respectivo dispositivo.
Processo de Codificação de Vídeo
[0044] Como mencionado brevemente acima, o codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada uma das imagens é uma parte d formação de imagem estática de um vídeo. Em alguns casos, uma imagem pode ser referida como um "quadro" de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que formam uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir imagens codificadas e dados associados. Uma imagem codificada é uma representação codificada de uma imagem.
[0045] Para gerar o fluxo de bits, o codificador de vídeo 20 pode executar operações de codificação em cada imagem nos dados de vídeo. Quando o codificador de vídeo 20 executa operações de codificação nas imagens, o codificador de vídeo 20 pode gerar uma série de imagens codificadas e dados associados. Os dados associados podem incluir conjuntos de parâmetros de vídeo (VPS), conjuntos de parâmetros de sequência (SPSs), conjuntos de parâmetros de imagem (PPSs), conjuntos de parâmetros de adaptação (APSs), e outras estruturas de sintaxe. Um SPS pode conter parâmetros aplicáveis a zero ou mais sequências de imagens. Um PPS pode conter parâmetros aplicáveis a zero ou mais imagens. Um APS pode conter parâmetros aplicáveis a zero ou mais imagens. Parâmetros em um APS podem ser parâmetros que são mais propensos a mudar de parâmetros em um PPS.
[0046] Para gerar uma imagem codificada, o codificador de vídeo 20 pode dividir uma imagem em blocos de vídeo de tamanho igual. Um bloco de vídeo pode ser uma matriz bidimensional de amostras. Cada um dos blocos de vídeo está associado com um bloco em árvore. Em alguns casos, um bloco em árvore pode ser referido como uma unidade de codificação maior (LCU). Os blocos em árvore de HEVC podem ser amplamente análogos aos macroblocos dos padrões anteriores, tais como o H.264 / AVC. No entanto, um bloco em árvore não é necessariamente limitado a um tamanho particular e pode incluir uma ou mais CUs. O codificador de vídeo 20 pode usar particionamento de quadtree para particionar os blocos de vídeo de blocos em árvore em blocos de vídeo associados com CUs, daí o nome "blocos em árvore".
[0047] Em alguns exemplos, o codificador de vídeo 20 pode dividir uma imagem em uma pluralidade de fatias. Cada uma das fatias pode incluir um número inteiro de CUs. Em alguns casos, uma fatia compreende um número inteiro de blocos em árvore. Em outros casos, um limite de uma fatia pode estar dentro de um bloco em árvore.
[0048] Como parte de executar uma operação de codificação em um quadro, o codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Quando o codificador de vídeo 20 executa uma operação de codificação de uma fatia, o codificador de vídeo 20 pode gerar dados codificados associados com a fatia. Os dados codificados associados com a fatia podem ser referidos como uma "fatia codificada".
[0049] Para gerar uma fatia codificada, o codificador de vídeo 20 pode executar operações de codificação em cada bloco em árvore em uma fatia. Quando o codificador de vídeo 20 executa uma operação de codificação em um bloco em árvore, o codificador de vídeo 20 pode gerar um bloco em árvore codificado. O bloco em árvore codificado pode compreender dados que representam uma versão codificada do bloco em árvore.
[0050] Quando o codificador de vídeo 20 gera uma fatia codificada, o codificador de vídeo 20 pode executar operações de codificação (por exemplo, codificar os blocos em árvore) sobre a fatia de acordo com uma ordem de varredura raster. Por exemplo, o codificador de vídeo 20 pode codificar os blocos em árvore da fatia em uma ordem que procede da esquerda para a direita em uma linha mais acima dos blocos em árvore na fatia, em seguida, da esquerda para a direita em uma próxima linha inferior dos blocos em árvore, e assim sucessivamente até o codificador de vídeo 20 ter codificado cada um dos blocos em árvore na fatia.
[0051] Como um resultado de codificar os blocos em árvore de acordo com a ordem de varredura raster, os blocos em árvore acima e à esquerda de um dado bloco em árvore podem ter sido codificados, mas blocos em árvore abaixo e à direita do bloco em árvore dado ainda não foram ainda codificados. Por conseguinte, o codificador de vídeo 20 pode ser capaz de acessar informação gerada codificando blocos em árvore acima e à esquerda do bloco em árvore dado ao codificar o bloco em árvore dado. No entanto, o codificador de vídeo 20 pode ser incapaz de acessar informações geradas pela codificação de blocos em árvore abaixo e à direita do bloco em árvore dado ao codificar o bloco em árvore dado.
[0052] Para gerar um bloco em árvore codificado, o codificador de vídeo 20 pode de forma recursiva executar o particionamento quadtree no bloco de vídeo do bloco em árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode estar associado com uma CU diferente. Por exemplo, o codificador de vídeo 20 pode dividir o bloco de vídeo de um bloco em árvore em quatro sub-blocos de tamanho igual, particionar um ou mais dos sub-blocos em quatro sub- sub-blocos de tamanho igual, e assim por diante. A CU particionada pode ser uma CU cujo bloco de vídeo é dividido em blocos de vídeo associados com outras CUs. A CU não- particionada pode ser uma CU cujo bloco de vídeo não é dividido em blocos de vídeo associados com outras CUs.
[0053] Um ou mais elementos de sintaxe no fluxo de bits pode indicar um número máximo de vezes que o codificador de vídeo 20 pode particionar o bloco de vídeo de um bloco em árvore. Um bloco de vídeo de uma CU pode ser em formato quadrado. O tamanho do bloco de vídeo de uma CU (por exemplo, o tamanho da CU) pode variar de 8x8 pixels até o tamanho de um bloco de vídeo de um bloco em árvore (por exemplo, o tamanho do bloco em árvore) com um máximo de 64x64 pixels ou maior.
[0054] O codificador de vídeo 20 pode executar operações de codificação (por exemplo, codificar) sobre cada CU de um bloco em árvore de acordo com uma ordem de varredura z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU superior esquerda, uma CU superior direita, uma CU inferior esquerda, e depois uma CU inferior direita, nessa ordem. Quando o codificador de vídeo 20 executa uma operação de codificação em uma CU particionada, o codificador de vídeo 20 pode codificar CUs associadas com 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 com um sub-bloco superior esquerdo, uma CU associada com um sub-bloco superior direito, uma CU associada com um sub- bloco inferior esquerdo, e, em seguida, uma CU associada com um sub-bloco inferior direito, nessa ordem.
[0055] Como resultado de codificar as CUs de um bloco em árvore de acordo com uma ordem de varredura z, as CUs acima, acima e à esquerda, acima e à direita, esquerda, e abaixo e à esquerda de uma dada CU podem ter sido codificadas. CUs abaixo e à direita da dada CU ainda não foram codificadas. Consequentemente, o codificador de vídeo 20 pode ser capaz de acessar informações geradas através da codificação de algumas CUs que circunda a dada CU quando codifica a CU dada. No entanto, o codificador de vídeo 20 pode não conseguir acessar informação gerada através da codificação de outras CUs que circunda a dada CU ao codificar a dada CU.
[0056] 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 com um bloco de vídeo diferente no interior do bloco de vídeo da CU. O codificador de vídeo 20 pode gerar um bloco de vídeo predito para cada PU da CU. O bloco de vídeo predito de uma PU pode ser um bloco de amostras. O codificador de vídeo 20 pode usar a intrapredição ou interpredição para gerar o bloco de vídeo predito para a PU.
[0057] Quando o codificador de vídeo 20 utiliza intrapredição para gerar o bloco de vídeo predito de uma PU, o codificador de vídeo 20 pode gerar o bloco de vídeo predito da PU com base em amostras decodificados da imagem associada com a PU. Se o codificador de vídeo 20 utiliza intrapredição para gerar blocos de vídeo preditos das PUs de uma CU, a CU é uma CU intrapredita. Quando o codificador de vídeo 20 utiliza, interpredição para gerar o bloco de vídeo predito da PU, o codificador de vídeo 20 pode gerar o bloco de vídeo predito da PU com base nas amostras decodificadas de uma ou mais imagens diferentes da imagem associada com a PU. Se o codificador de vídeo 20 usa interpredição para gerar blocos de vídeo preditos das PUs de uma CU, a CU é uma CU interpredita.
[0058] Além disso, quando o codificador de vídeo 20 utiliza interpredição para gerar um bloco de vídeo predito para uma PU, o codificador de vídeo 20 pode gerar informação de movimento para a PU. A informação de movimento para uma PU pode indicar um ou mais blocos de referência da PU. Cada bloco de referência da PU pode ser um bloco de vídeo dentro de uma imagem de referência. A imagem de referência pode ser uma imagem diferente da imagem associada com a PU. Em alguns casos, um bloco de referência de uma PU pode também ser referido como a "amostra de referência" da PU. O codificador de vídeo 20 pode gerar o bloco de vídeo predito para a PU com base nos blocos de referência da PU.
[0059] Após o codificador de vídeo 20 gerar blocos de vídeo predito 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 preditos para a UP da CU. Os dados residuais para a CU podem indicar diferenças entre as amostras em blocos de vídeo preditos para a PU da CU e o bloco de vídeo original da CU.
[0060] Além disso, como parte da execução de uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 pode executar o particionamento 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 com TUs da CU. Cada TU de uma CU pode ser associada com um bloco de vídeo residual diferente.
[0061] 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.
[0062] Depois de gerar um bloco de coeficientes de transformada, o codificador de vídeo 20 pode realizar um processo de quantização no bloco de coeficientes de transformada. Quantização geralmente refere-se a um processo em que os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, proporcionando a compressão adicional. O processo de quantização pode reduzir a profundidade do bit associado com 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 m-bit durante quantização, em que n é maior do que m.
[0063] O codificador de vídeo 20 pode associar cada CU com um valor de parâmetro de quantização (QP). O valor QP associado a uma CU pode determinar como o codificador de vídeo 20 quantiza bloco de coeficientes de transformada associado à CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficientes de transformada associado com uma CU, ajustando o valor QP associado com a CU.
[0064] Após o codificador de vídeo 20 quantiza um bloco de coeficientes de transformada, o codificador de vídeo 20 pode gerar conjuntos de elementos de sintaxe que representam os coeficientes de transformada nos bloco de coeficientes de transformada quantizados. O codificador de vídeo 20 pode aplicar operações de codificação de entropia, tal como operações de Codificação de Aritmética Binária Adaptativa de Contexto (CABAC), a alguns desses elementos de sintaxe. Outras técnicas de codificação de entropia, tais 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.
[0065] O fluxo de bits gerado pelo codificador de vídeo 20 pode incluir uma série de unidades NAL. Cada uma das unidades de NAL pode ser uma estrutura de sintaxe contendo 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âmetro de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, uma fatia codificada, informação de reforço suplementar (SEI), um delimitador de unidade de acesso, dados de enchimento, ou outro tipo de dados. Os dados de uma unidade de NAL podem incluir várias estruturas de sintaxe.
[0066] 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 executar uma operação de análise no fluxo de bits. Quando o decodificador de vídeo 30 executa a operação de análise, o decodificador de vídeo 30 pode extrair elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo para reconstruir os dados de vídeo, com base nos elementos de sintaxe pode ser geralmente recíproco ao processo executado pelo codificador de vídeo 20, para gerar os elementos de sintaxe.
[0067] Depois do decodificador de vídeo 30 extrair os elementos de sintaxe associado com uma CU, o decodificador de vídeo 30 pode gerar blocos de vídeo preditos para a UP da CU, com base nos elementos de sintaxe. Além disso, o decodificador de vídeo 30 pode quantizar inversamente blocos de coeficientes de transformada associados com TUs da CU. O decodificador de vídeo 30 pode realizar transformadas inversas nos bloco de coeficientes de transformada para reconstruir blocos de vídeo residuais associados às TUs da CU. Depois de gerar os blocos de vídeo preditos 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 preditos e nos blocos de vídeo residuais. Desta forma, 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
[0068] A figura 2A é um diagrama de blocos que ilustra um exemplo do codificador de vídeo 20, que pode aplicar técnicas de acordo com os aspectos descritos nesta divulgação. O codificador de vídeo 20 pode ser configurado para processar uma única camada de um quadro de vídeo, tal como, para HEVC. Além disso, o codificador de vídeo 20 pode ser configurado para realizar qualquer uma ou todas as técnicas desta divulgação. Em alguns exemplos, as técnicas descritas nesta divulgação podem ser compartilhadas entre os vários componentes do codificador de vídeo 20. Em alguns exemplos, adicionalmente ou em alternativa, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nesta divulgação.
[0069] Para efeitos de explicação, esta divulgação descreve o codificador de vídeo 20, no contexto da codificação HEVC. No entanto, as técnicas desta divulgaçã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, como será descrito adicionalmente com referência à figura 2B, alguns ou todos do codificador de vídeo 20 pode ser duplicado para o processamento de um codec de multicamada.
[0070] O codificador de vídeo 20 pode realizar intra e intercodificação de blocos de vídeo em fatias de vídeo. Intracodificação se baseia na predição espacial para reduzir ou eliminar a redundância espacial em vídeo dentro de um determinado intervalo de vídeo ou imagem. Intercodificação se baseia em predição temporal para reduzir ou eliminar a redundância temporal de vídeo dentro de quadros ou imagens de uma sequência de vídeo adjacentes. Intramodo (modo I) pode se referir a qualquer um dos vários modos de codificação espaciais. Intermodo, tais como predição unidirecional (modo P) ou predição bidirecional (modo B), pode se referir a qualquer um dos vários modos temporais baseados na codificação.
[0071] 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 residual 102, uma unidade de processamento de transformada 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 113, um armazenador 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 estimação de movimento 122, uma unidade de compensação de movimento 124, uma unidade de intrapredição 126, e uma unidade de predição intercamada 128. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos ou diferentes componentes funcionais. Além disso, a unidade de estimação de movimento 122 e unidade de compensação de movimento 124 podem ser altamente integradas, mas são representadas no exemplo da figura 2A separadamente para fins de explicação.
[0072] O codificador de vídeo 20 pode receber dados de vídeo. O codificador de vídeo 20 pode receber os dados de vídeo a partir de várias fontes. Por exemplo, o codificador de vídeo 20 pode receber os dados de vídeo a partir de fonte de vídeo 18 (por exemplo, mostrado na figura 1A ou 1B) ou de outra fonte. Os dados de vídeo podem representar uma série de imagens. Para codificar os dados de vídeo, o codificador de vídeo 20 pode executar uma operação de codificação em cada uma das imagens. Como parte de executar a operação de codificação em um quadro, o codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Como parte de executar uma operação de codificação em uma fatia, o codificador de vídeo 20 pode executar operações de codificação em blocos em árvore na fatia.
[0073] Como parte de executar uma operação de codificação em um bloco em árvore, unidade de processamento de predição 100 pode executar o particionamento quadtree no bloco de vídeo do bloco em árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode estar associado com uma CU diferente. Por exemplo, unidade de processamento de predição 100 pode particionar um bloco de vídeo de um bloco em árvore em quatro sub-blocos de tamanho igual, particionar um ou mais dos sub-blocos em quatro sub-sub- blocos de tamanho igual, e assim por diante.
[0074] Os tamanhos dos blocos de vídeo associados com CUs pode variar a partir de 8x8 de amostras até o tamanho do bloco em árvore com um máximo de 64x64 amostras ou maiores. Nesta divulgação, "NxN" e "N por N" podem ser usados indiferentemente para se referir às dimensões da amostra de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, amostras de 16x16 ou 16 por 16 amostras. Em geral, um bloco de 16x16 tem vídeo dezesseis amostras em uma direção vertical (Y = 16) e dezesseis amostras em uma direção horizontal (X = 16). Do mesmo modo, um bloco de NxN geralmente tem N amostras em uma direção vertical e N amostras em uma direção horizontal, em que N representa um valor inteiro positivo.
[0075] Além disso, como parte da realização da operação de codificação em um bloco em árvore, unidade de processamento de predição 100 pode gerar uma estrutura de dados quadtree hierárquica para o bloco em árvore. Por exemplo, um bloco em árvore pode corresponder a um nó raiz da estrutura de dados quadtree. Se unidade de processamento de predição 100 particiona o bloco de vídeo do bloco em árvore em quatro sub-blocos, o nó raiz tem quatro nós filho na estrutura de dados quadtree. Cada um dos nós filhos corresponde a uma CU associada com um dos sub-blocos. Se a unidade de processamento de predição 100 particiona um dos sub-blocos em quatro sub-sub-blocos, o nó correspondente às CUs associadas com o sub-bloco pode ter quatro nós secundários, cada um dos quais corresponde a uma CU associada com um dos sub-sub-blocos.
[0076] Cada nó da estrutura de dados quadtree pode conter dados de sintaxe (por exemplo, elementos de sintaxe) para o bloco em árvore ou CU correspondente. Por exemplo, um nó no quadtree pode incluir um flag de divisão que indica se o bloco de vídeo da CU correspondente ao nó é particionado (por exemplo, divisão) em quatro sub-blocos. Elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender do fato de o bloco de vídeo da CU ser dividido em sub-blocos. Uma CU cujo bloco de vídeo não é particionado pode corresponder a um nó de folha na estrutura de dados quadtree. Um bloco em árvore codificado pode incluir dados com base na estrutura de dados quadtree para um bloco em árvore correspondente.
[0077] O codificador de vídeo 20 pode executar operações de codificação em cada CU não particionada de um bloco em árvore. Quando o codificador de vídeo 20 executa 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.
[0078] Como parte de executar uma operação de codificação em uma CU, unidade de processamento de predição 100 pode particionar o bloco de vídeo da CU entre uma ou mais PUs da CU. O codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar diversos tamanhos de PU. Partindo do princípio de 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 Xn, 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 podem também suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em alguns exemplos, unidade de processamento de predição 100 pode executar o particionamento geométrico para particionar o bloco de vídeo de uma CU entre as PUs da CU ao longo de uma fronteira que não cumpre os lados do bloco de vídeo da CU em ângulos retos.
[0079] Órgão de interpredição 121 pode realizar interpredição em cada PU da CU. Interpredição pode prover compressão temporal. Para executar interpredição sobre a PU, unidade de estimação 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 predito para a PU com base nas informações de movimento e outras amostras decodificadas diferentes da imagem associada com a CU (por exemplo, imagens de referência). Nesta divulgação, um bloco de vídeo predito gerado pela unidade de compensação de movimento 124 pode ser referido como um bloco de vídeo interpredito.
[0080] Fatias podem ser fatias I, fatias P, ou fatias B. A unidade de estimação de movimento 122 e unidade de compensação de movimento 124 podem realizar diferentes operações para uma PU de uma CU dependendo se a PU é uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intrapreditas. Assim, se a PU está em uma fatia I, unidade de estimação de movimento 122 e unidade de compensação de movimento 124 não realizam interpredição sobre a PU.
[0081] Se a PU está em uma fatia P, a imagem que contém a PU é associada com uma lista de imagens de referência referidas como "lista 0". Cada uma das imagens de referência na lista 0 contém amostras que podem ser usadas para a interpredição de outras imagens. Quando a unidade de estimação de movimento 122 executa a operação de estimação de movimento em relação a uma PU em uma fatia P, a unidade de estimação de movimento 122 pode procurar as imagens de referência na lista 0 de 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 mais proximamente corresponde às amostras no bloco de vídeo da PU. Unidade de estimação de movimento 122 pode utilizar uma variedade de métricas para determinar quão perto um conjunto de amostras em um quadro de referência corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, a unidade de estimação de movimento 122 pode determinar quão perto um conjunto de amostras em um quadro de referência corresponde às amostras no bloco de vídeo de uma PU por soma de diferença absoluta (SAD), soma de diferença quadrada (SSD), ou outras métricas de diferença.
[0082] Depois de identificar um bloco de referência de uma PU em uma fatia P, a unidade de estimação de movimento 122 pode gerar um índice de referência que indica a imagem de referência na lista 0 contendo 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 estimação de movimento 122 pode gerar vetores de movimento em diferentes graus de precisão. Por exemplo, a unidade de estimação 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 fracionada. No caso de precisão de amostra fracionada, valores de bloco de referência podem ser interpolados a partir de valores de amostra de posição de número inteiro na imagem de referência. Unidade de estimação de movimento 122 pode emitir o índice de referência e o vetor de movimento, como a informação de movimento da PU. Unidade de compensação de movimento 124 pode gerar um bloco de vídeo predito da PU com base no bloco de referência identificado pela informação de movimento da PU.
[0083] Se a PU é uma fatia em B, a imagem que contém a PU pode estar associada com duas listas de imagens de referência, designadas por "lista 0" e "lista 1". Em alguns exemplos, uma imagem contendo uma fatia B pode ser associada com uma combinação de lista que é uma combinação da lista 0 e lista 1.
[0084] Além disso, se a PU está em uma fatia B, unidade de estimação de movimento 122 pode executar predição unidirecional ou predição bidirecional para a PU. Quando a unidade de estimação de movimento 122 executa predição unidirecional para a PU, unidade de estimação de movimento 122 pode procurar as imagens de referência de lista 0 ou lista 1 para um bloco de referência para a PU. Unidade de estimação de movimento 122 pode, então, gerar um índice de referência que indica a imagem de referência na lista 0 ou lista 1 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. A unidade de estimação de movimento 122 pode emitir o índice de referência, um indicador de direção de predição, e o vetor de movimento, como a informação de movimento da PU. O indicador de direção de predição pode indicar se o índice de referência indica uma imagem de referência na lista 0 ou lista 1. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo predito da PU com base no bloco de referência indicado pela informação de movimento da PU.
[0085] Quando a unidade de estimação de movimento 122 executa predição bidirecional para a PU, unidade de estimação de movimento 122 pode procurar as imagens de referência na lista 0 para um bloco de referência para a PU e também pode procurar as imagens de referência na lista 1 para um outro bloco de referência para a PU. Unidade de estimação de movimento 122 pode, então, gerar índices de referência que indicam as imagens de referência na lista 0 e lista 1 contendo os blocos de referência e vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e a PU. Unidade de estimação de movimento 122 pode emitir os índices de referência e os vetores de movimento da PU como a informação de movimento da PU. Unidade de compensação de movimento 124 pode gerar o bloco de vídeo predito da PU com base nos blocos de referência indicados pela informação de movimento da PU.
[0086] Em alguns casos, a unidade de estimação de movimento 122 não emite um conjunto completo de informação de movimento da PU para unidade de codificação de entropia 116. Pelo contrário, a unidade de estimação de movimento 122 pode sinalizar a informação de movimento de uma PU com referência à informação de movimento de outra PU. Por exemplo, a unidade de estimação de movimento 122 pode determinar que a informação de movimento da PU é suficientemente semelhante à informação de movimento de um PU vizinha. Neste exemplo, a unidade de estimação de movimento 122 pode indicar, em uma estrutura de sintaxe associada com a PU, um valor que indica para o decodificador de vídeo 30 que a PU tem a mesma informação de movimento que PU vizinha. Em outro exemplo, a unidade de estimação de movimento 122 pode identificar, em uma estrutura de sintaxe associada com a PU, uma PU vizinha e uma diferença de vetor de movimento de (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 vizinho indicada. O decodificador de vídeo 30 pode utilizar o vetor de movimento da PU vizinha indicada e a diferença de vetor de movimento para determinar o vetor de movimento da PU. Ao referir-se a informação de movimento de uma primeira PU ao sinalizar a informação de movimento de uma segunda PU, o codificador de vídeo 20 pode ser capaz de sinalizar a informação de movimento da segunda PU utilizando menos bits.
[0087] Como parte de executar uma operação de codificação em uma CU, unidade de intrapredição 126 pode executar intrapredição na UP da CU. Intrapredição pode prover compressão espacial. Quando a unidade de intrapredição 126 realiza a intrapredição em uma PU, a unidade de intrapredição 126 pode gerar dados de predição para a PU com base em amostras de outras PUs decodificadas na mesma imagem. Os dados de predição para a PU pode incluir um bloco de vídeo predito e vários elementos de sintaxe. A unidade de intrapredição 126 pode executar intrapredição na UP em fatias I, fatias P e fatias B.
[0088] Para executar intrapredição em uma PU, unidade de intrapredição 126 pode usar vários modos de intrapredição para gerar vários conjuntos de dados de predição para a PU. Quando a unidade de intrapredição 126 utiliza 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 dos blocos de vídeo de PUs vizinhas através do bloco de vídeo de PU em uma direção e/ou gradiente associado com o modo de intrapredição. As PUs vizinhas podem estar acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma ordem de codificação da esquerda para a direita, de cima para baixo para PUs, CUs, e blocos em árvore. A unidade de intrapredição 126 pode usar vários números de modos de intrapredição, por exemplo, 33 modos de intrapredição direcionais, dependendo do tamanho da PU.
[0089] A unidade de processamento de predição 100 pode selecionar os dados de predição para a 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 / taxa de distorção dos conjuntos de dados de predição.
[0090] Se unidade de processamento de predição 100 seleciona dados de predição gerados pela unidade de intrapredição 126, 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 a PU, por exemplo, o modo de intrapredição selecionado. A unidade de processamento de predição 100 pode sinalizar o modo de intrapredição selecionado de várias maneiras. Por exemplo, pode ser provável que o modo de intrapredição selecionado é o mesmo que o modo de intrapredição de uma PU vizinha. Em outras palavras, o modo de intrapredição da PU vizinha 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 vizinha.
[0091] Como discutido acima, o codificador de vídeo 20 pode incluir unidade predição intercamada 128. A unidade de predição intercamada 128 é configurada para prover um bloco atual (por exemplo, um bloco atual na EL), utilizando uma ou mais diferentes camadas que estão disponíveis na extensão escalonável para HEVC (por exemplo, uma base ou camada de referência). Tal predição pode ser referida como predição intercamada. Unidade de predição intercamada 128 utiliza métodos de predição para reduzir a redundância intercamada, melhorando assim a eficiência de codificação e reduzindo as necessidades de recursos computacionais. Alguns exemplos de predição intercamada incluem intrapredição intercamada, predição de movimento intercamada, e predição residual intercamada. Intrapredição intercamada utiliza a reconstrução de blocos colocalizados na camada de base para prover o bloco atual na camada de acumulação. Predição de movimento intercamada utiliza informação de movimento da camada de base para prover o movimento predito na camada de acumulação. Predição residual intercamada usa o resíduo da camada de base para prover o resíduo da camada de acumulação.
[0092] Após a unidade de processamento de predição 100 selecionar os dados de predição para PUs de uma CU, unidade de geração residual 102 pode gerar dados residuais para a CU subtraindo (por exemplo, indicado pelo sinal de menos) os blocos de vídeo preditos das PUs da CU do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir blocos de vídeo residuais 2D que correspondem a diferentes componentes de amostra das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que corresponde à diferença entre os componentes de luminância de amostras nos blocos de vídeo preditos 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 os componentes de crominância de amostras nos blocos de vídeo preditos das PUs da CU e os componentes de crominância das amostras no bloco de vídeo original da CU.
[0093] A unidade de processamento de predição 100 pode executar o particionamento 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 com uma TU diferente da CU. Os tamanhos e posições dos blocos de vídeo residuais associados com as TUs de uma CU podem ou não podem basear-se nos tamanhos e posições dos blocos de vídeo associados com as PUs da CU. Uma estrutura quadtree conhecida como uma "quadtree residual" (RQT) pode incluir os nós associados com cada um dos blocos de vídeo residuais. As TUs de uma CU podem corresponder a nós folha da RQT.
[0094] Unidade de processamento de transformada 104 pode gerar um ou mais blocos de coeficientes de transformada para cada TU de uma CU através da aplicação de uma ou mais transformadas para um bloco de vídeo residual associado à TU. Cada um dos blocos de coeficientes de transformada podem ser uma matriz 2D de coeficientes de transformada. Unidade de processamento de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, 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.
[0095] Depois da unidade de processamento de transformada 104 gerar um bloco de coeficientes de transformada associado a uma TU, a unidade de quantização 106 pode quantizar os coeficientes de transformada no bloco de coeficientes de transformada. A unidade de quantização 106 pode quantizar um bloco de coeficiente de transformada associado com uma TU de uma CU com base em um valor QP associado com a CU.
[0096] O codificador de vídeo 20 pode associar um valor QP com uma CU de várias maneiras. Por exemplo, o codificador de vídeo 20 pode executar uma análise da taxa de distorção em um bloco em árvore associado com a CU. Na análise da taxa de distorção, o codificador de vídeo 20 pode gerar várias representações codificadas do bloco em árvore realizando uma operação de codificação várias vezes no bloco em árvore. O codificador de vídeo 20 pode associar diferentes valores de QP com a CU quando o codificador de vídeo 20 gera diferentes representações codificadas do bloco em árvore. O codificador de vídeo 20 pode indicar que um determinado valor QP está associado com a CU quando o dado valor QP está associado com a CU em uma representação codificada do bloco em árvore que tem uma menor taxa de bits e métrica de distorção.
[0097] A unidade de quantização inversa 108 e uma unidade de transformada inversa 10 pode aplicar quantização inversa e transformada inversa ao bloco de coeficientes de transformada, respectivamente, para reconstruir um bloco de vídeo residual a partir do bloco de coeficientes de transformada. A unidade de reconstrução 112 pode adicionar o bloco de vídeo residual reconstruído a amostras correspondentes de um ou mais blocos de vídeo preditos gerados pela unidade de processamento de predição 100 para produzir um bloco de vídeo reconstruído associado a uma TU. Ao reconstruir blocos de vídeo para cada TU de uma CU deste modo, o codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[0098] Após a unidade de reconstrução 112 reconstruir o bloco de vídeo de uma CU, unidade de filtro 113 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio no bloco de vídeo associado com a CU. Após a realização de uma ou mais operações de desbloqueio, uma unidade de filtro 13 pode armazenar o bloco de vídeo reconstruído da CU no armazenador de imagem decodificada 114. A unidade de compensação de movimento 122 e unidade de estimação de movimento 124 pode usar uma imagem de referência que contém o bloco de vídeo para reconstruída executar interpredição sobre PU de imagens subsequentes. Além disso, a unidade de intrapredição 126 pode usar blocos de vídeo reconstruídos no armazenador de imagem decodificada 114 para executar intrapredição em outras PUs na mesma imagem que a CU.
[0099] A unidade de codificação de entropia 16 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 os blocos de coeficientes de transformada da unidade de quantização 106 e pode receber elementos de sintaxe da unidade de processamento de predição 100. Quando unidade de codificação de entropia 116 recebe os dados, a unidade de codificação de entropia 116 pode executar uma ou mais operações que codifica por entropia para gerar dados codificado por entropia. Por exemplo, o codificador de vídeo 20 pode executar uma operação de CAVLC, uma operação CABAC, uma operação de codificação de comprimento variável para variável (V2V), operação de codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), uma operação de codificação de particionamento de probabilidade de intervalo (PIPE), ou outro tipo de operação de codificação de entropia nos dados. Unidade de codificação de entropia 116 pode emitir um fluxo contínuo de dados, que inclui os dados codificados por entropia.
[0100] Como parte de executar uma operação de codificação de entropia em dados, unidade de codificação de entropia 116 pode selecionar um modelo de contexto. Se a unidade de codificação de entropia 116 está executando uma operação CABAC, o modelo de contexto pode indicar estimativas de probabilidades de feixes específicos com valores específicos. No contexto de CABAC, o termo "recipiente" é usado para se referir a um bit de uma versão binarizada de um elemento de sintaxe.
Codificador de vídeo multicamada
[0101] A figura 2B é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo multicamada 23 (também referido simplesmente como codificador de vídeo 23) que pode aplicar técnicas de acordo com os aspectos descritos nesta divulgação. O codificador de vídeo 23 pode ser configurado para processar os quadros de vídeo de multicamada, tais como, por SHVC e MV-HEVC. Além disso, o codificador de vídeo 23 pode ser configurado para realizar qualquer uma ou todas as técnicas desta divulgação.
[0102] O codificador de vídeo 23 inclui um codificador de vídeo 20A e um codificador de vídeo 20B, cada um dos quais pode ser configurado como o codificador de vídeo 20 e pode executar as funções descritas acima em relação ao codificador de vídeo 20. Além disso, tal como 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, tal como o codificador de vídeo 20. Embora o codificador de vídeo 23 esteja 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 qualquer número de camadas de codificador de vídeo 20. Em algumas modalidades, o codificador de vídeo 23 pode incluir um codificador de vídeo 20 para cada imagem ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou codificada por um codificador de vídeo que inclui cinco camadas de codificador. Em algumas modalidades, o codificador de vídeo 23 pode incluir mais camadas de codificador do que quadros em uma unidade de acesso. Em alguns de tais casos, algumas das camadas de codificador de vídeo podem ser inativas ao processar algumas unidades de acesso.
[0103] Em adição aos codificadores de vídeo 20A e 20B, o codificador de vídeo 23 pode incluir uma unidade de reamostragem 90. A unidade de reamostragem 90 pode, em alguns casos, amostra ascendentemente uma camada de base de um quadro de vídeo recebido para, por exemplo, criar uma camada de acumulação. A unidade de reamostragem 90 pode amostrar ascendentemente informação particular associada com a camada de base recebida de um quadro, mas não outras informações. Por exemplo, a unidade de reamostragem 90 pode amostrar ascendentemente o tamanho espacial ou número de pixels da camada de base, mas o número de fatias ou a contagem de ordem de imagem pode permanecer constante. Em alguns casos, a unidade de reamostragem 90 não pode processar o vídeo recebido e/ou pode ser opcional. Por exemplo, em alguns casos, a unidade de processamento de predição 100 pode executar amostra ascendente. Em algumas modalidades, a unidade de reamostragem 90 está configurada para amostrar ascendentemente uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para cumprir um conjunto de regras de fronteira de fatia e/ou regras de varredura raster. Apesar de descrito principalmente como amostrando ascendentemente uma camada de 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 o streaming de um vídeo, largura de banda é reduzida, um quadro pode ser amostrado descentemente em vez de mostrado ascendentemente.
[0104] A unidade de reamostragem 90 pode ser configurada para receber uma imagem ou quadro (ou informação de imagem associada com a imagem) a partir do armazenador de imagem decodificada 114 do codificador de camada inferior (por exemplo, o codificador de vídeo 20A) e para amostrar ascendentemente a imagem (ou as informações da imagem recebida). A imagem amostrada ascendentemente pode então ser provida para a unidade de processamento de predição 100 de um codificador de camada superior (por exemplo, o codificador de vídeo 20B) configurado para codificar uma imagem na mesma unidade de acesso que o codificador de camada inferior. Em alguns casos, o codificador de camada superior é uma camada removida do codificador de camada inferior. Em outros casos, pode haver um ou mais codificadores de camada superior entre a camada 0 do codificador de vídeo e a camada 1 do codificador da figura 2B.
[0105] Em alguns casos, a unidade de reamostragem 90 pode ser omitida ou ignorada. Em tais casos, a imagem a partir do armazenador de imagem decodificada 114 do codificador de vídeo 20A pode ser provida diretamente, ou pelo menos sem ser provida à 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 providos ao codificador de vídeo 20B e a imagem de referência a partir do armazenador de imagem decodificada 114 do codificador de vídeo 20A forem do mesmo tamanho ou resolução, a imagem de referência pode ser provida para o codificador de vídeo 20B sem qualquer reamostragem.
[0106] Em algumas modalidades, o codificador de vídeo 23 amostra descendentemente os dados de vídeo para serem providos para o codificador de camada inferior utilizando a unidade de amostragem descendente 94 antes de prover os dados de vídeo para o codificador de vídeo 20A. Em alternativa, a unidade de amostragem descendente 94 pode ser uma unidade de reamostragem 90 capaz de amostrar ascendentemente ou amostrar descendentemente os dados de vídeo. Em ainda outras modalidades, a unidade de amostragem descendente 94 pode ser omitida.
[0107] Tal como ilustrado na figura 2B, o codificador de vídeo 23 pode ainda incluir um multiplexador (ou MUX) 98. O multiplexador 98 pode emitir um fluxo de bits combinado a partir do codificador de vídeo 23. O fluxo de bits combinado pode ser criado tomando um fluxo de bits de cada um dos codificadores de vídeo 20A e 20B e alternando qual fluxo de bits é emitido em um determinado momento. Embora em alguns casos os bits provenientes dos dois (ou mais, no caso de mais do que duas camadas de codificador de vídeo) fluxos de bits possam ser alternados um bit de cada vez, em muitos casos, os fluxos de bits são combinados de forma diferente. Por exemplo, o fluxo de bits emitido pode ser criado alternando um fluxo de bits de bloco selecionado de cada vez. Em outro exemplo, o fluxo de bits emitido pode ser criado emitindo uma razão não -1:1 de blocos de cada um dos codificadores de vídeo 20A e 20B. Por exemplo, dois blocos podem ser emitidos pelo codificador de vídeo 20B para cada bloco emitido do codificador de vídeo 20A. Em algumas modalidades, o fluxo emitido do multiplexador 98 pode ser pré-programado. Em outras modalidades, o multiplexador 98 pode combinar os fluxos de bits dos codificadores de vídeo 20A, 20B com base em um sinal de controle recebido a partir de um sistema externo para o codificador de vídeo 23, tal como a partir de um processador de um dispositivo de origem, incluindo o dispositivo de origem 12. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um vídeo a partir da fonte de vídeo 18, com base na largura de banda do link 16, com base em uma assinatura associada a um usuário (por exemplo, uma assinatura paga versus uma assinatura livre), ou com base em qualquer outro fator para determinar uma saída de resolução desejada a partir do codificador de vídeo 23.
Decodificador de Vídeo
[0108] A figura 3A é um diagrama de blocos que ilustra um exemplo do decodificador de vídeo 30, que pode aplicar técnicas de acordo com os aspectos descritos nesta divulgação. O decodificador de vídeo 30 pode ser configurado para processar uma única camada de um quadro de vídeo, tal como, para HEVC. Além disso, o decodificador de vídeo 30 pode ser configurado para realizar qualquer uma ou todas as técnicas desta divulgação. Em alguns exemplos, as técnicas descritas nesta divulgação podem ser compartilhadas entre os vários componentes do decodificador de vídeo 30. Em alguns exemplos, adicionalmente ou em alternativa, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nesta divulgação.
[0109] Para efeitos da explicação, esta divulgação descreve o decodificador de vídeo 30 no contexto de codificação HEVC. No entanto, as técnicas desta divulgaçã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 única camada. No entanto, como será descrito adicionalmente com referência à figura 3B, uma parte ou a totalidade do decodificador de vídeo 30 pode ser duplicada para o processamento de um codec multicamada.
[0110] 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 armazenador de imagem decodificada 160. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 162, uma unidade de intrapredição 164, e uma unidade de predição intercamada 166. Em alguns exemplos, o decodificador de vídeo 30 pode executar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 20 da figura 2A. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou diferentes componentes funcionais.
[0111] O decodificador de vídeo 30 pode receber um fluxo de dados, 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 executar uma operação de análise no fluxo de bits. Como um resultado da execução da operação de análise no fluxo de bits, a unidade de decodificação de entropia 150 pode extrair os elementos de sintaxe de fluxo de bits. Como parte de executar a 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. Unidade de processamento de predição 152, unidade de quantização inversa 154, unidade de transformada inversa 156, unidade de reconstrução 158, e unidade de filtro 159 pode executar uma operação de reconstrução que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos a partir do fluxo de bits.
[0112] Como discutido acima, o fluxo de bits pode compreender uma série de unidades NAL. As unidades de NAL do fluxo de bits podem incluir unidades de NAL de conjunto de parâmetro de vídeo, unidades de NAL de conjunto de parâmetros de sequência, unidades de NAL de conjunto de parâmetros de imagem, unidades de NAL SEI, e assim por diante. Como parte de executar a operação de análise no fluxo de bits, unidade de decodificação de entropia 150 pode executar operações de análise que extraem e decodificam por entropia conjuntos de parâmetros de sequência das unidades de NAL de conjunto de parâmetros de sequência, conjuntos de parâmetros de imagem a partir de unidades de NAL de conjunto de parâmetro de imagem, dados SEI de unidades de NAL SEI, e assim por diante.
[0113] Além disso, as unidades de NAL do fluxo de bits podem incluir unidades de NAL de fatia codificada. Como parte de executar a operação de análise no fluxo de bits, unidade de decodificação de entropia 150 pode executar a análise de operações que extraem e decodificam por entropia fatias codificadas a partir das unidades de NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatias. O cabeçalho da fatia pode conter elementos de sintaxe que pertencem a uma fatia. Os elementos de sintaxe no cabeçalho da fatia podem incluir um elemento de sintaxe que identifica um conjunto de parâmetros de imagem associada a uma imagem que contem a fatia. Unidade de decodificação de entropia 150 pode executar operações de decodificação de entropia, como operações de decodificação CABAC, em elementos de sintaxe no cabeçalho fatia codificada para recuperar o cabeçalho de fatia.
[0114] Como parte de extrair os dados da fatia de unidades de NAL de fatia codificada, unidade de decodificação de entropia 150 pode executar operações de análise que extraem elementos de sintaxe de CUs codificada nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados com blocos de transformada de coeficientes. Unidade de decodificação de entropia 150 pode, em seguida, executar operações decodificação CABAC em alguns dos elementos de sintaxe.
[0115] Depois da unidade de decodificação de entropia 150 executar uma operação de análise em uma CU não particionada, o decodificador de vídeo 30 pode executar uma operação de reconstrução da CU não particionada. Para executar a operação de reconstrução em uma CU não particionada, o decodificador de vídeo 30 pode executar uma operação de reconstrução em cada TU da CU. Ao executar 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.
[0116] Como parte de executar uma operação de reconstrução em uma TU, unidade de quantização inversa 154 pode inverter quantização, por exemplo, dequantizar, um bloco de coeficientes de transformada associado à TU. A unidade de quantização inversa 154 pode quantizar inversamente o bloco de coeficiente de transformada de um modo semelhante 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 QP de quantização calculado pelo codificador de vídeo 20 para uma CU do bloco de coeficientes de transformada para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa para unidade de quantização inversa 154 para aplicar.
[0117] Depois da unidade de quantização inversa 154 quantizar inversamente um bloco de coeficientes de transformada, unidades de NAL de fatia codificada 156 pode gerar um bloco de vídeo residual para a TU associada ao bloco de coeficientes de transformada. 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, unidade de transformada inversa 156 pode aplicar uma DCT inversa, transformada de inteiro inversa, uma transformada inversa Karhunen-Loeve (KLT), uma transformada rotacional inversa, uma transformada direcional inversa, ou de outra transformada inversa ao bloco de coeficiente de transformada. Em alguns exemplos, unidade de transformada inversa 156 pode determinar uma transformada inversa a ser aplicada ao bloco de coeficiente de transformada baseada na sinalização a partir 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 sinalizado no nó de raiz de quadtree para um bloco em árvore associada com o bloco de coeficientes de transformada. Em outros exemplos, unidade de transformada inversa 156 pode inferir a transformada inversa a partir de uma ou mais características de codificação, tais como tamanho do bloco, modo de codificação, ou semelhantes. Em alguns exemplos, unidade de transformada inversa 156 pode aplicar uma transformada inversa em cascata.
[0118] Em alguns exemplos, a unidade de compensação de movimento 162 pode refinar o bloco de vídeo predito de uma PU efetuando interpolação com base em filtros de interpolação. Identificadores para filtros de interpolação a ser usados para a compensação de movimento com precisão de subamostra podem ser integrados nos elementos de sintaxe. 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 predito da PU para calcular os valores interpolados de amostras de subinteiros 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 a sintaxe de informação recebida e utilizar os filtros de interpolação para produzir o bloco de vídeo predito.
[0119] Se uma PU é codificada utilizando a intrapredição, em seguida, a unidade de intrapredição 164 pode executar intrapredição para gerar um bloco de vídeo predito 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.
[0120] Em alguns casos, os elementos de sintaxe podem indicar que a unidade de intrapredição 164 é 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 é o mesmo que o modo de intrapredição de uma PU vizinha. Em outras palavras, o modo de intrapredição da PU vizinha pode ser o modo mais provável para a PU atual. Assim, neste exemplo, o fluxo de bits pode incluir um pequeno elemento de sintaxe que indica que o modo de intrapredição de PU é o mesmo que o modo de intrapredição da PU vizinha. A unidade de intrapredição 164 pode, então, utilizar o modo de intrapredição para gerar dados de predição (por exemplo, amostras preditas) para a PU com base nos blocos de vídeo de PUs espacialmente vizinhas.
[0121] Como discutido acima, o decodificador de vídeo 30 pode também incluir unidade de predição intercamada 166. A unidade de predição intercamada 166 é configurada para prover um bloco atual (por exemplo, um bloco atual na camada de acumulação) utilizando uma ou mais camadas diferentes que estão disponíveis na extensão escalável de HEVC (por exemplo, uma camada de base ou referência). Tal predição pode ser referida como predição intercamada. A unidade de predição intercamada 166 utiliza métodos de predição para reduzir a redundância intercamada, melhorando assim a eficiência de codificação e reduzindo as necessidades de recursos computacionais. Alguns exemplos de predição intercamada incluem intrapredição intercamada, predição de movimento intercamada, e predição residual intercamada. Intrapredição intercamada utiliza a reconstrução de blocos de co-localizados na camada de base para prover o bloco atual na camada de acumulação. Predição de movimento intercamada utiliza informação de movimento da camada de base para prover o movimento na camada de acumulação. Predição residual intercamada usa o resíduo da camada de base para predizer o resíduo da camada de acumulação. Cada um dos esquemas de predição intercamada é discutido abaixo em maior detalhe.
[0122] 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 preditos das PUs da CU, por exemplo, quer dados de intrapredição ou dados de interpredição, conforme o caso, para reconstruir o bloco de vídeo da CU. Assim, o decodificador de vídeo 30 pode gerar um bloco de vídeo predito 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 predito e no bloco de vídeo residual.
[0123] Após a unidade de reconstrução 158 reconstruir o bloco de vídeo da CU, unidade de filtro 159 pode executar uma operação de desbloqueio para reduzir os artefatos de bloqueio associados com a CU. Depois de unidade de filtro 159 realizar uma operação de desbloqueio para reduzir os artefatos de bloqueio associados com a CU, o decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU no armazenador de imagem decodificada 160. O armazenador de imagem decodificada 160 pode prover imagens de referência para compensação de movimento subsequente, intrapredição e apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da figura 1A ou 1B. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos de vídeo no armazenador de imagem decodificada 160, as operações intrapredição ou interpredição em PUs de outra CU.
Decodificador Multicamada
[0124] A figura 3B é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo multicamada 33 (também referido simplesmente como decodificador de vídeo 33) que pode aplicar técnicas de acordo com os aspectos descritos nesta divulgação. O decodificador de vídeo 33 pode ser configurado para processar os quadros de vídeo multicamada, tais como, para SHVC e codificação multivista. Além disso, o decodificador de vídeo 33 pode ser configurado para realizar qualquer uma ou todas as técnicas desta divulgação.
[0125] O decodificador de vídeo 33 inclui um decodificador de vídeo 30A e decodificador de vídeo 30B, cada um dos quais pode ser configurado como decodificador de vídeo 30 e pode executar as funções descritas acima em relação ao decodificador de vídeo 30. Além disso, tal como indicado pela reutilização de números de referência, os decodificadores de vídeo 30A e 30B podem incluir, pelo menos, alguns dos sistemas e subsistemas, tal como o decodificador de vídeo 30. Embora o decodificador de vídeo 33 esteja ilustrado como incluindo dois decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 não é limitado como tal, e pode incluir qualquer número de camadas de decodificador de vídeo 30. Em algumas modalidades, o decodificador de vídeo 33 pode incluir um decodificador de vídeo 30 para cada imagem ou quadro de uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou decodificada por um decodificador de vídeo que inclui cinco camadas de decodificador. Em algumas modalidades, o decodificador de vídeo 33 pode incluir mais camadas de decodificador do que quadros em uma unidade de acesso. Em alguns de tais casos, algumas das camadas de decodificador de vídeo podem ser inativas ao processar algumas unidades de acesso.
[0126] Em adição aos decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 pode incluir uma unidade de amostragem ascendente 92. Em algumas modalidades, a unidade de amostra ascendente 92 pode amostrar ascendentemente uma camada de base de um quadro de vídeo recebido para criar uma camada acumulada a ser adicionada à lista de imagens de referência para o quadro ou unidade de acesso. Esta camada acumulada pode ser armazenada no armazenador de imagem decodificada 160. Em algumas modalidades, a unidade de amostra ascendente 92 pode incluir alguns ou todas as modalidades descritas em relação à unidade de reamostragem 90 da figura 2A. Em algumas modalidades, a unidade de amostra ascendente 92 está configurada para amostrar ascendentemente uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para cumprir um conjunto de regras de fronteira de fatia e/ou regras de varredura raster. Em alguns casos, a unidade de amostra ascendente 92 pode ser uma unidade de reamostragem ascendentemente configurada para amostrar ascendentemente e/ou amostrar descendentemente uma camada de um quadro de vídeo recebido.
[0127] A unidade de amostra ascendente 92 pode ser configurada para receber uma imagem ou quadro (ou informação de imagem associada com a imagem) a partir do armazenador de imagem decodificada 160 do decodificador da camada inferior (por exemplo, o decodificador de vídeo 30A) e amostrar ascendentemente a imagem (ou as informações da imagem recebida). A imagem amostrada ascendentemente pode então ser provida à 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.
[0128] Em alguns casos, a unidade de amostra ascendente 92 pode ser omitida ou ignorada. Em tais casos, a imagem proveniente do armazenador de imagem decodificada 160 do decodificador de vídeo 30A pode ser provida diretamente ou pelo menos sem ser provida para a unidade de amostragem ascendente 92, para a unidade de processamento de predição 152 do decodificador de vídeo 30B. Por exemplo, se os dados de vídeo providos ao decodificador de vídeo 30B e a imagem de referência a partir do armazenador de imagem decodificada 160 do decodificador de vídeo 30A são do mesmo tamanho ou resolução, a imagem de referência pode ser provida para o decodificador de vídeo 30B sem amostra ascendente. Além disso, em algumas modalidades, a unidade de amostra ascendente 92 pode ser uma unidade de reamostragem 90 configurada para amostrar ascendentemente ou amostrar descendentemente uma imagem de referência recebida a partir do armazenador de imagem decodificada 160 do decodificador de vídeo 30A.
[0129] Tal como ilustrado na figura 3B, o decodificador de vídeo 33 pode ainda incluir um demultiplexador (ou demux) 99. O demultiplexador 99 pode dividir um fluxo de bits de vídeo codificado em múltiplos fluxos de bits com cada fluxo de bits emitido pelo demultiplexador 99 sendo provido a um decodificador de vídeo diferente 30A e 30B. Os múltiplos fluxos de bits podem ser criados ao receber um fluxo de bits e cada um dos decodificadores de vídeo 30A e 30B recebem uma parte do fluxo de dados em um determinado momento. Embora em alguns casos os bits do fluxo de bits recebido no demultiplexador 99 podem ser alternados um bit de cada vez entre cada um dos decodificadores de vídeo (por exemplo, decodificadores de vídeo 30A e 30B, no exemplo da figura 3B), em muitos casos, o fluxo de bits é dividido de maneira diferente. Por exemplo, o fluxo de bits pode ser dividido alternando qual decodificador de vídeo recebe o fluxo de bits um bloco de cada vez. Em outro exemplo, o fluxo de bits pode ser dividido por uma razão de não-1:1 de blocos para cada um dos decodificadores de vídeo 30A e 30B. Por exemplo, dois blocos podem ser providos para o decodificador de vídeo 30B para cada bloco provido para o decodificador de vídeo 30A. Em algumas modalidades, a divisão do fluxo de bits pelo demultiplexador 99 pode ser pré-programada. Em outras modalidades, o demultiplexador 99 pode dividir o fluxo de bits com base em um sinal de controle recebido a partir de um sistema externo para o decodificador de vídeo 33, tal como a partir de um processador de um dispositivo de destino, incluindo o dispositivo de destino 14. O sinal de controle pode ser gerado com base na resolução ou na taxa de bits de um vídeo a partir da interface de entrada 28, com base na largura de banda do link 16, com base em uma assinatura associada a um usuário (por exemplo, uma assinatura paga versus uma assinatura livre), ou com base em qualquer outro fator para a determinação de uma resolução obtenível pelo decodificador de vídeo 33.
Imagens de Ponto de Acesso Intra-Aleatório (IRAP)
[0130] Alguns esquemas de codificação de vídeo podem prover vários pontos de acesso aleatório durante todo o fluxo de bits de tal forma que o fluxo de bits pode ser decodificado a partir de qualquer um desses pontos de acesso aleatório sem a necessidade de decodificar quaisquer imagens que antecedem esses pontos de acesso aleatórios no fluxo de bits. Nesses esquemas de codificação de vídeo, todas as imagens que seguem um ponto de acesso aleatório, em ordem de decodificação, com exceção de imagens dianteiras puladas por acesso aleatório (RASL), podem ser decodificadas corretamente sem o uso de quaisquer imagens que antecedem o ponto de acesso aleatório. Por exemplo, mesmo que uma porção da sequência de bits seja perdida durante transmissão ou durante decodificação, um decodificador pode resumir decodificar o fluxo de bits a partir do próximo ponto de acesso aleatório. Suporte para acesso aleatório pode facilitar, por exemplo, serviços de streaming dinâmico, operações de busca, mudança de canal, etc.
[0131] Em alguns esquemas de codificação, tais pontos de acesso aleatório podem ser providos por imagens que são referidas como imagens de ponto de acesso intra- aleatório (IRAP). Por exemplo, um ponto de acesso aleatório associado com uma imagem de IAPR de camada de acumulação em uma camada de acumulação ("camadaA") que está contida em uma unidade de acesso ("auA") pode prover acesso aleatório específico de camada tal que para cada camada de referência ("camadaB") de camadaA (por exemplo, uma camada de referência sendo uma camada que é usada para predizer CamadaA) tendo um ponto de acesso aleatório associado com uma imagem contida em uma unidade de acesso ("auB") que está em camadaB e precede auA, em ordem de decodificação (ou um ponto de acesso aleatório contida no auA), as imagens em CamadaA e precede auA, em ordem de decodificação (incluindo as imagens localizadas em auA), são corretamente decodificáveis sem a necessidade de decodificar quaisquer imagens em CamadaA que precedem auA.
[0132] Imagens IRAP podem ser codificadas utilizando intrapredição (por exemplo, codificadas sem referência a outras imagens) e/ou predição intercamada, e podem incluir, por exemplo, imagens de renovação de decodificador instantânea (IDR), imagens de acesso aleatório limpo (CRA) e imagens de acesso link quebrado (BLA). Quando há uma imagem de IDR no fluxo de bits, todas as imagens que antecedem a imagem de IDR, em ordem de decodificação não são usadas para a predição de imagens que precedem a imagem de IDR. Quando existe uma imagem de CRA no fluxo de bits, as imagens que precedem a imagem de CRA podem ou não utilizar imagens que precedem a imagem de CRA em ordem de decodificação para predição. Aquelas imagens que precedem a imagem de CRA, em ordem de decodificação, mas usam imagens que antecedem a imagem de CRA, em ordem de decodificação podem ser referidas como imagens de RASL. Outro tipo de imagem que pode seguir uma imagem de IRAP, em ordem de decodificação e precede a imagem de IRAP, em ordem de emissão é uma imagem dianteira decodificável de acesso aleatório (RADL), que não pode conter referências a quaisquer imagens que antecedem a imagem IRAP, em ordem de decodificação. Imagens de RASL podem ser descartadas pelo decodificador se as imagens que antecedem a imagem de CRA não estão disponíveis. Uma imagem de BLA indica para o decodificador que as imagens que precedem a imagem de BLA pode não estar disponível para o decodificador (por exemplo, porque dois fluxos de bits são emendados e a imagem de BLA é a primeira imagem do segundo fluxo de bits, em ordem de decodificação). Uma unidade de acesso (por exemplo, um grupo de imagens que consiste em todas as imagens codificadas associadas com o mesmo tempo de emissão através de múltiplas camadas) que contêm uma imagem de camada de base (por exemplo, tendo um valor de ID de camada de 0), que é uma imagem de IAPR pode ser referido como uma unidade de acesso IRAP.
Fim de Unidades de NAL de Fluxo de Bits
[0133] A figura 4 é um diagrama de blocos que ilustra uma unidade de acesso de um fluxo de bits multicamada de acordo com uma modalidade. Como mostrado na figura 4, uma unidade de acesso 400 inclui uma primeira unidade de NAL de Camada de Codificação de Vídeo (VCL) 460 e pode incluir uma ou mais outras unidades de NAL opcionais. Por exemplo, a unidade de acesso 400 pode incluir um ou mais de cada um dos seguintes: uma unidade de NAL delimitadora de unidade de acesso 410, uma unidade de NAL VPS 420, uma unidade de NAL SPS 430, uma unidade de NAL PPS 440, uma unidade de NAL SEI prefixo 450, imagem codificada adicional ou unidades de NAL não VCL 470, e uma unidade de NAL EoB 480. Cada uma das unidades de NAL opcionais listadas podem ser incluídas dependendo dos aspectos da implementação e outras estruturas de sintaxe também podem ser incluídas, dependendo do esquema de codificação de vídeo empregue para codificar ou decodificar a unidade de acesso.
[0134] De acordo com o esquema de HEVC, quando um bloco NAL EoB 480 está presente na unidade de acesso 400, a unidade de acesso deve ser uma unidade de acesso IAPR, que pode ser uma unidade de acesso de IDR, uma unidade de acesso BLA, ou uma unidade de acesso IRAP e fim de que o fluxo de bits codificado se conforme com o esquema de HEVC. Assim, quando incluída em uma unidade de acesso, a unidade de NAL EoB 480 indica que a seguinte unidade de acesso é uma unidade de acesso IRAP.
[0135] Nos esquemas de codificação de camada única convencionais (por exemplo, HEVC versão 1), cada unidade de acesso corresponde exclusivamente a uma única imagem. Uma vez que cada unidade de acesso contém uma única imagem, os termos "unidade de acesso" e "imagem" foram capazes de ser usados indiferentemente no contexto de esquemas de codificação de uma única camada, por exemplo, no que diz respeito à utilização de mensagens SEI de ponto de recuperação. No entanto, as unidades de acesso de esquemas de codificação de camadas múltiplas podem incluir uma imagem separada para cada camada do fluxo de bits. Em outras palavras, em um fluxo de bits multicamada, uma única unidade de acesso pode conter (ou seja, incluir ou compreender) uma pluralidade de imagens. Em algumas implementações de codificação multicamada, como o VM-HEVC e SHVC, cada unidade de NAL inclui um identificador de camada que identifica a camada na qual a unidade de NAL pertence. Por conseguinte, a camada de uma unidade de NAL EoB é definido com base em um valor de identificador de camada da unidade de NAL EoB. Nos esquemas de codificação de camada única convencionais, o identificador de camada para todas as unidades de NAL está restrito à mesma camada, ou seja, camada de zero. Em outras palavras, as unidades de NAL de esquemas de codificação de camada única convencionais são todas identificadas como pertencendo à mesma camada. No entanto, em esquemas de codificação multicamada, não existem tais restrições para o identificador de camada incluído dentro de unidades NAL, incluindo o identificador de camada associado com as unidades de NAL EoB.
[0136] Devido à natureza não restrita do identificador de camada de unidades de NAL EoB em esquemas de codificação de multicamada, um número de erros de decodificação indesejáveis pode ocorrer quando a unidade de NAL EoB tem um identificador de camada com um valor diferente de zero. Como um exemplo, um fluxo de bits codificado pode incluir uma camada de base (BL) e uma camada de acumulação (EL). Quando a largura de banda entre o codificador e o decodificador é restrita ou perde abaixo de um certo nível, a camada de acumulação (ou outras camadas que têm um identificador de camada diferente de camada zero) pode ser descartada (ou processada incorretamente) a partir do fluxo de bits para economizar largura de banda. Isto pode ocorrer, por exemplo, quando a largura de banda entre um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o codificador de vídeo 23) e um decodificador de vídeo (por exemplo, o decodificador de vídeo 30 ou o decodificador de vídeo 33) é limitado. Nesta situação, se a unidade de NAL EoB tem um identificador de camada com um valor de um ("1"), isto é, a unidade de NAL EoB está contida na camada de acumulação (SR), a unidade de NAL EoB irá perder do fluxo de bits e não será recebida pelo decodificador.
[0137] Há uma série de funcionalidades de esquemas de codificação que contam com as informações contidas dentro da unidade de NAL EoB. Por conseguinte, quando a unidade de NAL EoB perde do fluxo de bits, estas funções não funcionam como o esperado. Em um exemplo, um decodificador pode decodificar um fluxo de bits incluindo uma unidade de acesso de acesso aleatório limpo (CRA) de maneiras diferentes com base em se ou não uma unidade de NAL EoB está presente imediatamente antes da unidade de acesso CRA. Assim, se a unidade de NAL EoB perde da camada de acumulação, a decodificação da unidade de acesso de CRA seguinte não será executada conforme o esperado. Da mesma forma, outras funcionalidades de decodificação contam com a existência da unidade de NAL EoB para decodificação adequada, e, portanto, quando a unidade de NAL EoB tem um valor de identificador de camada indicando uma camada diferente de camada zero, a unidade de NAL EoB pode ser descartada, uma vez que está incluída em uma camada diferente da camada de base, é possível que o decodificador não irá ser capaz de decodificar corretamente o fluxo de bits.
[0138] Além disso, as padrões de codificação de multicamadas não definem qualquer funcionalidade adicional para permitir que uma unidade de NAL EoB tenha um identificador de camada com um valor diferente de zero. Assim, em pelo menos uma modalidade da presente descrição, todas as unidades de NAL EoB são definidas para ter um identificador de camada de zero. Especificamente, de acordo com a presente divulgação, a codificação da sequência de bits é realizada com base em uma restrição de que as unidades de NAL EoB tem um identificador de camada de zero. Ao restringir o identificador de camada de todas as unidades de NAL EoB para a camada zero, as unidades de NAL não serão descartadas (ou processadas incorretamente) uma vez que, tal como discutido acima, apenas as unidades de NAL possuindo um identificador de camada diferente da camada zero são descartadas. RPSs
[0139] Esquemas de codificação de vídeo podem manter um RPS associado com uma imagem da sequência de vídeo codificado (CVS). O RPS para uma determinada imagem contém um conjunto de imagens de referência, incluindo todas as imagens de referência anteriores à imagem associada em ordem de decodificação que podem ser usadas para a interpredição da imagem associada ou qualquer imagem após a imagem associada em ordem de decodificação. Como exemplo, no esquema HEVC, o RPS inclui cinco listas de RPS, três das quais são referidas coletivamente como os RPSs de curto prazo e as duas restantes que são coletivamente referidas como os RPSs de longo prazo. Os RPSs de curto prazo contêm todas as imagens de referência que podem ser usadas para a interpredição da imagem associada e uma ou mais imagens após a imagem associada em ordem de decodificação. Os RPSs de longo prazo contêm todas as imagens de referência que não são usadas para a interpredição da imagem associada, mas podem ser usadas para interconectar predicação de uma ou mais imagens que se seguem a imagem associada em ordem de decodificação.
[0140] A figura 5 é um diagrama de blocos que ilustra um exemplo de como um RPS é gerado por um codificador ou decodificador. Na descrição seguinte, o armazenador de imagem decodificada 510 irá ser descrito como incluído em um decodificador (por exemplo, o decodificador de vídeo 30 ou o decodificador de vídeo 33), no entanto o que se segue aplica-se igualmente a um codificador. Como mostrado na figura 5, uma pluralidade de imagens 520 a 528 é mantida no armazenador da imagem decodificada 510 do decodificador. Um RPS pode ser gerado para uma imagem e pode incluir referências a imagens contidas no armazenador de imagem decodificada 510. A primeira lista de RPS 530 inclui imagens 520, 522, 526 e 528, enquanto a segunda lista de RPS 540 inclui imagens 520, 524, 526, e 528. A modalidade da figura 5 é apenas um exemplo e os quadros incluídos em um RPS podem ser quaisquer imagens a partir do fluxo de bits que são usados para referência de acordo com as condições do sistema de codificação usado para codificar o fluxo de bits. As listas de RPS 530 e 540 podem ser listas de RPS convencionais, incluindo imagens que são usadas como referência para a decodificação de imagens dentro da mesma camada ou podem ser listas de RPS intercamada usada para decodificar imagens em camadas diferentes.
[0141] Esquemas de codificação de vídeo multivista, tais como as extensões escaláveis e multivistas para o esquema de HEVC, expandem o uso de RPSs para incluir RPSs para a predição intercamada. Em algumas modalidades, um RPS é definido para cada camada do fluxo de bits, ou seja, cada imagem mantém o seu próprio RPS. Além disso, RPSs adicional pode ser provido que inclui listas de imagens usadas para predição intercamada da imagem associada. A intercamada de RPS para cada imagem pode ser dividida em subconjuntos que correspondem às camadas de fluxo de bits. Por exemplo, um fluxo de bits em duas camadas, o RPS intercamada pode ser dividido em um subconjunto de camada zero e uma camada de um subconjunto, que será daqui em diante referido, respectivamente, como RPS intercamada de zero e RPS intercamada de um.
[0142] Tal como descrito anteriormente, as imagens podem ser perdidas (ou processadas incorretamente) a partir do fluxo de bits por várias razões, tais como os requisitos de largura de banda, ou as imagens podem ser perdidas na transmissão entre o codificador e o decodificador. Quando uma imagem de referência intercamada candidata não está presente no fluxo de bits recebido por um decodificador, ou seja, uma imagem de referência identificada em um subconjunto de intercamada de RPS não é recebida, uma entrada de "sem imagem de referência", indicando que não existe nenhuma imagem de referência deve ser inserida no Subconjunto de intercamada de RPS correspondente. O subconjunto apropriado pode ser determinado com base no identificador de ponto de vista (ID) da camada atual, o ID de vista da camada à qual a imagem de referência intercamada candidata pertence, e o ID de vista da camada de base. Aqui, o ID de vista se referido é análogo ao ID de camada e pode referir-se a vista da imagem dentro de um padrão codificação multivista.
[0143] Nas extensões escaláveis e multivistas atuais, a entrada "sem imagem de referência" só é inserida em RPS intercamada de zero, mesmo se a imagem de referência intercamada candidata, tivesse sido recebida pelo decodificador, teria sido adicionada ao RPS intercamada de um. Este comportamento é indesejável uma vez que a entrada "sem imagem de referência" deve ser indicada no local onde a imagem de referência intercamada faltante teria sido inserida. Sem correção, esse comportamento pode resultar em posicionamento relativo indesejado ou incorreto de imagens de referência intercamada nos dois subconjuntos intercamada de RPS, quando uma imagem de referência intercamada está faltando. Além disso, este comportamento também pode resultar nos tamanhos das listas incluídas nos subconjuntos intercamada de RPS estando incorretos. Isso poderia potencialmente levar a referência incorreta das imagens intercamada de referência ao decodificar o fluxo de bits. Por conseguinte, um outro objeto desta divulgação é corrigir este comportamento.
[0144] Em uma modalidade, o ID de vista da imagem atual é usada para determinar qual subconjunto intercamada de RPS de uma entrada de "sem imagem de referência" é inserido. Por exemplo, quando uma imagem de referência intercamada candidata não está presente para uma imagem, uma entrada de "sem imagem de referência" é incluída no subconjunto intercamada de RPS correspondente com base no ID de vista da imagem de referência intercamada faltante. Em outras modalidades, o ID de vista de outra camada pode também ser usado na determinação de qual subconjunto intercamada de RPS correspondente à imagem de referência intercamada candidata faltante. Por exemplo, o ID de vista da imagem de referência intercamada candidata, e o ID de vista da camada de base podem ser usados na determinação. Assim, ao incluir a entrada de "sem imagem de referência" no subconjunto de intercamada de RPS correspondente, o posicionamento relativo das imagens de referência intercamada nos subconjuntos de intercamada de RPS pode ser corrigido e os respectivos tamanhos de subconjuntos de intercamada de RPS também podem ser corrigidos.
[0145] Outro aspecto da presente divulgação pode dirigir uma inferência incorreta de uma perda na transmissão do fluxo de bits. As extensões escaláveis e multivistas propõem a inclusão de um flag descartável que indica se a imagem associada com o flag descartável não é usada para predição intercamada nem para interpredição por qualquer outra imagem. Em algumas modalidades, este flag é incluído no cabeçalho de fatia do fluxo de bits e tem o mesmo valor para todos os segmentos de fatia dentro da imagem associada. Nos esquemas de codificação multicamada convencionais, quando uma imagem tem um flag descartável associado indicando que a imagem é descartável, não há nenhuma exigência de que a imagem descartável não está presente em quaisquer RPSs temporais ou intercamada. Além disso, os esquemas convencionais também não impedem uma imagem descartável de estar presente nas listas de imagem de referência, desde que nenhuma PU se refira a uma PU na imagem descartável. Assim, uma imagem descartável pode ser incluída em uma lista de referência ou imagem de RPS desde que ela não seja usada para referência.
[0146] Se uma imagem descartável está incluída em uma lista de imagens RPS ou de referência, um decodificador pode inferir incorretamente uma perda e/ou pode introduzir ineficiências de largura de banda e decodificação devido à inclusão. Por exemplo, quando sob limitações de largura de banda, uma imagem descartável pode ser removida do fluxo de bits em ordem de economizar largura de banda uma vez que não irá ser usado para referência ao decodificar outras imagens no fluxo de bits. Quando a imagem descartada é incluída em um RPS, o decodificador irá reconhecer que a imagem descartada pode ser usada para referência por uma outra imagem que ainda não foi recebida pelo decodificador. Uma vez que o decodificador reconhece que a imagem descartada, pode ser usada para referência, ele pode solicitar uma retransmissão da imagem descartada a partir do codificador. Este comportamento irá reduzir a economia de banda que inicialmente foi obtida ao descartar a imagem descartável e levar a ineficiências no decodificador.
[0147] Assim, em pelo menos uma modalidade, a imagem que está associada com um flag descartável que indica que a imagem é descartável, isto é, tendo um valor de um, estão impedidas de serem incluindo em qualquer um dos RPSs intercamada ou RPSs temporais.
[0148] Em uma outra modalidade, um flag usado- para-referência pode ser associado unicamente com uma imagem. O flag usado-para-referência indica se a imagem associada é incluída em pelo menos um RPS. Nesta modalidade, apenas imagens que têm um flag usado-para- referência com um valor de um são autorizadas a serem incluídas em um RPS.
Fluxogramas Exemplares para Codificar Informação de Vídeo
[0149] Com referência à figura 6, irá ser descrito um exemplo do procedimento para a codificação de informação de vídeo com base em uma unidade de NAL EoB tendo um valor de identificação de camada com um valor de zero. A figura 6 é um fluxograma que ilustra um processo 600 para a codificação de informação de vídeo, de acordo com uma modalidade. As etapas ilustradas na figura 6 podem ser executadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou codificador de vídeo 23), um decodificador de vídeo (por exemplo, o decodificador de vídeo 30 ou decodificador de vídeo 33), ou qualquer outro componente. Por conveniência, o método 600 é descrito como realizado por um codificador de vídeo (também referido simplesmente como codificador), que pode ser o codificador de vídeo 20 ou 23, o decodificador de vídeo 30 ou 33, ou outro componente.
[0150] O método 600 começa no bloco 601. No bloco 605, o codificador determina se uma unidade de acesso incluída nas informações de vídeo inclui uma unidade de NAL EoB. No bloco 610, o codificador define um valor de identificação de camada para a unidade de NAL EoB para zero, de acordo com uma restrição. A informação de vídeo a ser codificada inclui, pelo menos, uma unidade de NAL EoB que inclui uma camada de valor de identificação que identifica a camada à qual a unidade de NAL EoB pertence. No bloco 615, o codificador codifica a informação de vídeo com base, pelo menos em parte, em e um valor de zero para o valor de identificação de camada. O método termina em 620.
[0151] Com referência à figura 7, um procedimento exemplar para indicar que não existe imagem de referência em um subconjunto intercamada de RPS para a decodificação de vídeo será descrito. A figura 7 é um fluxograma que ilustra um processo 700 para decodificar a informação de vídeo, de acordo com uma modalidade. As etapas ilustradas na figura 7 podem ser executadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou codificador de vídeo 23), um decodificador de vídeo (por exemplo, o decodificador de vídeo 30 ou decodificador de vídeo 33), ou qualquer outro componente. Por conveniência, o método 700 é descrito como realizado por um decodificador de vídeo (também referido simplesmente como decodificador), que pode ser o codificador de vídeo 20 ou 23 ou o decodificador de vídeo 30 ou 33, ou outro componente.
[0152] O método 700 começa no bloco 701. No bloco 705, o decodificador determina se uma imagem de referência intercamada candidata está presente na informação de vídeo. As imagens podem ser perdidas da informação de vídeo codificada em resposta a limites de largura de banda ou inesperadamente podem ser perdidas durante a transmissão de um codificador. Assim, o decodificador pode determinar se a imagem de referência intercamada candidata foi perdida da informação de vídeo através da determinação se a imagem candidato referência intercamada está presente.
[0153] O método continua para o bloco 710, onde o decodificador determina um subconjunto intercamada de RPS ao qual a imagem de referência intercamada candidata pertence em resposta à determinação de que a imagem de referência intercamada candidata não está presente. Por exemplo, esta determinação pode incluir a determinação de qual subconjunto da imagem de referência intercamada candidata teria sido incluído se ele estivesse presente na informação de vídeo. Em algumas modalidades, isto pode incluir a determinação do ID de visualização da camada atual, o ID de vista da imagem de referência intercamada candidata, e/ou o ID de vista da camada de base.
[0154] Continuando no bloco 715, o decodificador indica que nenhuma imagem de referência está presente no subconjunto de intercamada de RPS ao qual a imagem de referência intercamada candidata pertence. O método termina em 720.
[0155] Com referência à figura 8, será descrito um procedimento exemplar para determinar se inclui uma imagem em um RPS para a codificação de vídeo. A figura 8 é um fluxograma que ilustra um processo 800 para a codificação de informação de vídeo, de acordo com uma modalidade. As etapas ilustradas na figura 8 podem ser executadas por um codificador (por exemplo, o codificador de vídeo 20, o codificador de vídeo 23), um decodificador de vídeo (por exemplo, o decodificador de vídeo 30 ou o decodificador de vídeo 33), ou qualquer outro componente. Por conveniência, o método 800 é descrito como realizado por um codificador de vídeo, que pode ser o codificador de vídeo 20 ou 23, o decodificador de vídeo 30 ou 33, ou outro componente.
[0156] O método 800 começa no bloco 801. No bloco 805, o codificador determina se uma imagem atual de informação de vídeo é uma imagem descartável. Cada imagem pode, por exemplo, incluir um flag descartável que indica se a imagem é uma imagem descartável. Em algumas modalidades, uma imagem pode ser identificada como uma imagem descartável apenas quando ela não está incluída em qualquer RPS.
[0157] O método continua no bloco 810, onde o codificador abstém-se de incluir a imagem atual em um RPS com base na determinação de que a imagem atual é uma imagem descartável. O método termina em 815.
[0158] Nos métodos 600 a 800, um ou mais dos blocos mostrados nas figuras 6-8 podem ser removidos (por exemplo, não realizados) e/ou a ordem na qual os métodos são realizados pode ser comutada. Em algumas modalidades, os blocos adicionais podem ser adicionados aos métodos 600 a 800. As modalidades da presente invenção não estão limitadas a ou pelos exemplos mostrados nas figuras 6 a 8, e outras variações podem ser executadas sem se afastar do espírito da presente divulgação. Implementação Exemplar (s)
[0159] Algumas modalidades encontram-se resumidas e descritas abaixo. Quando certas partes da especificação de HEVC são reproduzidas para ilustrar as adições e deleções que podem ser incorporadas para implementar um ou mais dos métodos aqui descritos, tais modificações estão apresentadas em itálico e riscado, respectivamente. Alterações relacionadas com a unidade de NAL EoB
[0160] Em algumas implementações da presente invenção, as unidades de NAL EoB podem ser modificadas como descrito abaixo. Table 1 – Modificações de semânticas de unidade de NAL EoBMudanças no processo de decodificação de RPS intercamda
[0161] Em algumas implementações da presente divulgação, um RPS intercamada pode ser modificado como descrito abaixo. Tabela 2 - Modificações de semânticas de RPS intercamada
Mudanças no processo de decodificação de RPS
[0162] Em algumas implementações (por exemplo, SHVC, MV-HEVC, etc.), o RPS pode ser modificado como descrito abaixo. Tabela 3 - Modificações de semânticas de RPS
Outras Considerações
[0163] A informação e sinais aqui divulgados podem ser representados utilizando qualquer uma de uma variedade de tecnologias e técnicas diferentes. Por exemplo, dados, instruções, comandos, informação, sinais, bits, símbolos, e chips que podem ser referenciados em toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, campos magnéticos ou partículas, campos ópticos ou partículas, ou qualquer combinação dos mesmos.
[0164] Os vários blocos lógicos ilustrativos, circuitos, e etapas de algoritmo descritos em ligação com as modalidades aqui divulgadas podem ser implementados como hardware eletrônico, software de computador, ou combinações de ambos. Para ilustrar claramente esta permutabilidade de hardware e software, vários componentes ilustrativos, blocos, circuitos, e etapas foram descritos acima, geralmente em termos da sua funcionalidade. Se tal funcionalidade é implementada como hardware ou software depende da aplicação específica e limitações de projeto impostas ao sistema global. Os versados na técnica podem implementar a funcionalidade descrita de maneiras diferentes para cada aplicação em particular, mas tais decisões de execução não devem ser interpretadas como causa de um afastamento do âmbito da presente divulgação.
[0165] As técnicas aqui descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Tais técnicas podem ser implementadas em qualquer uma de uma variedade de dispositivos, tais como computadores de propósito geral, aparelhos telefônico de dispositivo de comunicação sem fio, ou dispositivos de circuitos integrados que têm múltiplas utilizações incluindo a aplicação em aparelhos de telefônicos de dispositivos de comunicação sem fio e outros dispositivos. Quaisquer recursos descritos como componentes podem ser implementados em conjunto em um dispositivo de lógica integrada ou separadamente, como dispositivos lógicos discretos, mas interoperáveis. Se implementadas em software, as técnicas podem ser realizadas, pelo menos em parte por um meio de armazenamento de dados legível por computador compreendendo código de programa incluindo instruções que, quando executadas, realizam um ou mais dos métodos descritos acima. O meio de armazenamento de dados legível por computador pode fazer 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 de mídia de armazenamento de dados, tais como memória de acesso aleatório (RAM) tal como memória de acesso aleatório síncrona dinâmica (SDRAM), memória somente de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória somente de leitura programável eletricamente apagável (EEPROM), memória flash, meios de armazenamento de dados magnéticos ou ópticos, e similares. As técnicas adicionalmente, ou alternativamente, podem ser realizadas, pelo menos em parte por um meio de comunicação legível por computador que porta ou comunica o código de programa sob a forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador, tais como sinais ou ondas propagados.
[0166] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, um circuito integrado de aplicação específica (ASIC), arranjos de porta programáveis em campo (FPGAs), ou outro equivalente integrado ou conjunto de circuitos lógicos discretos. Tal um processador pode ser configurado para realizar qualquer uma das técnicas descritas nesta divulgação. Um processador de propósito geral pode ser um microprocessador; mas, em alternativa, o processador pode ser qualquer processador convencional, controlador, microcontrolador, ou máquina de estados convencional. Um processador pode também ser implementado 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 DSP, ou qualquer outro tipo de configuração. Por conseguinte, o termo "processador" tal como aqui usado pode referir-se a qualquer estrutura acima, qualquer combinação da estrutura acima, ou qualquer outra estrutura ou aparelho adequado para execução das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de software ou hardware dedicado configurado para codificação e decodificação, ou incorporado em um codificador- decodificador de vídeo combinado (codec). Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0167] As técnicas desta divulgação podem ser implementadas em uma vasta variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes ou unidades são descritos nesta divulgação para enfatizar os aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente de realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou providas por um conjunto de unidades de hardware interoperativo, incluindo um ou mais processadores, conforme descrito acima, em conjunto com o software e/ou firmware adequado.
[0168] Diversas modalidades da invenção foram descritas. Estas e outras modalidades estão dentro do âmbito das reivindicações seguintes.

Claims (13)

1. Método para codificar informações de vídeo de um fluxo de bits de múltiplas camadas caracterizado pelo fato de que compreende: determinar a possibilidade de uma imagem atual das informações de vídeo ser uma imagem descartável, uma imagem descartável sendo uma imagem que não é usada para predição entre camadas nem para interpredição, em que a determinação da possibilidade de a imagem atual ser uma imagem descartável é baseada, pelo menos em parte, em um sinalizador descartável associado à imagem atual; e abster-se de incluir a imagem atual em um conjunto de imagens de referência, RPS, com base na determinação de que a imagem atual é uma imagem descartável de acordo com uma restrição de que imagens que têm sinalizador descartável igual a um não devem ser incluídas em um RPS, e em que o sinalizador descartável está incluído em um cabeçalho de fatia do fluxo de bits de múltiplas camadas e tem o mesmo valor para todos os segmentos de fatia em uma imagem associada.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar a possibilidade de a imagem atual ser uma imagem descartável compreende determinar a possibilidade de a imagem atual ser usada para predição entre camadas ou interpredição.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o sinalizador descartável associado à imagem atual indica a possibilidade de a imagem atual ser usada para predição entre camadas ou interpredição.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que o sinalizador descartável indica que a imagem atual é uma imagem descartável quando o sinalizador descartável tem um valor igual a um.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o RPS compreende um RPS entre camadas ou um RPS temporal.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente codificar as informações de vídeo com base, pelo menos em parte, no RPS.
7. Aparelho caracterizado pelo fato de que compreende: meio para determinar a possibilidade de uma imagem atual das informações de vídeo ser uma imagem descartável, sendo que uma imagem descartável é uma imagem que não é usada para a predição entre camadas nem para interpredição, em que a determinação da possibilidade de a imagem atual ser uma imagem descartável é baseada, pelo menos em parte, em um sinalizador descartável associado à imagem atual; e meio para abster-se de incluir a imagem atual em um conjunto de imagens de referência, RPS, com base na determinação de que a imagem atual é uma imagem descartável de acordo com uma restrição de que imagens que têm sinalizador descartável igual a um não sejam incluídas em um RPS, e em que o sinalizador descartável está incluído em um cabeçalho de fatia do fluxo de bits de múltiplas camadas e tem o mesmo valor para todos os segmentos de fatia em uma imagem associada.
8. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que o meio para determinar a possibilidade de a imagem atual ser uma imagem descartável compreende meio para determinar a possibilidade de a imagem atual ser usada para predição entre camadas ou interpredição.
9. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que o meio para determinar a possibilidade de a imagem atual ser uma imagem descartável compreende meio para determinar um valor descartável, o sinalizador descartável associado à imagem atual que indica a possibilidade de a imagem atual ser usada para predição entre camadas ou interpredição.
10. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que o sinalizador descartável indica que a imagem atual é uma imagem descartável quando o sinalizador descartável tem um valor igual a um.
11. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que o RPS compreende um RPS entre camadas ou um RPS temporal.
12. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que compreende adicionalmente meio para codificar as informações de vídeo com base, pelo menos em parte, no RPS.
13. Memória legível por computador, caracterizada pelo fato de compreende instruções nela armazenadas que, quando executadas, fazem com que o computador realize o método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112016015560-2A 2014-01-03 2014-12-30 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 BR112016015560B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461923607P 2014-01-03 2014-01-03
US61/923,607 2014-01-03
US14/585,041 2014-12-29
US14/585,041 US20150195564A1 (en) 2014-01-03 2014-12-29 Method for coding a reference picture set (rps) in multi-layer coding
PCT/US2014/072722 WO2015103246A1 (en) 2014-01-03 2014-12-30 Method for coding a reference picture set (rps) in multi-layer coding

Publications (2)

Publication Number Publication Date
BR112016015560A2 BR112016015560A2 (pt) 2020-08-18
BR112016015560B1 true BR112016015560B1 (pt) 2023-08-01

Family

ID=

Similar Documents

Publication Publication Date Title
ES2854274T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
BR112016008225B1 (pt) Aparelhos e métodos para codificação e decodificação de informações de vídeo e memória legível por computador
EP3090551B1 (en) Support of base layer of a different codec in multi-layer video coding
BR112016024233B1 (pt) Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas
BR112016029751B1 (pt) Método e dispositivo para codificar um fluxo de bits de acordo com hevc escalonável, uma extensão 3d de hevc ou uma extensão de múltiplas vistas de hevc, e método e dispositivo para decodificar dados de vídeo de acordo com hevc escalonável, uma extensão 3d de hevc ou uma extensão de múltiplas vistas de hevc
BR112016021489B1 (pt) Método e equipamento para codificação de informação de vídeo, e,memória legível por computador
BR112016015893B1 (pt) Método de decodificação de informações de vídeo, aparelho configurado para decodificar informações de vídeo e memória legível por computador
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
EP3158760B1 (en) Full picture order count reset for multi-layer codecs
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
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
BR112016001223B1 (pt) Aparelho e método para codificar ou decodificar informações de vídeo e memória legível por computador
US9848199B2 (en) Device and method for scalable coding of video information
ES2887369T3 (es) Método y dispositivo para decodificar un conjunto de instantáneas de referencia inter capa (RPS) en decodificación multicapa
CA2930446C (en) Method for coding a reference picture set (rps) in multi-layer coding
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
BR112016022251B1 (pt) Uso de mensagens de sei de hevc específicas para codecs de vídeo de multicamada
BR112016030211B1 (pt) Restrições de conformidade de fluxo de bits em codificação de vídeo escalonável
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
BR112016001121B1 (pt) Dispositivo e método para codificação escalável de informações de vídeo e memória legível por computador
BR112016015568B1 (pt) Método e aparelho para codificar ou decodificar dados de vídeo e memória legível por computador
BR112016015931B1 (pt) Suporte de camada-base de não hevc em extensões de muticamadas de hevc
BR112016015918B1 (pt) Suporte de camada base não-hevc em extensões de muticamada de hevc