BR112016024233B1 - Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas - Google Patents

Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas Download PDF

Info

Publication number
BR112016024233B1
BR112016024233B1 BR112016024233-5A BR112016024233A BR112016024233B1 BR 112016024233 B1 BR112016024233 B1 BR 112016024233B1 BR 112016024233 A BR112016024233 A BR 112016024233A BR 112016024233 B1 BR112016024233 B1 BR 112016024233B1
Authority
BR
Brazil
Prior art keywords
video
layer
base layer
image
encoding
Prior art date
Application number
BR112016024233-5A
Other languages
English (en)
Other versions
BR112016024233A2 (pt
BR112016024233A8 (pt
Inventor
Vadim SEREGIN
Jianle Chen
Ye-Kui Wang
Ying Chen
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
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016024233A2 publication Critical patent/BR112016024233A2/pt
Publication of BR112016024233A8 publication Critical patent/BR112016024233A8/pt
Publication of BR112016024233B1 publication Critical patent/BR112016024233B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

informações de janela de conformidade na criptografia de múltiplas camadas trata-se de um sistema e método para criptografar uma figuração em um fluxo de bits de múltiplas camadas. em um aspecto, o método inclui codificar pelo menos uma camada do fluxo de bits de múltiplas camadas de acordo com um primeiro esquema de criptografia. o fluxo de bits de múltiplas camadas pode compreender uma camada-base. o método inclui adicionalmente codificar um sinalizador de janela de conformidade e pelo menos um deslocamento de posição para a figuração em um conjunto de parâmetros de vídeo (vps) da camada-base. o sinalizador de janela de conformidade pode indicar que o vps compreende o pelo menos um deslocamento de posição.

Description

CAMPO DA TÉCNICA
[0001] Esta revelação refere-se, em geral, ao campo de criptografia e compactação de vídeo, e particularmente à criptografia de imagens com base em informações de janela de conformidade.
ANTECEDENTES DESCRIÇÃO DA TÉCNICA RELACIONADA
[0002] As capacidades do vídeo digital podem ser incorporadas em uma ampla faixa de dispositivos, que incluem televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores do tipo laptop ou desktop, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, consoles de videogame, telefones celulares ou de rádio via satélite, dispositivos de teleconferência por vídeo, e semelhantes. Os dispositivos de vídeo digital implantam técnicas de compactação de vídeo, como aquelas descritas nos padrões definidos por Grupo Especialista em Imagem em Movimento 2 (MPEG-2), MPEG-4, União de Telégrafo Internacional-Setor de Padronização de Telecomunicação (ITU-T) H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC), e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de modo mais eficiente ao implantar tais técnicas de criptografia de vídeo.
SUMÁRIO
[0003] Os sistemas, métodos e dispositivos desta revelação têm, cada um, diversos aspectos inovadores, nenhum dos quais é responsável apenas pelos atributos desejáveis revelados no presente documento.
[0004] Em um aspecto, fornece-se um método para codificar uma imagem em um fluxo de bits de múltiplas camadas que pode envolver codificar pelo menos uma camada do fluxo de bits de múltiplas camadas de acordo com um primeiro esquema de criptografia, sendo que o fluxo de bits de múltiplas camadas compreende uma camada-base. O método também pode envolver codificar um sinalizador de janela de conformidade e pelo menos um deslocamento de posição para a imagem em um Conjunto de Parâmetros de Vídeo (VPS) da camada-base, sendo que o sinalizador de janela de conformidade indica que o VPS compreende o pelo menos um deslocamento de posição.
[0005] Em um outro aspecto, fornece-se um aparelho para codificar uma imagem em um fluxo de bits de múltiplas camadas que pode incluir uma memória, assim como um processador de hardware acoplado de modo operacional à memória e configurado para codificar pelo menos uma camada do fluxo de bits de múltiplas camadas de acordo com um primeiro esquema de criptografia, sendo que o fluxo de bits de múltiplas camadas compreende uma camada-base. O processador pode ser adicionalmente configurado para codificar um sinalizador de janela de conformidade e pelo menos um deslocamento de posição em um Conjunto de Parâmetros de Vídeo (VPS) da camada-base, em que o sinalizador de janela de conformidade indica que o VPS compreende o pelo menos um deslocamento de posição.
[0006] Em um aspecto, fornece-se um método para decodificar uma imagem em um fluxo de bits de múltiplas camadas que pode envolver receber o fluxo de bits de múltiplas camadas, sendo que o fluxo de bits de múltiplas camadas compreende uma camada-base. O método também pode envolver decodificar um sinalizador de janela de conformidade e pelo menos um deslocamento de posição em um Conjunto de Parâmetros de Vídeo (VPS) da camada-base, sendo que o sinalizador de janela de conformidade indica que o VPS compreende o pelo menos um deslocamento de posição.
[0007] Em ainda um outro aspecto, fornece-se um aparelho para decodificar uma imagem em um fluxo de bits de múltiplas camadas que pode incluir uma memória, assim como um processador de hardware acoplado de modo operacional à memória e configurado para receber o fluxo de bits de múltiplas camadas em um codec de vídeo, sendo que o fluxo de bits de múltiplas camadas compreende uma camada- base. O processador pode ser adicionalmente configurado para criptografar um sinalizador de janela de conformidade e pelo menos um deslocamento de posição em um Conjunto de Parâmetros de Vídeo (VPS) da camada-base, em que o sinalizador de janela de conformidade indica que o VPS compreende o pelo menos um deslocamento de posição.
BREVE DESCRIÇÃO DOS DESENHOS
[0008] A Figura 1A é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificativo que pode utilizar técnicas de acordo com os aspectos descritos nesta revelação.
[0009] A Figura 1B é um diagrama de blocos que ilustra um outro sistema de codificação e decodificação de vídeo exemplificativo que pode realizar técnicas de acordo com os aspectos descritos nesta revelação.
[0010] A Figura 2A é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar técnicas de acordo com os aspectos descritos nesta revelação.
[0011] A Figura 2B é um diagrama de blocos que ilustra um outro exemplo de um codificador de vídeo que pode implantar técnicas de acordo com os aspectos descritos nesta revelação.
[0012] A Figura 3A é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implantar técnicas de acordo com os aspectos descritos nesta revelação.
[0013] A Figura 3B é um diagrama de blocos que ilustra um outro exemplo de um decodificador de vídeo que pode implantar técnicas de acordo com os aspectos descritos nesta revelação.
[0014] A Figura 4 ilustra um diagrama esquemático exemplificativo que ilustra uma técnica para utilizar informações de janela de conformidade.
[0015] A Figura 5 é um fluxograma de uma modalidade exemplificativa de um processo para codificar uma imagem de acordo com o(s) aspecto(s) descrito(s) nesta revelação.
[0016] A Figura 6 é um fluxograma de uma modalidade exemplificativa de um processo para decodificar uma imagem de acordo com o(s) aspecto(s) descrito(s) nesta revelação.
DESCRIÇÃO DETALHADA
[0017] Em geral, esta revelação se refere à criptografia de imagens com base em informações de janela de conformidade no contexto de codecs de vídeo avançados, como Codificação de Vídeo de Alta Eficiência (HEVC), Codificação de Vídeo Avançada (AVC), etc.
[0018] Uma janela de conformidade se refere, em geral a uma janela de amostras de uma imagem em uma sequência de vídeo criptografada que são produzidas a partir de um processo de criptografia. Um fluxo de bits pode fornecer parâmetros de recorte de janela de conformidade para indicar a região de saída da imagem criptografada. Por exemplo, uma janela pode ser uma região retangular especificada com o uso de coordenadas de imagem sinalizadas. As coordenadas de imagem podem ser sinalizadas em relação a uma camada de referência.
[0019] A região de saída resultante especificada em relação à camada de referência pode ser usada como a entrada para vários processos, incluindo um processo de reamostragem. Por exemplo, o processo de reamostragem pode utilizar a janela de conformidade, que contém deslocamentos superior, inferior, esquerdo e direito (sinalizados em relação à camada de referência) para calcular a imagem de saída.
[0020] Na extensão escalável para AVC (conhecida como SVC) e a extensão escalável para HEVC (conhecida como SHVC), as informações de vídeo podem ser fornecidas em múltiplas camadas. A camada no nível mais inferior pode servir como uma camada-base e a camada no nível mais superior pode servir como uma camada de aprimoramento. A “camada de aprimoramento” é, às vezes, referida como uma “camada aprimorada”, e esses termos são usados de modo intercambiável. A camada-base é, às vezes, referida como uma “camada de referência”, e esses termos também podem ser usados de modo intercambiável. Todas as camadas entre as camadas superior e inferior podem servir tanto como camadas de aprimoramento e camadas-base. Por exemplo, uma camada no meio pode ser uma camada de aprimoramento para as camadas abaixo da mesma, e ao mesmo tempo, uma camada-base para as camadas acima da mesma.
[0021] Em fluxos de bits de múltiplas camadas, as camadas podem ser criptografadas com o uso de diferentes esquemas de criptografia. Isso pode ocorrer, por exemplo, quando uma única camada for dimensionada para formar um fluxo de bits de múltiplas camadas. Por exemplo, uma camada de aprimoramento criptografada em SHVC pode ser combinada com uma camada-criptografada em HEVC para formar um fluxo de bits de múltiplas camadas. Devido ao fato de que SHVC é a extensão escalável de HEVC, SHVC e HEVC podem ser referidas como esquemas de criptografia “associados”. No entanto, em algumas ocasiões, as camadas em um fluxo de bits de múltiplas camadas individuais podem ser criptografadas com o uso de diferentes esquemas de criptografia que não são associados. Por exemplo, uma camada-base criptografada com o uso de AVC pode ser combinada com uma camada de aprimoramento criptografada com o uso de SHVC, em vez de SVC (a extensão escalável de AVC). Em tais ocasiões, as informações de janela de conformidade da camada-base não podem estar disponíveis para uso por vários fins, como um processo de reamostragem. Assim, deseja-se um sistema e um método para transmitir e/ou receber informações de janela de conformidade das camadas- base criptografadas com o uso de um esquema de criptografia que não é associado ao esquema de criptografia do codec que recebe a camada de referência. Determinadas tecnologias que fornecem informações de janela de conformidade para tais camadas de referência são descritas abaixo.
[0022] As modalidades da presente revelação fornecem sistemas e métodos para transmitir informações de janela de conformidade com o uso da camada-base de um fluxo de bits de múltiplas camadas. Uma camada-base sinalizador de janela de conformidade pode ser definida em um codec que usa um esquema de criptografia de extensão escalável quando o codec recebe uma camada-base que foi criptografada com o uso de um esquema de criptografia de linha de base que não corresponde ao esquema de criptografia de extensão escalável. O sinalizador pode indicar que os deslocamentos de posição de camada-base seguirão o fornecimento de informações de posicionamento para a imagem reamostrada. O codec de vídeo pode, então, utilizar tais informações em vários processos, como o processo de reamostragem ou nos outros processos que envolvem o uso de informações de janela de conformidade.
[0023] Embora determinadas modalidades sejam descritas no presente documento no contexto dos padrões HEVC e/ou H.264, uma pessoa de habilidade comum na técnica pode observar que os sistemas e métodos revelados no presente documento podem ser aplicáveis a qualquer padrão de criptografia de vídeo adequada. Por exemplo, as modalidades reveladas no presente documento podem ser aplicáveis a um ou mais dos padrões a seguir: Setor de Padronização de Telecomunicação (ITU-T) da União de Telecomunicação Internacional (ITU) H.261, Organização Internacional para Padronização/Comissão Eletrotécnica Internacional (ISO/IEC) MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), que inclui as extensões escalonáveis e múltiplas vistas. Também, as técnicas descritas nesta revelação podem se tornar parte de padrões desenvolvidos no futuro. Em outras palavras, as técnicas descritas nesta revelação podem ser aplicáveis aos padrões de criptografia de vídeo anteriormente desenvolvidas, padrões de criptografia de vídeo atualmente em desenvolvimento, e próximos padrões de criptografia de vídeo.
[0024] A HEVC segue, em geral, a estrutura de padrões de criptografia de vídeo anteriores em muitos sentidos. A unidade de predição em HEVC é diferente das unidades de predição (por exemplo, macroblocos) em determinados padrões de codificação de vídeo anteriores. De fato, o conceito de um macrobloco não existe em HEVC conforme compreendido em determinados padrões de codificação de vídeo anteriores. Um macrobloco é substituído por uma estrutura hierárquica com base em um esquema de quadtree, que pode fornecer alta flexibilidade, dentre outros benefícios possíveis. Por exemplo, no esquema de HEVC, três tipos de blocos, CU, PU, e unidade de transformada (TU), são definidos. A CU pode se referir à unidade básica de divisão de região. A CU pode ser considerada análoga ao conceito de macrobloco, mas a HEVC não se restringe ao tamanho máximo de CUs e pode permitir a divisão recursiva em Cus de quatro tamanhos iguais para aprimorar a adaptividade de conteúdo. A PU pode ser considerada a unidade básica de inter/intrapredição, e uma única PU pode conter múltiplas partições de formato arbitrário para codificar efetivamente os padrões de imagem irregulares. A TU pode ser considerada a unidade básica de transformada. A TU pode ser definida independentemente da PU; no entanto, o tamanho de uma TU pode ser limitado ao tamanho da CU à qual a TU pertence. Essa separação da estrutura de bloco em três conceitos diferentes pode permitir que cada unidade seja otimizada de acordo com o respectivo papel da unidade, que pode resultar na eficiência de codificação aprimorada.
[0025] Para fins de ilustração apenas, as determinadas modalidades reveladas no presente documento são descritas com exemplos que incluem apenas duas camadas (por exemplo, uma camada inferior como a camada-base, e uma camada superior como a camada de intensificação) dos dados de vídeo. Uma “camada” de dados de vídeo pode se referir, em geral, a uma sequência de imagens que tem pelo menos uma característica comum, como uma vista, uma taxa de quadro, uma resolução ou semelhantes. Por exemplo, uma camada pode incluir dados de vídeo associados a uma vista específica (por exemplo, em perspectiva) de dados de vídeo de múltiplas vistas. Como um outro exemplo, uma camada pode incluir dados de vídeo associados a uma camada específica de dados de vídeo escalonáveis. Assim, esta revelação pode se referir, de modo intercambiável, a uma camada e uma vista de dados de vídeo. Ou seja, uma vista de dados de vídeo pode ser referida como uma camada de dados de vídeo, e uma camada de dados de vídeo pode ser referida como uma vista de dados de vídeo. Além disso, um codec de múltiplas camadas (também referido como um codificador de vídeo múltiplas camadas ou codificador-decodificador de múltiplas camadas) pode se referir, em conjunto, a um codec de múltiplas vistas ou um codec escalonável (por exemplo, um codec configurado para codificar e/ou decodificar dados de vídeo com o uso da extensão de múltiplas vistas para HEVC (MV-HEVC), a extensão tridimensional para HEVC (3D-HEVC), SHVC ou uma outra técnica de criptografia de múltiplas camadas). A codificação de vídeo e a decodificação de vídeo podem, ambas, ser referidas como criptografia de vídeo. Deve-se compreender que tais exemplos podem ser aplicáveis às conimagens que incluem múltiplas camadas-base e/ou camadas de intensificação. Além disso, para facilitar a explicação, a revelação a seguir inclui os termos “quadros” ou “blocos” com referência a determinadas modalidades. No entanto, esses termos não significam que sejam limitantes. Por exemplo, as técnicas descritas abaixo podem ser usadas com quaisquer unidades de vídeo adequadas, como blocos (por exemplo, CU, PU, TU, macroblocos, etc.), fatias, quadros, etc.
PADRÕES DE CRIPTOGRAFIA DE VÍDEO
[0026] 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 é tipicamente dezenas de centenas. Cada pixel contém tipicamente informações de luminância e crominância. Sem compactação, a quantidade completa de informações a serem conduzidas de um codificador de imagem para um decodificador de imagem tornaria a transmissão de imagem em tempo real impossível. Para reduzir a quantidade de informações a serem transmitidas, inúmeros métodos de compactação diferentes, como padrões JPEG, MPEG e H.263, foram desenvolvidos.
[0027] Os padrões de criptografia de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264, incluindo as extensões escaláveis e de múltiplas vistas.
[0028] Além disso, um padrão de criptografia de vídeo, ou seja, HEVC, foi desenvolvido pelo Time Colaborativo Conjunto em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e ISO/IEC MPEG. A citação total para o HEVC Draft 10 é o documento JCTVC-L1003, Bross et al, “High Efficiency Video Coding (HEVC) Text Specification Draft 10”, Time Colaborativo Conjunto em Codificação de Vídeo (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 de múltiplas vistas para HEVC, ou seja, MV-HEVC, e a extensão escalonável para HEVC, chamada SHVC, também são desenvolvidas pelo 3V (Time Colaborativo Conjunto em Desenvolvimento de Extensão de Codificação de Vídeo em 3D ITU-T/ISO/IEC) e JCT-VC, respectivamente.
SISTEMA DE CRIPTOGRAFIA DE VÍDEO
[0029] Vários aspectos dos sistemas, aparelhos, e métodos inovadores são descritos mais completamente mais adiante no presente documento com referência aos desenhos anexos. Esta revelação pode, no entanto, ser incorporada de muitas formas diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apresentada ao longo desta revelação. Ao invés disso, esses aspectos são fornecidos de modo que essa revelação seja meticulosa e completa, e irá conduzir totalmente o escopo da revelação àqueles versados na técnica. Com base nos ensinamentos no presente documento, um versado na técnica deve observar que o escopo da revelação é destinado a cobrir quaisquer aspectos dos sistemas, aparelhos e métodos inovadores revelados no presente documento, independente de estarem implantados independentemente ou combinados com qualquer outro aspecto da revelação. Por exemplo, um aparelho pode ser implantado ou um método pode ser praticado com o uso de qualquer número dos aspectos estabelecidos no presente documento. Além disso, o escopo da presente revelação é destinado a cobrir tal aparelho ou método que é praticado com o uso de outra estrutura, funcionalidade ou estrutura e funcionalidade adicionalmente ou além dos vários aspectos da presente revelação estabelecidos no presente documento. Deve-se compreender que qualquer aspecto revelado no presente documento pode ser incorporado por um ou mais elementos de uma reivindicação.
[0030] Embora os aspectos específicos sejam descritos no presente documento, muitas variações e permutações desses aspectos estão dentro do escopo da revelação. Embora alguns benefícios e algumas vantagens dos aspectos preferenciais sejam mencionados, o escopo da revelação não se destina a ser limitado aos benefícios, usos ou objetivos específicos. Ao invés disso, os aspectos da revelação são destinados a serem amplamente aplicáveis às diferentes tecnologias sem fio, conimagens de sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados por meio de exemplo nas Figuras e na descrição a seguir dos aspectos preferenciais. A descrição detalhada e os desenhos são meramente ilustrativos da revelação em vez de limitantes, sendo que o escopo da revelação é definido pelas reivindicações anexas e os equivalentes das mesmas.
[0031] Os desenhos anexos ilustram exemplos. Os elementos indicados pelas referências numéricas nos desenhos anexos correspondem aos elementos indicados pelas referências numéricas semelhantes na descrição a seguir. Nesta revelação, os elementos que têm nomes que iniciam com palavras originais (por exemplo, “primeiro”, “segundo”, “terceiro”, e assim em diante) não implicam necessariamente no fato de que os elementos têm uma ordem específica. Em vez disso, tais palavra referentes a ordinais são meramente usadas para se referir aos diferentes elementos de um mesmo tipo ou tipo semelhante.
[0032] A Figura 1A é um diagrama de blocos que ilustra um sistema de criptografia de vídeo 10 exemplificativo que pode utilizar técnicas de acordo com os aspectos descritos nesta revelação. Conforme usado descrito no presente documento, o termo “criptógrafo de vídeo” se refere, genericamente, tanto a codificadores de vídeo quanto a decodificadores de vídeo. Nesta revelação, os termos “criptografia de vídeo” ou “criptografia” podem se referir genericamente à 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 no presente pedido pode ser se estendem a outros dispositivos relacionados como transcriptadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e recodificar um outro fluxo de bits) e middleboxes (por exemplo, dispositivos que podem modificar, transformar e/ou, de outro modo, manipular um fluxo de bits).
[0033] Conforme mostrado na Figura 1A, o sistema de criptografia de vídeo 10 inclui um dispositivo de fonte 12 que gera dados de vídeo codificados a serem decodificados em um tempo mais anterior por um dispositivo de destino 14. No exemplo da Figura 1A, o dispositivo de fonte 12 e dispositivo de destino 14 constituem dispositivos separados. Nota-se, no entanto, que o dispositivo de fonte 12 e o dispositivo de destino 14 podem estar no mesmo dispositivo ou ser parte do mesmo, conforme mostrado no exemplo da Figura 1B.
[0034] Com referência mais uma vez à Figura 1A, o dispositivo de fonte 12 e o dispositivo de destino 14 podem, respectivamente, compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores do tipo desktop, computadores do tipo notebook (por exemplo, laptop), computadores do tipo tablet, decodificadores de sinais, fones de telefones como os denominados telefones “inteligentes”, os denominados pads “inteligentes”, televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de fluxo de vídeo ou semelhantes. Em várias modalidades, o dispositivo de fonte 12 e o dispositivo de destino 14 podem ser equipados para a comunicação sem fio.
[0035] O dispositivo de destino 14 pode receber, por meio de enlace 16, os dados de vídeo codificados para serem decodificados. O enlace 16 pode compreender qualquer tipo de meio ou dispositivo com capacidade de mover os dados de vídeo codificados do dispositivo de fonte 12 para o dispositivo de destino 14. No exemplo da Figura 1A, o enlace 16 pode compreender um meio de comunicação para possibilitar que o dispositivo de fonte 12 transmita dados de vídeo codificados para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode formar parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área ampla ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações-base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de fonte 12 para o dispositivo de destino 14.
[0036] Alternativamente, os dados codificados podem ser emitidos a partir de uma interface de saída 22 para um dispositivo de armazenamento 31 (opcionalmente presente). Semelhantemente, 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 dentre uma variedade de mídia de armazenamento de dados distribuída ou localmente acessada como um disco rígido, memória flash, memória volátil ou não volátil ou qualquer outra mídia de armazenamento digital adequada para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 31 pode corresponder a um servidor de arquivos ou um outro dispositivo de armazenamento intermediário que possa reter o vídeo codificado gerado pelo dispositivo de fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados do dispositivo de armazenamento 31 por meio de fluxo ou download. O servidor de arquivos pode ser qualquer tipo de servidor com capacidade de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Os servidores de arquivos exemplificativos incluem um servidor web (por exemplo, para um site da web), um servidor de Protocolo de Transferência de Arquivo (FTP), dispositivos de armazenamento fixado em rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Esse pode incluir um canal sem fio (por exemplo, uma conexão de rede de área local sem fio (WLAN)), uma conexão com fio (por exemplo, uma linha de assinatura digital (DSL), um modem a 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 a partir do dispositivo de armazenamento 31 pode ser uma transmissão por fluxo, uma transmissão por download ou uma combinação de ambos.
[0037] As técnicas desta revelação não se limitam a aplicações ou conimagens sem fio. As técnicas podem ser aplicadas à criptografia de vídeo em relação à qualquer uma dentre uma variedade de aplicações de multimídia, como difusões por televisão aberta, transmissões por televisão a cabo, transmissões por televisão via satélite, transmissões de vídeo por fluxo, por exemplo, por meio da Internet (por exemplo, fluxo adaptativo dinâmico através de Protocolo de Transferência de Hipertexto (HTTP), etc.), codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações. Em alguns exemplos, o sistema de criptografia de vídeo 10 pode ser configurado para suportar a transmissão de vídeo unidirecional ou bidirecional para suportar aplicações como fluxo de vídeo, reprodução de vídeo, difusão de vídeo, e/ou telefonia por vídeo.
[0038] No exemplo da Figura 1A, o dispositivo de fonte 12 inclui uma fonte de vídeo 18, codificador de vídeo 20 e a interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador/demodulador (modem) e/ou um transmissor. No dispositivo de fonte 12, a fonte de vídeo 18 pode incluir uma fonte como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém vídeo previamente capturado, uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo, e/ou um sistema gráfico de computador para gerar dados gráficos de computador como a fonte vídeo, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de fonte 12 e o dispositivo de destino 14 podem formar os denominados “telefones com câmera” ou “telefones com vídeo”, conforme ilustrado no exemplo da Figura 1B. No entanto, as técnicas descritas nesta revelação podem ser aplicáveis à criptografia de vídeo em geral, e podem ser aplicadas às aplicações sem fio e/ou com fio.
[0039] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos para o dispositivo de destino 14 por meio da interface de saída 22 do dispositivo de fonte 12. Os dados de vídeo codificados também podem (ou alternativamente) ser armazenados no dispositivo de armazenamento 31 para o acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução. O codificador de vídeo 20 ilustrado na Figura 1A e 1B pode compreender o codificador de vídeo 20 ilustrado na Figura 2A, o codificador de vídeo 23 ilustrado na Figura 2B, ou qualquer outro codificador de vídeo descrito no presente documento.
[0040] No exemplo da Figura 1A, o dispositivo de destino 14 inclui a interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 do dispositivo de destino 14 pode receber os dados de vídeo codificados através do enlace 16 e/ou do dispositivo de armazenamento 31. Os dados de vídeo codificados comunicados através do enlace 16, ou fornecidos no dispositivo de armazenamento 31, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 para uso por um decodificador de vídeo, como o decodificador de vídeo 30, na decodificação dos 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 arquivos. O decodificador de vídeo 30 ilustrado na Figura 1A e 1B pode compreender o decodificador de vídeo 30 ilustrado na Figura 3A, o decodificador de vídeo 33 ilustrado na Figura 3B, ou qualquer outro decodificador de vídeo descrito no presente documento.
[0041] O dispositivo de exibição 32 pode ser integrado com o dispositivo de destino 14 ou externo ao mesmo. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também pode ser configurado para fazer interface com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição como um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo emissor de luz orgânico (OLED) ou um outro tipo de dispositivo de exibição.
[0042] Em aspectos relacionados, a Figura 1B mostra um sistema de criptografia de vídeo 10' exemplificativo em que o dispositivo de fonte 12 e o dispositivo de destino 14 estão em um dispositivo 11 ou fazem parte do mesmo. O dispositivo 11 pode ser um fone de telefone, como um telefone "inteligente" ou semelhantes. O dispositivo 11 pode incluir u dispositivo de controlador/processador 13 (opcionalmente presente) em comunicação operacional com o dispositivo de fonte 12 e o dispositivo de destino 14. O sistema de criptografia de vídeo 10' da Figura 1B, e os componentes do mesmo, são, de outro modo, semelhantes ao sistema de criptografia de vídeo 10 da Figura 1A, e componentes dos mesmos.
[0043] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compactação de vídeo, como HEVC, e podem se adequar a um Modelo de Teste de HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões de proprietário e da indústria, como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, AVC ou extensões de tais padrões. As técnicas desta revelação, no entanto, não se limitam a qualquer padrão de criptografia específico. Outros exemplos de padrões de compactação de vídeo incluem MPEG-2 e ITU-T H.263.
[0044] Embora não mostrado nos exemplos das Figuras 1A e 1B, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados com um codificador e decodificador de áudio, e pode incluir unidades de MUX-DEMUX adequadas, ou outro hardware e software, para manusear a codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou fluxos de dados separados. Caso se aplique, em alguns exemplos, as unidades de MUX-DEMUX podem se adequar ao protocolo de multiplexador ITU H.223, ou outros protocolos como o protocolo de datagrama de usuário (UDP).
[0045] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implantados como qualquer um dentre uma variedade de conjunto de circuitos de codificador adequado, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados para aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas forem implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e pode executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas desta revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode estar incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado em um respectivo dispositivo.
PROCESSO DE CRIPTOGRAFIA DE VÍDEO
[0046] Conforme mencionado brevemente acima, o codificador de vídeo 20 codifica os dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada uma das imagens é uma imagem estática que forma parte de um vídeo. Em alguns exemplos, uma imagem pode ser referida como um “quadro” de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que forma uma representação criptografada dos dados de vídeo. O fluxo de bits pode incluir imagens criptografadas e dados associados. Uma imagem criptografada é uma representação criptografada de uma imagem.
[0047] Para gerar o fluxo de bits, o codificador de vídeo 20 pode realizar operações de codificação em cada imagem nos dados de vídeo. Quando o codificador de vídeo 20 realiza operações de codificação nas imagens, o codificador de vídeo 20 pode gerar uma série de imagens criptografadas e dados associados. Os dados associados podem conjuntos de parâmetro de vídeo (VPS), conjuntos de parâmetros de sequência (SPSs), conjuntos de parâmetros de imagem (PPSs), conjuntos de parâmetros de adaptação (APSs), e outras estruturas de sintaxe. Um SPS pode conter parâmetros aplicáveis a zero ou mais sequências de imagens. Um PPS pode conter parâmetros aplicáveis a zero ou mais imagens. Um APS pode conter parâmetros aplicáveis a zero ou mais imagens. Os parâmetros em um APS podem ser parâmetros que sejam mais prováveis à alteração do que os parâmetros em um PPS.
[0048] Para gerar uma imagem criptografada, o codificador de vídeo 20 pode dividir uma imagem em blocos de vídeo igualmente dimensionados. Um bloco de vídeo pode ser uma matriz bidirecional de amostras. Cada um dos blocos de vídeo está associado a um treeblock. Em alguns exemplos, um treeblock pode ser referido como uma unidade de criptografia maior (LCU). Os treeblocks de HEVC podem ser amplamente análogos aos macroblocos de padrões anteriores, como H.264/AVC. No entanto, um treeblock não é necessariamente limitado a um tamanho específico e pode incluir uma ou mais unidades de criptografia (CUs). O codificador de vídeo 20 pode usar a partição de quadtree para dividir os blocos de vídeo de treeblocks em blocos de vídeo associados às CUs, daí o nome “treeblocks”.
[0049] 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 algumas ocasiões, uma fatia compreende um número inteiro de treeblocks. Em outras ocasiões, um limite de uma fatia pode estar dentro de um treeblock.
[0050] Como parte da realização de uma operação de codificação em uma imagem, o codificador de vídeo 20 pode realizar operações de codificação em cada fatia da imagem. Quando o codificador de vídeo 20 realizar uma operação de codificação em uma fatia, o codificador de vídeo 20 pode gerar dados codificados associados à fatia. Os dados codificados associados à fatia podem ser referidos como uma “fatia criptografada”.
[0051] Para gerar uma fatia criptografada, o codificador de vídeo 20 pode realizar operações de codificação em cada treeblock em uma fatia. Quando o codificador de vídeo 20 realizar uma operação de codificação em um treeblock, o codificador de vídeo 20 pode gerar um treeblock criptografado. O treeblock criptografado pode compreender dados que representam uma versão codificada do treeblock.
[0052] Quando o codificador de vídeo 20 gerar uma fatia criptografada, o codificador de vídeo 20 pode realizar operações de codificação (por exemplo, codificar) nos treeblocks na fatia de acordo com uma ordem de varredura. Por exemplo, o codificador de vídeo 20 pode codificar os treeblocks da fatia em uma ordem que prossiga da esquerda para a direita através de uma fileira mais superior de treeblocks na fatia, então, da esquerda para a direita através de uma próxima fileira inferior de treeblocks, e assim em diante, até que o codificador de vídeo 20 tenha codificado cada um dos treeblocks na fatia.
[0053] Como resultado da codificação dos treeblocks de acordo com a ordem de varredura, os treeblocks acima e para a esquerda de um dado treeblock podem ter sido codificados, mas os treeblocks abaixo e para a direita do dado treeblock podem não ter sido codificados. Consequentemente, o codificador de vídeo 20 pode ter a capacidade de acessar informações geradas pela codificação de treeblocks acima e para a esquerda do dado treeblock quando se codifica o dado treeblock. No entanto, o codificador de vídeo 20 pode não ter a capacidade de acessar informações geradas pela codificação de treeblocks abaixo e para a direita do dado treeblock quando se codifica o dado treeblock.
[0054] Para gerar um treeblock criptografado, o codificador de vídeo 20 pode realizar recursivamente a partição de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo possivelmente menores. Cada um dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, o codificador de vídeo 20 pode dividir o bloco de vídeo de um treeblock em quatro sub-blocos igualmente dimensionados, pode dividir um ou mais dos sub-blocos em quatro sub-sub-blocos igualmente dimensionados, e assim em diante. Uma CU dividida pode ser uma CU cujo bloco de vídeo é dividido em blocos de vídeo associados a outras CUs. Uma CU não dividida pode ser uma CU cujo bloco de vídeo não é dividido em blocos de vídeo associados a outras CUs.
[0055] Um ou mais elementos de sintaxe no fluxo de bits podem indicar um número máximo de vezes que o codificador de vídeo 20 pode dividir o bloco de vídeo de um treeblock. Um bloco de vídeo de uma CU pode ter formato quadrado. O tamanho do bloco de vídeo de uma CU (por exemplo, o tamanho da CU) pode variar de 8 x 8 pixels até o tamanho de um bloco de vídeo de um treeblock (por exemplo, o tamanho do treeblock) com um máximo de 64 x 64 pixels ou maior.
[0056] O codificador de vídeo 20 pode realizar operações de codificação (por exemplo, codificar) em cada CU de um treeblock de acordo com uma ordem de varredura z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU superior esquerda, uma CU superior direita, uma CU inferior esquerda e, então, uma CU inferior direita, nessa ordem. Quando o codificador de vídeo 20 realizar uma operação de codificação em uma CU dividida, o codificador de vídeo 20 pode codificar CUs associadas aos sub-blocos do bloco de vídeo da CU dividida de acordo com a ordem de varredura z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU associada a um sub-bloco superior esquerdo, uma CU associada a um sub-bloco superior direito, uma CU associada a um sub-bloco inferior esquerdo e, então, uma CU associada a um sub-bloco inferior direito, nessa ordem.
[0057] Como resultado da codificação das CUs de um treeblock de acordo com uma ordem de varredura z, as CUs acima, acima e para a esquerda, acima e para a direita, esquerdas, e abaixo e para a esquerda de uma dada CU podem ter sido codificadas. As CUs abaixo e para a direita da dada CU ainda não foram codificadas. Consequentemente, o codificador de vídeo 20 pode ter capacidade de acessar informações geradas pela codificação de algumas CUs que são vizinhas à dada CU quando se codifica a dada CU. No entanto, o codificador de vídeo 20 pode não ter capacidade de acessar informações geradas pela codificação de outras CUs que são vizinhas à dada CU quando se codifica a dada CU.
[0058] Quando o codificador de vídeo 20 codificada uma CU não dividida, o codificador de vídeo 20 pode gerar uma ou mais unidades de predição (PUs) para a CU. Cada uma das PUs da CU pode ser associada a um bloco de vídeo diferente no 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 a interpredição para gerar o bloco de vídeo predito para uma PU.
[0059] Quando o codificador de vídeo 20 usar a 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 nas amostras decodificadas da imagem associada à PU. Se o codificador de vídeo 20 usar a 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 usar a 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 associadas à PU. Se o codificador de vídeo 20 usar a interpredição para gerar blocos de vídeo preditos das PUs de uma CU, a CU é uma CU interpredita.
[0060] Ademais, quando o codificador de vídeo 20 usar a interpredição para gerar um bloco de vídeo predito para uma PU, o codificador de vídeo 20 pode gerar informações de movimento para a PU. As informações de movimento para uma PU podem indicar um ou mais blocos de referência da PU. Cada bloco de referência da PU pode ser um bloco de vídeo em uma imagem de referência. A imagem de referência pode ser uma imagem além da imagem associada à PU. Em alguns exemplos, um bloco de referência de uma PU também pode ser referido como a “amostra de referência” da PU. O codificador de vídeo 20 pode gerar o bloco de vídeo predito para a PU com base nos blocos de referência da PU.
[0061] Após o codificador de vídeo 20 gerar blocos de vídeo preditos 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 as PUs da CU. Os dados residuais para a CU podem indicar diferenças entre amostras nos blocos de vídeo preditos para as PUs da CU e o bloco de vídeo original da CU.
[0062] Ademais, como parte da realização de uma operação de codificação em uma CU não dividida, o codificador de vídeo 20 pode realizar a partição de quadtree recursiva nos dados residuais da CU para a partição dos dados residuais da CU em um ou mais blocos dos dados residuais (por exemplo, blocos de vídeo residuais) associados às unidades de transformada (TUs) da CU. Cada TU de uma CU pode ser associada a um bloco de vídeo residual diferente.
[0063] 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.
[0064] Após gerar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode realizar um processo de quantização no bloco de coeficiente de transformada. A quantização se refere, em geral, a um processo no qual os coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados usados para representar os coeficientes de transformada, fornecendo mais compactação. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de bit n pode ser arredondado para baixo para um coeficiente de transformada de bit m durante a quantização, em que n é maior que m.
[0065] O codificador de vídeo 20 pode associar cada CU a um valor de parâmetro de quantização (QP). O valor de QP associado a uma CU pode determinar como o codificador de vídeo 20 quantiza os blocos de coeficiente de transformada associados à CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente de transformada associados a uma CU ajustando- se o valor de QP associado à CU.
[0066] Após o codificador de vídeo 20 quantizar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode gerar conjuntos de elementos de sintaxe que representam os coeficientes de transformada no bloco de coeficiente de transformada quantizado. O codificador de vídeo 20 pode aplicar operações de codificação por entropia, como operações de Codificação Aritmética Binária Adaptativa (CABAC), a alguns desses elementos de sintaxe. Outras técnicas de criptografia por entropia como codificação de comprimento variável adaptativa a contexto (CAVLC), criptografia de entropia de partição de intervalo de probabilidade (PIPE) ou outra codificação aritmética binária também poderia ser usada.
[0067] O fluxo de bits gerado pelo codificador de vídeo 20 pode incluir uma série de unidades de Camada de Abstração de Rede (NAL). Cada uma dentre as unidades de NAL pode ser uma estrutura de sintaxe que contém uma indicação de um tipo de dados na unidade de NAL e bytes que contêm os dados. Por exemplo, uma unidade de NAL pode conter dados que representam um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, uma fatia criptografada, Informações de Intensificação Complementar (SEI), um delimitador de unidade de acesso, dados de preenchimento ou um outro tipo de dados. Os dados em uma unidade de NAL podem incluir várias estruturas de sintaxe.
[0068] 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 criptografada dos dados de vídeo codificados pelo codificador de vídeo 20. Quando o decodificador de vídeo 30 receber o fluxo de bits, o decodificador de vídeo 30 pode realizar uma operação de análise no fluxo de bits. Quando o decodificador de vídeo 30 realizar a operação de análise, o decodificador de vídeo 30 pode extrair elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo para reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser recíproco, em geral, para o processo realizado pelo codificador de vídeo 20 para gerar os elementos de sintaxe.
[0069] Após o decodificador de vídeo 30 extrair os elementos de sintaxe associados a uma CU, o decodificador de vídeo 30 pode gerar blocos de vídeo preditos para as PUs da CU com base nos elementos de sintaxe. Além disso, o decodificador de vídeo 30 pode inverter os blocos de coeficiente de transformada de quantização associados às TUs da CU. O decodificador de vídeo 30 pode realizar transformadas inversas no blocos de coeficiente de transformada para reconstruir blocos de vídeo residuais associados às TUs da CU. Após 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. Desse modo, o decodificador de vídeo 30 pode reconstruir os blocos de vídeo das CUs com base nos elementos de sintaxe no fluxo de bits.
CODIFICADOR DE VÍDEO
[0070] A Figura 2A é um diagrama de blocos que ilustra um exemplo do codificador de vídeo 20 que pode implantar técnicas de acordo com os aspectos descritos nesta revelação. O codificador de vídeo 20 pode ser configurado para processar uma única camada de um quadro de vídeo, como para HEVC. Adicionalmente, o codificador de vídeo 20 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação. Em alguns exemplos, as técnicas descritas nesta revelação podem ser compartilhadas dentre os vários componentes do codificador de vídeo 20. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nesta revelação.
[0071] Para fins de explicação, esta revelação descreve o codificador de vídeo 20 no contexto de codificação HEVC. No entanto, as técnicas desta revelação podem ser aplicáveis aos outros padrões ou métodos de criptografia. O exemplo retratado na Figura 2A é para um codec de única camada. No entanto, conforme será descrito adicionalmente em relação à Figura 2B, alguns ou todos dentre os codificadores de vídeo 20 podem ser duplicados para o processamento de um codec de múltiplas camadas.
[0072] O codificador de vídeo 20 pode realizar a intra e a intercriptografia de blocos de vídeo nas fatias de vídeo. A intracriptografia conta com uma predição espacial para reduzir ou remover a redundância espacial no vídeo em um dado quadro de vídeo ou imagem. A intercriptografia conta com a predição temporal para reduzir ou remover a redundância temporal em vídeo nos quadros ou imagens adjacentes de uma sequência de vídeo. O Intramodo (I modo) pode se referir a qualquer um dentre diversos modos de criptografia com base espacial. Os Intermodos, como predição unidirecional (modo P) ou predição bidirecional (modo B), podem se referir a qualquer um dentre os diversos modos de criptografia com base temporal.
[0073] 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 armazenamento temporário de imagem decodificada 114 e uma unidade de codificação por entropia 116. A unidade de processamento por predição 100 inclui uma unidade de interpredição 121, uma unidade de estimativa de movimento 122, uma unidade de compensação de movimento 124, uma unidade de intrapredição 126 e uma unidade de predição intercamada 128. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos ou diferentes componentes funcionais. Ademais, a unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem ser altamente integradas, mas são representadas no exemplo da Figura 2A separadamente para fins de explicação.
[0074] O codificador de vídeo 20 pode receber dados de vídeo. O codificador de vídeo 20 pode receber os dados de vídeo de várias fontes. Por exemplo, o codificador de vídeo 20 pode receber os dados de vídeo da fonte de vídeo 18 (por exemplo, mostrada na Figura 1A ou 1B) ou uma outra fonte. Os dados de vídeo podem representar uma série de imagens. Para codificar os dados de vídeo, o codificador de vídeo 20 pode realizar uma operação de codificação em cada uma das imagens. Como parte da realização da operação de codificação em uma imagem, o codificador de vídeo 20 pode realizar operações de codificação em cada fatia da imagem. Como parte da realização de uma operação de codificação em uma fatia, o codificador de vídeo 20 pode realizar operações de codificação em treeblocks na fatia.
[0075] Como parte da realização de uma operação de codificação em um treeblock, a unidade de processamento de predição 100 pode realizar a partição de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, a unidade de processamento por predição 100 pode dividir um bloco de vídeo de um treeblock em quatro sub-blocos igualmente dimensionados, pode dividir um ou mais dos sub-blocos em quatro sub-sub- blocos igualmente dimensionados, e assim em diante.
[0076] Os tamanhos dos blocos de vídeo associados às CUs podem variar de 8 x 8 amostras até o tamanho do treeblock com um máximo de 64 x 64 amostras ou maior. Nesta revelação, “N x N” e “N por N” pode ser usado intercambiavelmente 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 16 x 16 ou amostras de 16 por 16. Em geral, um bloco de vídeo de 16 x 16 em dezesseis amostras em uma direção vertical (y = 16) e dezesseis amostras em uma direção horizontal (x = 16). Igualmente, um bloco de N x N tem, em gera, N amostras em uma direção vertical e N amostras em uma direção horizontal, em que N representa um valor de número inteiro não negativo.
[0077] Ademais, como parte da realização da operação de codificação em um treeblock, a unidade de processamento de predição 100 pode gerar uma estrutura de dados de quadtree hierárquica para o treeblock. Por exemplo, um treeblock pode corresponder a um nó raiz da estrutura de dados de quadtree. Se a unidade de processamento de predição 100 dividir o bloco de vídeo do treeblock em quatro sub-blocos, o nó raiz tem quatro nós filhos na estrutura de dados de quadtree. Cada um dos nós filhos corresponde a uma CU associada a um dos sub-blocos. Se a unidade de processamento de predição 100 dividir um dos sub-blocos em quatro sub-sub-blocos, o nó que corresponde à CU associada ao sub-bloco pode ter quatro nós filhos, cada um dos quais corresponde a uma CU associada a um dos sub-sub-blocos.
[0078] Cada nó da estrutura de dados de quadtree pode conter dados de sintaxe (por exemplo, elementos de sintaxe) para o treeblock correspondente ou CU. Por exemplo, um nó no quadtree pode incluir um sinalizador de separação que indica se o bloco de vídeo da CU que corresponde ao nó é dividido (por exemplo, separado) em quatro sub-blocos. Os elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender da possibilidade de o bloco de vídeo da CU ser separado em sub-blocos. Uma CU cujo bloco de vídeo não é dividido pode corresponder a um nó folha na estrutura de dados de quadtree. Um treeblock criptografado pode incluir dados com base na estrutura de dados de quadtree para um treeblock correspondente.
[0079] O codificador de vídeo 20 pode realizar operações de codificação em cada CU não dividida de um treeblock. Quando o codificador de vídeo 20 realizar uma operação de codificação em uma CU não dividida, o codificador de vídeo 20 gera dados que representam uma representação codificada da CU não dividida.
[0080] Como parte da realização de uma operação de codificação em uma CU, a unidade de processamento de predição 100 pode dividir o bloco de vídeo da CU dentre uma ou mais PUs da CU. O codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar vários tamanhos de PU. Supondo-se que o tamanho de uma CU específica seja 2N x 2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar os tamanhos de PU de 2Nx2N ou NxN, e interpredição em tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, nLx2N, nRx2N ou semelhantes. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar a partição simétrica para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em alguns exemplos, a unidade de processamento de predição 100 pode realizar a partição geométrica para dividir o bloco de vídeo de uma CU dentre PUs da CU ao longo de um limite que não encontra os lados do bloco de vídeo da CU nos ângulos retos.
[0081] A unidade de interpredição 121 pode realizar a interpredição em cada PU da CU. A interpredição pode fornecer compactação temporal. Para realizar a interpredição em uma PU, a unidade de estimativa de movimento 122 pode gerar informações de movimento para a PU. A unidade de compensação de movimento 124 pode gerar um bloco de vídeo predito para a PU com base nas informações de movimento e amostras decodificadas das imagens além da imagem associada à CU (por exemplo, imagens de referência). Nesta revelação, um bloco de vídeo previsto gerado por unidade de compensação de movimento 124 pode ser referido como um interbloco de vídeo previsto.
[0082] As fatias podem ser fatias I, fatias P ou fatias B. A unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem realizar diferentes operações para uma PU de uma CU dependendo da possibilidade de a PU estar em uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intrapreditas. Por isso, se a PU estiver em uma fatia I, a unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 não realizam a interpredição na PU.
[0083] Se a PU estiver em uma fatia P, a imagem que contém a PU é associada a uma lista de imagens de referência referida como “lista 0”. Cada uma das imagens de referência na lista 0 contém amostras que podem ser usadas para a interpredição de outras imagens. Quando a unidade de estimativa de movimento 122 realizar a operação de estimativa de movimento em relação a uma PU em uma fatia P, a unidade de estimativa de movimento 122 pode buscar as imagens de referência na lista 0 para um bloco de referência para a PU. O bloco de referência da PU pode ser um conjunto de amostras, por exemplo, um bloco de amostras, que corresponde mais proximamente às amostras no bloco de vídeo da PU. A unidade de estimativa de movimento 122 pode usar uma variedade de métricas para determinar o quão proximamente um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, a unidade de estimativa de movimento 122 pode determinar o quão proximamente um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU pela soma da diferença absoluta (SAD), soma da diferença quadrada (SSD), ou outras métricas de diferença.
[0084] Após identificar um bloco de referência de uma PU em uma fatia P, a unidade de estimativa de movimento 122 pode gerar um índice de referência que indica a imagem de referência na lista 0 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. Em vários exemplos, a unidade de estimativa de movimento 122 pode gerar vetores de movimento para graus variantes de precisão. Por exemplo, a unidade de estimativa de movimento 122 pode gerar vetores de movimento na precisão de um quarto de amostra, precisão de um oitavo de amostra ou outra precisão de amostra fracional. No caso de precisão de amostra fracional, os valores de bloco de referência podem ser interpolados a partir de valores de amostra de posição de número inteiro na imagem de referência. A unidade de estimativa de movimento 122 pode produzir o índice de referência e o vetor de movimento como as informações de movimento da PU. A unidade de compensação de movimento 124 pode gerar um bloco de vídeo predito da PU com base no bloco de referência identificado pelas informações de movimento da PU.
[0085] Se a PU estiver em uma fatia B, a imagem que contém a PU pode estar associada a duas listas de imagens de referência referidas como “lista 0” e “lista 1”. Em alguns exemplos, uma imagem que contém uma fatia B pode estar associada a uma combinação de listas que é uma combinação da lista 0 e da lista 1.
[0086] Ademais, se a PU estiver em uma fatia B, a unidade de estimativa de movimento 122 pode realizar a predição unidirecional ou a predição bidirecional para a PU. Quando a unidade de estimativa de movimento 122 realizar a predição unidirecional para a PU, a unidade de estimativa de movimento 122 pode buscar as imagens de referência da lista 0 ou da lista 1 para um bloco de referência para a PU. A unidade de estimativa de movimento 122 pode, então, gerar um índice de referência que indica a imagem de referência na lista 0 ou lista 1 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. A unidade de estimativa de movimento 122 pode produzir o índice de referência, um indicador de direção de predição e o vetor de movimento como as informações de movimento da PU. O indicador de direção de predição pode indicar se o índice de referência indica uma imagem de referência na lista 0 ou lista 1. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo predito da PU com base no bloco de referência indicado pelas informações de movimento da PU.
[0087] Quando a unidade de estimativa de movimento 122 realizar a predição bidirecional para uma PU, a unidade de estimativa de movimento 122 pode buscar as imagens de referência na lista 0 para um bloco de referência para a PU e também pode buscar as imagens de referência na lista 1 para um outro bloco de referência para a PU. A unidade de estimativa de movimento 122 pode, então, gerar índices de referência que indicam as imagens de referência na lista 0 e na lista 1 que contêm os blocos de referência e vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e a PU. A unidade de estimativa de movimento 122 pode produzir os índices de referência e os vetores de movimento da PU como as informações de movimento da PU. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo predito da PU com base nos blocos de referência indicados pelas informações de movimento da PU.
[0088] Em algumas ocasiões, a unidade de estimativa de movimento 122 não emite um conjunto total de informações de movimento para uma PU para a unidade de codificação por entropia 116. Em vez disso, a unidade de estimativa de movimento 122 pode sinalizar as informações de movimento de uma PU com referência às informações de movimento de uma outra PU. Por exemplo, a unidade de estimativa de movimento 122 pode determinar que as informações de movimento da PU são suficientemente semelhantes às informações de movimento de uma PU vizinha. Nesse exemplo, a unidade de estimativa de movimento 122 pode indicar, em uma estrutura de sintaxe associada à PU, um valor que indica para o decodificador de vídeo 30 que a PU tem as mesmas informações de movimento que a PU vizinha. Em um outro exemplo, a unidade de estimativa de movimento 122 pode identificar, em uma estrutura de sintaxe associada à PU, uma PU vizinha e uma diferença de vetor de movimento (MVD). A diferença de vetor de movimento indica uma diferença entre o vetor de movimento da PU e o vetor de movimento da PU vizinha indicada. O decodificador de vídeo 30 pode usar o vetor de movimento da PU vizinha indicada e a diferença de vetor de movimento para determinar o vetor de movimento da PU. Com referência às informações de movimento de uma primeira PU quando sinaliza as informações de movimento de uma segunda PU, o codificador de vídeo 20 pode ter a capacidade de sinalizar as informações de movimento da segunda PU com o uso de menos bits.
[0089] Como parte da realização de uma operação de codificação em uma CU, a unidade de intrapredição 126 pode realizar intrapredição em PUs da CU. A intrapredição pode fornecer compactação espacial. Quando a unidade de intrapredição 126 realizar 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 decodificadas de outras PUs na mesma imagem. Os dados de predição para a PU podem incluir um bloco de vídeo predito e vários elementos de sintaxe. A unidade de intrapredição 126 pode realizar a intrapredição em PUs em fatias I, fatias P e fatias B.
[0090] Para realizar a intrapredição em uma PU, a unidade de intrapredição 126 pode usar múltiplos modos de intrapredição para gerar múltiplos conjuntos de dados de predição para a PU. Quando a unidade de intrapredição 126 usar 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 as amostras dos blocos de vídeo de PUs vizinhas através do bloco de vídeo da PU em uma direção e/ou gradiente associado ao modo de intrapredição. As PUs vizinhas podem estar acima, acima e para a direita, acima e para a esquerda, ou para a esquerda da PU, supondo-se uma ordem de codificação da esquerda para a direita, de cima para baixo para PUs, CUs e treeblocks. A unidade de intrapredição 126 pode usar inúmeros modos de intrapredição, por exemplo, 33 modos de intrapredição direcionais, dependendo do tamanho da PU.
[0091] A unidade de processamento de predição 100 pode selecionar os dados de predição para uma PU dentre os dados de predição gerados pela unidade de compensação de movimento 124 para a PU ou os dados de predição gerados pela unidade de intrapredição 126 para a PU. Em alguns exemplos, a unidade de processamento de predição 100 seleciona os dados de predição para a PU com base nas taxas/métricas de distorção dos conjuntos de dados de predição.
[0092] Se a unidade de processamento de predição 100 selecionar dados de predição gerados pela unidade de intrapredição 126, a unidade de processamento de predição 100 pode sinalizar o modo de intrapredição que foi usado para gerar os dados de predição para as PUs, por exemplo, o modo de intrapredição selecionado. A unidade de processamento de predição 100 pode sinalizar o modo de intrapredição selecionado de vários modos. Por exemplo, pode ser provável que o modo de intrapredição selecionado seja o mesmo que o modo de intrapredição de uma PU 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.
[0093] Conforme discutido acima, o codificador de vídeo 20 pode incluir a unidade de predição intercamada 128. A unidade de predição intercamada 128 é configurada para predizer um bloco atual (por exemplo, um bloco atual na EL) com o uso de uma ou mais camadas diferentes que estão disponíveis em SHVC (por exemplo, uma camada-base ou de referência). Tal predição pode ser referida como predição intercamada. A unidade de predição intercamada 128 utiliza métodos de predição para reduzir redundância intercamada aperfeiçoando, desse modo, a eficácia de criptografia e reduzindo exigências de recurso computacional. Alguns exemplos de predição intercamada incluem intrapredição intercamada, predição de movimento intercamada e predição residual intercamada. A intrapredição intercamada usa a reconstrução de blocos colocalizados na camada-base para predizer o bloco atual na camada de intensificação. A predição de movimento intercamada usas informações de movimento da camada-base para predizer o movimento na camada de intensificação. A predição residual intercamada usa o resíduo da camada-base para predizer o resíduo da camada de intensificação.
[0094] Após a unidade de processamento de predição 100 selecionar a dados de predição para PUs de uma CU, a unidade de geração residual 102 pode gerar dados residuais para a CU substraindo-se (por exemplo, indicado pelo sinal de subtração) os blocos de vídeo preditos da PUs da CU do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir 2D blocos de vídeo residuais que correspondem aos 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 às diferenças entre 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 componentes de crominância de amostras nos blocos de vídeo preditos da PUs da CU e os componentes de crominância das amostras no bloco de vídeo original da CU.
[0095] A unidade de processamento de predição 100 pode realizar a partição de quadtree para dividir os blocos de vídeo residuais de uma CU em sub-blocos. Cada bloco de vídeo residual não divido pode estar associado a uma TU diferente da CU. Os tamanhos e as posições dos blocos de vídeo residuais associados às TUs de uma CU podem ou não se basear nos tamanhos e nas posições de blocos de vídeo associados às PUs da CU. Uma estrutura de quadtree conhecida como uma “quadtree residual” (RQT) pode incluir nós associados a cada um dos blocos de vídeo residuais. As TUs de uma CU podem corresponder aos nós de folha da RQT.
[0096] A unidade de processamento de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU ao aplicar uma ou mais transformadas a um bloco de vídeo residual associado à TU. Cada um dos blocos de coeficiente de transformada pode ser uma matriz em 2D de coeficientes de transformada. A unidade de processamento de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada direcional ou uma transformada conceitualmente semelhante ao bloco de vídeo residual associado a uma TU.
[0097] Após a unidade de processamento de transformada 104 gerar um bloco de coeficiente de transformada associado a uma TU, a unidade de quantização 106 pode quantizar os coeficientes de transformada no bloco de coeficiente de transformada. A unidade de quantização 106 pode quantizar um bloco de coeficiente de transformada associado a uma TU de uma CU com base em um valor de QP associado à CU.
[0098] O codificador de vídeo 20 pode associar um valor de QP a uma CU de vários modos. Por exemplo, o codificador de vídeo 20 pode realizar uma análise de distorção de taxa em um treeblock associado à CU. Na análise de distorção de taxa, o codificador de vídeo 20 pode gerar múltiplas representações criptografadas do treeblock ao realizar uma operação de codificação várias vezes no treeblock. O codificador de vídeo 20 pode associar diferentes valores de QP à CU quando o codificador de vídeo 20 gerar diferentes representações codificadas do treeblock. O codificador de vídeo 20 pode sinalizar que um dado valor de QP está associado à CU quando o dado valor de QP estiver associado à CU em uma representação criptografada do treeblock que tem uma mais baixa taxa de bits e métrica de distorção.
[0099] A unidade de quantização inversa 108 e a unidade de transformada inversa 110 podem aplicar a quantização inversa e as transformadas inversas ao bloco de coeficiente de transformada, respectivamente, para reconstruir um bloco de vídeo residual a partir do bloco de coeficiente de transformada. A unidade de reconstrução 112 pode adicionar o bloco de vídeo residual reconstruído às amostras correspondentes a partir de um ou mais blocos de vídeo 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 desse modo, o codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[0100] Após a unidade de reconstrução 112 reconstruir o bloco de vídeo de uma CU, a unidade de filtro 113 pode realizar uma operação de desbloqueio para reduzir os artefatos de bloqueio no bloco de vídeo associado à CU. Após a realização de uma ou mais operações de desbloqueio, a unidade de filtro 113 pode armazenar o bloco de vídeo reconstruído da CU no armazenamento temporário de imagem decodificada 114. A unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem usar uma imagem de referência que contém o bloco de vídeo reconstruído para realizar a interpredição em PUs de imagens subsequentes. Além disso, a unidade de intrapredição 126 pode usar os blocos de vídeo reconstruídos no armazenamento temporário de imagem decodificada 114 para realizar a intrapredição em outras PUs na mesma imagem que a CU.
[0101] A unidade de codificação por entropia 116 pode receber dados dos outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação por entropia 116 pode receber blocos de coeficiente de transformada da unidade de quantização 106 e pode receber elementos de sintaxe da unidade de processamento de predição 100. Quando a unidade de codificação por entropia 116 receber os dados, a unidade de codificação por entropia 116 pode realizar uma ou mais operações de codificação por entropia para gerar dados codificados por entropia. Por exemplo, o codificador de vídeo 20 pode realizar uma operação de CAVLC, uma operação de CABAC, uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação aritmética binária adaptativa a contexto com base em sintaxe (SBAC), uma operação de criptografia de Entropia de Partição de Intervalo de Probabilidade (PIPE), ou um outro tipo de operação de codificação por entropia nos dados. A unidade de codificação por entropia 116 por produzir um fluxo de bits que inclui os dados codificados por entropia.
[0102] Como parte da realização de uma operação de codificação por entropia nos dados, a unidade de codificação por entropia 116 pode selecionar um modelo de contexto. Se a unidade de codificação por entropia 116 estiver realizando uma operação de CABAC, o modelo de contexto pode indicar estimativas de probabilidades de bins específicos que têm valores específicos. No contexto de CABAC, o termo “bin” é usado para se referir a um bit de uma versão binarizada de um elemento de sintaxe.
CODIFICADOR DE VÍDEO DE MÚLTIPLAS CAMADAS
[0103] A Figura 2B é um diagrama de blocos que ilustra um outro exemplo de um codificador de vídeo de múltiplas camadas 23 (também simplesmente referido como codificador de vídeo 23) que pode implantar técnicas de acordo com os aspectos descritos nesta revelação. O codificador de vídeo 23 pode ser configurado para processar quadros de vídeo de múltiplas camadas, como para a criptografia SHVC e MV-HEVC. Adicionalmente, o codificador de vídeo 23 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação.
[0104] O codificador de vídeo 23 inclui um codificador de vídeo 20A e codificador de vídeo 20B, cada um dos quais pode ser configurado como o codificador de vídeo 20 e pode realizar as funções descritas acima em relação ao codificador de vídeo 20. Ademais, conforme indicado pela reutilização de referências numéricas, os codificadores de vídeo 20A e 20B podem incluir pelo menos alguns dentre os sistemas e subsistemas que o codificador de vídeo 20. Muito embora o codificador de vídeo 23 seja ilustrado como incluindo dois codificadores de vídeo 20A e 20B, o codificador de vídeo 23 não se limita a isso 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 e codificada por um codificador de vídeo que inclui cinco camadas de codificador. Em algumas modalidades, o codificador de vídeo 23 pode incluir mais camadas de codificador que quadros em uma unidade de acesso. Em alguns casos desses, algumas dentre as camadas de codificador de vídeo podem estar inativas quando se processa algumas unidades de acesso.
[0105] Além dos codificadores de vídeo 20A e 20B, o codificador de vídeo 23 pode incluir uma unidade de reamostragem 90. A unidade de reamostragem 90 pode, em alguns casos, aumentar a resolução da camada-base de um quadro de vídeo recebido para, por exemplo, criar uma camada de intensificação. A unidade de reamostragem 90 pode aumentar a resolução de informações específicas associadas à camada-base recebida de um quadro, mas não de outras informações. Por exemplo, a unidade de reamostragem 90 pode aumentar a resolução do tamanho espacial ou do número de pixels da camada-base, mas o número de fatias ou a contagem de ordem de imagem pode permanecer constante. Em alguns casos, a unidade de reamostragem 90 pode não processar o vídeo recebido e/ou pode ser opcional. Por exemplo, em alguns casos, a unidade de processamento de predição 100 pode realizar o aumento de resolução. Em algumas modalidades, a unidade de reamostragem 90 é configurada para aumentar a resolução de uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para se adequar a um conjunto de regras de limite de fatia e/ou regras de varredura. Muito embora seja principalmente descrito como aumento de resolução de uma camada-base, ou uma camada inferior em uma unidade de acesso, em alguns casos, a unidade de reamostragem 90 pode diminuir a resolução de uma camada. Por exemplo, se durante o fluxo de um vídeo a largura de banda for reduzida, um quadro pode ter a resolução diminuída em vez de ter a resolução aumentada.
[0106] A unidade de reamostragem 90 pode ser configurada para receber uma imagem ou quadro (ou informações de imagem associadas à imagem) do armazenamento temporário de imagem decodificada 114 do codificador de camada inferior (por exemplo, o codificador de vídeo 20A) e para aumentar a resolução da imagem (ou as informações de imagem recebidas). Essa imagem com resolução aumentada pode, então, ser fornecida para a unidade de processamento de predição 100 de um codificador de camada superior (por exemplo, o codificador de vídeo 20B) configurado para codificar uma imagem na mesma unidade de acesso que o codificador de camada inferior. Em alguns casos, o codificador de camada superior é uma camada removida do codificador de camada inferior. Em outros casos, pode haver um ou mais codificadores de camada superior entre o codificador de vídeo de camada 0 e o codificador de camada 1 da Figura 2B.
[0107] Em alguns casos, a unidade de reamostragem 90 pode ser omitida ou desviada. Em tais casos, a imagem do armazenamento temporário de imagem decodificada 114 do codificador de vídeo 20A pode ser fornecido diretamente, ou pelo menos sem ser fornecido para a unidade de reamostragem 90, para a unidade de processamento de predição 100 do codificador de vídeo 20B. Por exemplo, se os dados de vídeo fornecidos para o codificador de vídeo 20B e a imagem de referência do armazenamento temporário de imagem decodificada 114 do codificador de vídeo 20A tiverem o mesmo tamanho ou resolução, a imagem de referência pode ser fornecida para o codificador de vídeo 20B sem qualquer reamostragem.
[0108] Em algumas modalidades, o codificador de vídeo 23 diminui a resolução de dados de vídeo a serem fornecidos para o codificador de camada inferior com o uso da unidade de diminuição de resolução 94 antes de fornecer os dados de vídeo para o codificador de vídeo 20A. Alternativamente, a unidade de diminuição de resolução 94 pode ser uma unidade de reamostragem 90 com capacidade de aumento de resolução ou de diminuição de resolução dos dados de vídeo. Em ainda outras modalidades, a unidade de diminuição de resolução 94 pode ser omitida.
[0109] Conforme ilustrado na Figura 2B, o codificador de vídeo 23 pode incluir adicionalmente um multiplexador (ou mux) 98. O mux 98 pode produzir um fluxo de bits combinado a partir do codificador de vídeo 23. O fluxo de bits combinado pode ser criado pegando-se um fluxo de bits de cada um dos codificadores de vídeo 20A e 20B e alternando o fluxo de bits que é produzido em um dado tempo. Embora em alguns casos os bits de dois (ou mais, no caso de mais de duas camadas de codificador de vídeo) fluxos de bits podem ser alternados um bit de cada vez, em muitos casos os fluxos de bits são combinados de modo diferente. Por exemplo, o fluxo de bits emitido pode ser criado alternando-se o fluxo de bits selecionado um bloco de cada vez. Em um outro exemplo, o fluxo de bits de saída pode ser criado produzindo-se uma razão de blocos de não 1:1 1 de cada um dos codificadores de vídeo 20A e 20B. Por exemplo, dois blocos podem ser emitidos do codificador de vídeo 20B para cada bloco emitido do codificador de vídeo 20A. Em algumas modalidades, o fluxo de saída do mux 98 pode ser pré-programado. Em outras modalidades, o mux 98 pode combinar os fluxos de bits a partir dos codificadores de vídeo 20A, 20B com base em um sinal de controle recebido de um sistema externo ao codificador de vídeo 23, como de um processador em um dispositivo de fonte que inclui o dispositivo de fonte 12. O sinal de controle pode ser gerado com base na resolução ou na taxa de bits de um vídeo da fonte de vídeo 18, com base em uma largura de banda do enlace 16, com base em uma assinatura associada a um usuário (por exemplo, uma assinatura paga contra uma assinatura grátis), ou com base em qualquer outro fator para determinar uma resolução emitida desejada a partir do codificador de vídeo 23.
DECODIFICADO DE VÍDEO
[0110] A Figura 3A é um diagrama de blocos que ilustra um exemplo do decodificador de vídeo 30 que pode implantar técnicas de acordo com os aspectos descritos nesta revelação. O decodificador de vídeo 30 pode ser configurado para processar uma única camada de um quadro de vídeo, como para HEVC. Adicionalmente, o decodificador de vídeo 30 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação. Em alguns exemplos, as técnicas descritas nesta revelação podem ser compartilhadas dentre os vários componentes do decodificador de vídeo 30. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nesta revelação.
[0111] Para fins de explicação, esta revelação descreve o decodificador de vídeo 30 no contexto de codificação HEVC. No entanto, as técnicas desta revelação podem ser aplicáveis aos outros padrões ou métodos de criptografia. O exemplo retratado na Figura 3A é para um codec de única camada. No entanto, conforme será descrito adicionalmente em relação à Figura 3B, alguns ou todos dentre os decodificadores de vídeo 30 podem ser duplicados para o processamento de um codec de múltiplas camadas.
[0112] No exemplo da Figura 3A, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem uma unidade de decodificação por entropia 150, uma unidade de processamento de predição 152, uma unidade de quantização inversa 154, uma unidade de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 159 e um armazenamento temporário de imagem decodificada 160. A unidade de processamento por 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 realizar uma passagem de decodificação em geral 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.
[0113] O decodificador de vídeo 30 pode receber um fluxo de bits que compreende dados de vídeo codificados. O fluxo de bits pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 receber o fluxo de bits, a unidade de decodificação por entropia 150 pode realizar uma operação de análise no fluxo de bits. Como resultado da realização da operação de análise no fluxo de bits, a unidade de decodificação por entropia 150 pode extrair elementos de sintaxe do fluxo de bits. Como parte da realização da operação de análise, a unidade de decodificação por entropia 150 pode decodificar por entropia os elementos de sintaxe codificados por entropia no fluxo de bits. A unidade de processamento de predição 152, a unidade de quantização inversa 154, a unidade de transformada inversa 156, a unidade de reconstrução 158 e a unidade de filtro 159 podem realizar uma operação de reconstrução que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0114] Conforme discutido acima, o fluxo de bits pode compreender uma série de unidades de NAL. As unidades de NAL do fluxo de bits podem incluir unidades de NAL de conjunto de parâmetros de vídeo, unidades de NAL de conjunto de parâmetros de sequência, unidades de NAL de conjunto de parâmetros de imagem, unidades de NAL de SEI, e assim em diante. Como parte da realização da operação de análise no fluxo de bits, a unidade de decodificação por entropia 150 pode realizar operações de análise que extraem e decodificam por entropia 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 das unidades de NAL de conjunto de parâmetros de imagem, dados de SEI das unidades de NAL de SEI, e assim em diante.
[0115] Além disso, as unidades de NAL do fluxo de bits podem incluir unidades de NAL de fatia criptografada. Como parte de realização da operação de análise no fluxo de bits, a unidade de decodificação de entropia 150 pode realizar operações de análise que extraem e decodificam por entropia fatias codificadas das unidades de NAL de fatia codificada. Cada uma das fatias criptografadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe que pertencem a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um conjunto de parâmetros de imagem associado a uma imagem que contém a fatia. A unidade de decodificação por entropia 150 pode realizar operações de decodificação por entropia, como operações de decodificação CABAC, em elementos de sintaxe no cabeçalho de fatia criptografada para recuperar o cabeçalho de fatia.
[0116] Como parte da extração dos dados de fatia das unidades de NAL de fatia criptografada, a unidade de decodificação por entropia 150 pode realizar operações de análise que extraem elementos de sintaxe das CUs criptografadas nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados a blocos de coeficiente de transformada. A unidade de decodificação por entropia 150 pode, então, realizar operações de decodificação CABAC em alguns dos elementos de sintaxe.
[0117] Após a unidade de decodificação por entropia 150 realizar uma operação de análise em uma CU não dividida, o decodificador de vídeo 30 pode realizar uma operação de reconstrução na CU não dividida. Para realizar a operação de reconstrução em uma CU não dividida, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir um bloco de vídeo residual associado à CU.
[0118] Como parte da realização de uma operação de reconstrução em uma TU, a unidade de quantização inversa 154 pode inverter a quantização, por exemplo, desquantizar, de um bloco de coeficiente de transformada associado à TU. A unidade de quantização inversa 154 pode quantizar inversamente o bloco de coeficiente de transformada de uma maneira semelhante aos processos de quantização inversa propostos para a HEVC ou definidos pelo padrão de decodificação H.264. A unidade de quantização inversa 154 pode usar um parâmetro de quantização QP calculado pelo codificador de vídeo 20 para uma CU do bloco de coeficiente de transformada para determinar um grau de quantização e, igualmente, um grau de quantização inversa para a unidade de quantização inversa 154 aplicar.
[0119] Após a unidade de quantização inversa 154 quantizar inversamente um bloco de coeficiente de transformada, a unidade de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associada ao bloco de coeficiente de transformada. A unidade de transformada inversa 156 pode aplicar uma transformada inversa ao bloco de coeficiente de transformada a fim de gerar o bloco de vídeo residual para a TU. Por exemplo, a unidade de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada de número inteiro inversa, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou uma outra transformada inversa ao bloco de coeficiente de transformada. Em alguns exemplos, a unidade de transformada inversa 156 pode determinar uma transformada inversa para aplicar ao bloco de coeficiente de transformada com base na sinalização do codificador de vídeo 20. Em tais exemplos, a unidade de transformada inversa 156 pode determinar a transformada inversa com base em uma transformada sinalizada no nó raiz de um quadtree para um treeblock associado ao bloco de coeficiente de transformada. Em outros exemplos, a unidade de transformada inversa 156 pode inferir a transformada inversa a partir de uma ou mais características de criptografia, como tamanho de bloco, modo de criptografia, ou semelhantes. Em alguns exemplos, a unidade de transformada inversa 156 pode aplicar uma transformada inversa em cascata.
[0120] Em alguns exemplos, a unidade de compensação de movimento 162 pode refinar o bloco de vídeo predito de uma PU ao realizar a interpolação com base nos filtros de interpolação. Os identificadores para filtros de interpolação a serem usados para a compensação de movimento com precisão de subamostra podem estar incluídos nos elementos de sintaxe. A unidade de compensação de movimento 162 pode usar os mesmos filtros de interpolação usados pelo codificador de vídeo 20 durante a geração do bloco de vídeo predito da PU para calcular os valores de interpolação para amostras 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 as informações de sintaxe recebidas e o uso dos filtros de interpolação para produzir o bloco de vídeo predito.
[0121] Se uma PU for codificada com o uso de intrapredição, a unidade de intrapredição 164 pode realizar a 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 nos 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.
[0122] Em algumas ocasiões, os elementos de sintaxe podem indicar que a unidade de intrapredição 164 deve usar o modo de intrapredição de uma outra PU para determinar o modo de intrapredição da PU atual. Por exemplo, pode ser provável que o modo de intrapredição da PU atual seja o mesmo que o modo de intrapredição de uma PU vizinha. Em outras palavras, o modo de intrapredição da PU vizinha pode ser o modo mais provável para a PU atual. Por isso, nesse exemplo, o fluxo de bits pode incluir um pequeno elemento de sintaxe que indica que o modo de intrapredição da PU é o mesmo que o modo de intrapredição da PU vizinha. A unidade de intrapredição 164 pode, então, usar o modo de intrapredição para gerar dados de predição (por exemplo, amostras preditas) para uma PU com base nos blocos de vídeo de PUs espacialmente vizinhas.
[0123] Conforme discutido acima, o decodificador de vídeo 30 também pode incluir a unidade de predição intercamada 166. A unidade de predição intercamada 166 é configurada para predizer um bloco atual (por exemplo, um bloco atual na camada de intensificação) com o uso de uma ou mais camadas diferentes que estão disponíveis em SVC (por exemplo, uma camada-base ou de 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 redundância intercamada aperfeiçoando, desse modo, a eficácia de criptografia e reduzindo exigências de recurso computacional. Alguns exemplos de predição intercamada incluem intrapredição intercamada, predição de movimento intercamada e predição residual intercamada. A intrapredição intercamada usa a reconstrução de blocos colocalizados na camada-base para predizer o bloco atual na camada de intensificação. A predição de movimento intercamada usas informações de movimento da camada-base para predizer o movimento na camada de intensificação. A predição residual intercamada usa o resíduo da camada-base para predizer o resíduo da camada de intensificação. Cada um dos esquemas de predição intercamada é discutido acima em mais detalhes.
[0124] A unidade de reconstrução 158 pode usar os blocos de vídeo residuais associados às TUs de uma CU e os blocos de vídeo preditos da PUs da CU, por exemplo, dados de intrapredição ou dados de interpredição, caso se aplique, 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 nos 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.
[0125] Após a unidade de reconstrução 158 reconstruir o bloco de vídeo da CU, a unidade de filtro 159 pode realizar uma operação de desbloqueio para reduzir os artefatos de bloqueio associados à CU. Após a unidade de filtro 159 realizar uma operação de desbloqueio para reduzir artefatos de bloqueio associados à CU, o decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU no armazenamento temporário de imagem decodificada 160. A armazenamento temporário de imagem decodificada 160 pode fornecer imagens de referência para a compensação de movimento subsequente, intrapredição, e apresentação em um dispositivo de exibição, como 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 armazenamento temporário de imagem decodificada 160, as operações de intrapredição ou interpredição em PUs de outras CUs.
DECODIFICADOR DE MÚLTIPLAS CAMADAS
[0126] A Figura 3B é um diagrama de blocos que ilustra um outro exemplo de um decodificador de vídeo de múltiplas camadas 33 (também simplesmente referido como decodificador de vídeo 33) que pode implantar técnicas de acordo com os aspectos descritos nesta revelação. O decodificador de vídeo 33 pode ser configurado para processar quadros de vídeo de múltiplas camadas, como para a criptografia SHVC e múltiplas vistas. Adicionalmente, o decodificador de vídeo 33 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação.
[0127] 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 o decodificador de vídeo 30 e pode realizar as funções descritas acima em relação ao decodificador de vídeo 30. Ademais, conforme indicado pela reutilização de referências numéricas, os decodificadores de vídeo 30A e 30B podem incluir pelo menos alguns dentre os sistemas e subsistemas que o decodificador de vídeo 30. Muito embora o decodificador de vídeo 33 seja ilustrado como incluindo dois decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 não se limita a isso e pode incluir qualquer número de camadas de decodificador de vídeo 30. Em algumas modalidades, o decodificador de vídeo 33 pode incluir um decodificador de vídeo 30 para cada imagem ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou decodificada por um decodificador de vídeo que inclui cinco camadas de decodificador. Em algumas modalidades, o decodificador de vídeo 33 pode incluir mais camadas de decodificador que quadros em uma unidade de acesso. Em alguns casos desses, algumas dentre as camadas de decodificador de vídeo podem estar inativas quando se processa algumas unidades de acesso.
[0128] Além dos decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 pode incluir uma unidade de aumento de resolução 92. Em algumas modalidades, a unidade de aumento de resolução 92 pode aumentar a resolução de uma camada-base de um quadro de vídeo recebido para criar uma camada intensificada a ser adicionada à lista de imagem de referência para o quadro ou a unidade de acesso. Essa camada intensificada pode ser armazenada no armazenamento temporário de imagem decodificada 160. Em algumas modalidades, a unidade de aumento de resolução 92 pode incluir algumas ou todas as modalidades descritas em relação à unidade de reamostragem 90 da Figura 2A. Em algumas modalidades, a unidade de aumento de resolução 92 é configurada para aumentar a resolução de uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para se adequar a um conjunto de regras de limite de fatia e/ou regras de varredura. Em alguns casos, a unidade de aumento de resolução 92 pode ser uma unidade de reamostragem configurada para aumentar a resolução e/ou diminuir a resolução de uma camada de um quadro de vídeo recebido.
[0129] A unidade de aumento de resolução 92 pode ser configurada para receber uma imagem ou quadro (ou informações de imagem associadas à imagem) do armazenamento temporário de imagem decodificada 160 do decodificador de camada inferior (por exemplo, o decodificador de vídeo 30A) e para aumentar a resolução da imagem (ou as informações de imagem recebidas). Essa imagem com resolução aumentada pode, então, ser fornecida para a unidade de processamento de predição 152 de um decodificador de camada superior (por exemplo, o decodificador de vídeo 30B) configurado para decodificar uma imagem na mesma unidade de acesso que o decodificador de camada inferior. Em alguns casos, o decodificador de camada superior é uma camada removida do decodificador de camada inferior. Em outros casos, pode haver um ou mais decodificadores de camada superior entre o decodificador de vídeo de camada 0 e o decodificador de camada 1 da Figura 3B.
[0130] Em alguns casos, a unidade de aumento de resolução 92 pode ser omitida ou desviada. Em tais casos, a imagem do armazenamento temporário de imagem decodificada 160 do decodificador de vídeo 30A pode ser fornecido diretamente, ou pelo menos sem ser fornecido para a unidade de aumento de resolução 92, para a unidade de processamento de predição 152 do decodificador de vídeo 30B. Por exemplo, se os dados de vídeo fornecidos para o decodificador de vídeo 30B e a imagem de referência do armazenamento temporário de imagem decodificada 160 do decodificador de vídeo 30A tiverem o mesmo tamanho ou resolução, a imagem de referência pode ser fornecida para o decodificador de vídeo 30B sem aumento de resolução. Ademais, em algumas modalidades, a unidade de aumento de resolução 92 pode ser uma unidade de reamostragem 90 configurada para aumentar a resolução ou diminuir a resolução de uma imagem de referência recebida do armazenamento temporário de imagem decodificada 160 do decodificador de vídeo 30A.
[0131] Conforme ilustrado na Figura 3B, o decodificador de vídeo 33 pode incluir adicionalmente um demultiplexador (ou demux) 99. O demux 99 pode separar um fluxo de bits de vídeo codificado em múltiplos fluxos de bits com cada fluxo de bits produzido pelo demux 99 que é fornecido para um decodificador de vídeo 30A e 30B diferente. 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 recebe uma porção do fluxo de bits em um dado tempo. Muito embora em alguns casos os bits do fluxo de bits recebido no demux 99 possam ser alternados, um bit por vez, entre cada um dos decodificadores de vídeo (por exemplo, decodificadores de vídeo 30A e 30B no exemplo da Figura 3B), em muitos casos, o fluxo de bits é dividido de modo diferente. Por exemplo, o fluxo de bits pode ser dividido alternando-se qual decodificador de vídeo recebe o fluxo de bits, um bloco por vez. Em um outro exemplo, o fluxo de bits pode ser dividido por uma razão de blocos de não 1: 1 para cada um dos decodificadores de vídeo 30A e 30B. Por exemplo, dois blocos podem ser fornecidos para o decodificador de vídeo 30B para cada bloco fornecido para o decodificador de vídeo 30A. Em algumas modalidades, a divisão do fluxo de bits pelo demux 99 pode ser pré- programada. Em outras modalidades, o demux 99 pode dividir os fluxos de bits com base em um sinal de controle recebido de um sistema externo ao decodificador de vídeo 33, como de um processador em um dispositivo de destino que inclui 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 da interface de entrada 28, com base em uma largura de banda do enlace 16, com base em uma assinatura associada a um usuário (por exemplo, uma assinatura paga contra uma assinatura grátis), ou com base em qualquer outro fator para determinar uma resolução que pode ser obtida pelo decodificador de vídeo 33.
IMAGENS DE INTRAPONTO DE ACESSO ALEATÓRIO (IRAP)
[0132] Alguns esquemas de criptografia de vídeo podem fornecer vários pontos de acesso aleatório ao longo do fluxo de bits de modo que o fluxo de bits possa ser decodificado começando de qualquer um desses pontos de acesso aleatório sem precisar decodificar quaisquer imagens que precedam esses pontos de acesso aleatório no fluxo de bits. Em tais esquemas de criptografia de vídeo, todas as imagens que seguem um ponto de acesso aleatório na ordem de decodificação, exceto imagens de entrelinhamento omitido de acesso aleatório (RASL), podem ser corretamente decodificadas sem o uso de quaisquer imagens que precedem o ponto de acesso aleatório. Por exemplo, mesmo se uma porção do fluxo de bits for perdida durante a transmissão ou durante a decodificação, um decodificador pode continuar a decodificar o fluxo de bits começando do próximo ponto de acesso aleatório. O suporte para o acesso aleatório pode facilitar, por exemplo, serviços de fluxo dinâmico, operações de busca, comutação de canal, etc.
[0133] Em alguns esquemas de criptografia, tais pontos de acesso aleatório podem ser fornecidos pelas imagens que são referidas como imagens intraponto de acesso aleatório (IRAP). Por exemplo, um ponto de acesso aleatório associado a uma imagem de IRAP de camada de intensificação em uma camada de intensificação (“layerA”) que está contida em uma unidade de acesso (“auA”) pode fornecer acesso aleatório específico a camada de modo que para cada camada de referência (“layerB”) da layerA (por exemplo, uma camada de referência que é uma camada que é usada para predizer a layerA) que tem um ponto de acesso aleatório associado a uma imagem contida em uma unidade de acesso (“auB”) que está na layerB e precede a auA na ordem de decodificação (ou um ponto de acesso aleatório contido na auA), as imagens na layerA que seguem auA na ordem de decodificação (inclusive aqueles imagens localizadas em auA), são corretamente decodificáveis para decodificar quaisquer imagens em layerA que preceda auA.
[0134] As imagens IRAP podem ser criptografadas com o uso de intrapredição (por exemplo, criptografadas sem se referir a outras imagens) e/ou predição intercamada, e podem incluir, por exemplo, imagens de atualização de decodificar instantânea (IDR), imagens de acesso aleatório liberado (CRA) e imagens de acesso aleatório desfeito (BLA). Quando houver uma imagem de IDR no fluxo de bits, todas as imagens que precedem a imagem de IDR na ordem de decodificação não são usadas para a predição pelas imagens que seguem a imagem de IDR. Quando houver uma imagem de CRA no fluxo de bits, as imagens que seguem a imagem de CRA podem ou não usar imagens que precedem a imagem de CRA na ordem de decodificação for predição. Essas imagens que seguem a imagem de CRA na ordem de decodificação, mas usam as imagens que precedem a imagem de CRA na ordem de decodificação podem ser referidas como imagens de RASL. Um outro tipo de imagem que pode seguir uma imagem de IRAP na ordem de decodificação e preceder a imagem de IRAP na ordem de saída é uma imagem de entrelinhamento decodificável de acesso aleatório (RADL), que pode não conter referências às imagens que precedam a imagem de IRAP na ordem de decodificação. As imagens de RASL podem ser descartadas pelo decodificador se as imagens que precedem a imagem de CRA não estiverem disponíveis. Uma imagem de BLA indica ao decodificador que as imagens que precedem a imagem de BLA podem não estar disponíveis para o decodificador (por exemplo, devido ao fato de que dois fluxos de bits são unidos e a imagem de BLA é a primeira imagem do segundo fluxo de bits na ordem de decodificação). Uma unidade de acesso (por exemplo, um grupo de imagens que consiste em todas as imagens criptografadas associadas ao mesmo tempo de saída através de múltiplas camadas) que contém uma imagem de camada-base (por exemplo, que tem um valor de ID de camada de 0) que é uma imagem de IRAP pode ser referida como uma unidade de acesso de IRAP.
PROCESSO DE REAMOSTRAGEM EM SHVC
[0135] Em um processo de reamostragem, o número de amostras de uma imagem pode ter a resolução aumentada (aumentada) ou reduzida (diminuída). Em um projeto da reamostragem de imagem de camada de referência, uma imagem de camada de referência de saída é usada como a entrada para o processo de reamostragem.
[0136] Em SHVC, se um tamanho de imagem de camada de referência (ou camada-base) for diferente do tamanho da imagem da camada de aprimoramento, um processo de reamostragem (ou aumento de resolução) pode ser aplicado à imagem da camada de referência para ser compatível ao tamanho da imagem da camada de aprimoramento para a predição intercamada. Para reamostrar a imagem da camada de referência, um filtro de reamostragem de derivação N pode ser aplicado para cada componente de cor.
[0137] No processo de filtragem, as grandezas de amostra (ou pixels) da imagem da camada de referência podem ser multiplicadas por coeficientes de filtração e somados até derivar uma amostra filtrada (ou pixel). Uma vez que o tamanho da imagem da camada de referência e o tamanho da imagem da camada de aprimoramento são diferentes, as coordenadas das amostras de camada de referência envolvidas no processo de filtragem podem ser definidas. Por exemplo, a localização de amostra da imagem da camada de referência que corresponde à localização da amostra da imagem da camada de aprimoramento atual pode ser determinada de modo que a(s) amostra(s) indicada(s) pela localização de amostra da imagem da camada de referência possa ser usada no processo de reamostragem.
JANELA DE CONFORMIDADE PARA A CAMADA-BASE
[0138] Conforme notado acima, as informações de janela de conformidade podem estar incluídas em uma camada de referência e podem ser usadas para uma variedade de finalidades, incluindo os processos de reamostragem. Os parâmetros de recorte de janela de conformidade são usados para indicar a região de saída de uma imagem criptografada.
[0139] A Figura 4 ilustra um diagrama esquemático exemplificativo que ilustra uma técnica para utilizar informações de janela de conformidade. Os dados criptografados, incluindo SPS, PPS, e VPS, são armazenados no armazenamento temporário de imagem criptografada (CPB) 405. O SPS pode incluir parâmetros para descrever as características da sequência criptografada, como perfil, camada e indicações de nível. Em sistemas convencionais, os parâmetros de recorte de janela de conformidade também podem estar incluídos no SPS. Essas informações são fornecidas para o processo de decodificação 410, e as imagens decodificadas são armazenadas para a saída e são usadas como imagens de referência no armazenamento temporário de imagem decodificada (DPB) 415. As imagens decodificadas são, então passadas para o estágio de recorte de saída 420 em que o recorte de saída é aplicado às imagens de saída de acordo com os parâmetros de janela de conformidade especificados no SPS.
[0140] A Tabela 1 mostra abaixo um sistema convencional para sinalizar uma janela de conformidade em HEVC. Conforme mostrado na Tabela 1 abaixo, uma janela de conformidade pode incluir deslocamentos superior, inferior, esquerdo e/ou direito. Esses deslocamentos podem ser usados para indicar quais amostras em uma imagem devem ser usados para a reamostragem. TABELA 1 - SINALIZADORES DE JANELA DE CONFORMIDADE EM HEVC
[0141] Para fluxos de bits de única camada, uma janela de conformidade pode ser sinalizada no SPS. No entanto, para os fluxos de bits de múltiplas camadas, pode ser vantajoso sinalizar a camada-base no VPS devido ao fato de que o VPS se aplica a todas as camadas de um fluxo de bits de múltiplas camadas.
[0142] Em fluxos de bits de múltiplas camadas, as camadas individuais podem ser criptografadas com o uso de diferentes esquemas de criptografia, como HEVC, SHVC, MV-HEVC, 3D-HEVC, AVC, SVC, etc. Alguns desses esquemas de criptografia podem estar associados a outros esquemas de criptografia. Por exemplo, o SHVC, como a extensão escalável de HEVC, pode ser associada a HEVC. No entanto, SHVC e/ou HEVC pode ser associada a outros esquemas de criptografia. Quando um codec receber um fluxo de bits que tem uma camada de referência que foi criptografada com o uso de um esquema de criptografia com o qual o codec não está associado, o codec pode não ser adequado para determinar informações de janela de conformidade para a camada. Em um exemplo, os sinalizadores de janela de conformidade em HEVC, mostrados na Tabela 1 acima, podem ser adequados para uso por meio de um codec que usa SHVC, mas não por um codec que usa SVC. Além do mais, no presente exemplo, os sinalizadores de janela de conformidade em HEVC, mostrados na Tabela 1 acima, podem não ser adequados para conduzir informações de janela de conformidade para um codec de SVC. As informações de janela de conformidade para uma camada-base que foi criptografada com o uso de um esquema de criptografia de única camada podem não ser sinalizado e, então, pode não estar disponível para um codec com o uso de um esquema de criptografia de extensão que não seja associado ao esquema de criptografia de única camada.
[0143] Há dois processos de reamostragem em SHVC: (1) reamostragem de informações de amostra ou pixel e (2) reamostragem de informações de movimento (isto é, campo de movimento) ou não pixel. As modalidades da presente revelação podem ser aplicáveis a um, ambos ou nenhum desses processos de reamostragem.
[0144] Em alguns aspectos da presente revelação, as informações de janela de conformidade podem ser aplicadas para calcular a razão de aspecto de escalabilidade ou fator de escalabilidade. Por exemplo, um processo de reamostragem pode ser aplicado a uma imagem da camada de referência decodificada com a razão de aspecto calculada. Em outros aspectos da presente revelação, o processo de reamostragem pode usar uma imagem de camada de referência de saída como uma entrada para o processo de reamostragem. As modalidades da presente revelação podem se aplicar a um, ambos ou nenhum desses aspectos.
[0145] As modalidades da presente revelação fornecem sinalizadores para sinalizar informações de janela de conformidade em uma camada-base. Uma janela de conformidade de camada-base pode ser sinalizada, por exemplo, em VPS, SPS, PPS e/ou o cabeçalho de fatia. Em algumas modalidades, a janela de conformidade de camada- base pode ser sinalizada (por exemplo, pode apenas ser sinalizada) quando a camada-base for indicada para ser codificada com o uso de um esquema de criptografia que não esteja associado ao codec de recebimento e/ou a um esquema de criptografia usado por um codificador. Por exemplo, a janela de conformidade de camada-base pode ser sinalizada com base em uma indicação de que a camada-base é criptografada com o uso de um esquema de criptografia de não HEVC (por exemplo, AVC, que é um esquema de criptografia que pode não estar associado a SHVC) quando for recebido por um decodificador de acordo com SHVC. A sintaxe e a semântica exemplificativas para sinalizar a janela de conformidade de camada-base é mostrada abaixo na Tabela 2. TABELA 2 - SINALIZADORES DE JANELA DE CONFORMIDADE PARA A CAMADA-BASE
[0146] Na Tabela 2, bl_conformance_window_flag pode ser definido para 1 para indicar que os parâmetros de deslocamento da camada-base seguem logo após. De outro modo, bl_conformance_window_flag que é definido para 0 pode indicar que os parâmetros de deslocamento não estão presentes. Se bl_conformance_window_flag não estiver presente, o mesmo pode ser inferido para ser definido para 0. Em algumas modalidades, uma exigência de restrição de fluxo de bits pode ser usada. Por exemplo, bl_conformance_window_flag pode ser definido para 1 por qualquer camada-base criptografada de não HEVC. Em um outro exemplo, bl_conformance_window_flag pode ser definido para 1 se a camada-base tiver sido criptografada com o uso de um esquema de criptografia que não está associado ao codec de recebimento.
[0147] Ademais, na Tabela 2, bl_conf_win_left_offset, bl_conf_win_right_offset, bl_conf_win_top_offset, e bl_conf_win_bottom_offset podem especificar as amostras da imagem de camada-base na sequência de vídeo criptografada (CVS) que são emitidas do processo de decodificação de camada-base, em termos de uma região retangular especificada nas coordenadas de imagem para a saída. Quando bl_conformance_window_flag for igual a 0, os valores de bl_conf_win_left_offset, bl_conf_win_right_offset, bl_conf_win_top_offset e bl_conf_win_bottom_offset podem ser inferidos para também serem iguais a 0.
[0148] Em um exemplo, os deslocamentos de janela de camada-base sinalizados podem estar incluídos para calcular o tamanho da imagem de camada-base de saída e, opcionalmente, uma localização em relação à imagem de camada-base decodificada para ser usada no processo de reamostragem, e para calcular a razão de aspecto de escalabilidade ou fator de escalabilidade, por exemplo, como a fração da largura ou da altura da camada-base de saída em relação à largura ou altura de camada de aprimoramento decodificada, respectivamente.
[0149] A Figura 5 é um fluxograma de uma modalidade exemplificativa de um processo para codificar uma imagem de acordo com o(s) aspecto(s) da presente revelação. O processo 500 começa no bloco 505.
[0150] No bloco 510, o processo 500 pode envolver codificar camadas de um fluxo de bits de múltiplas camadas. Em algumas modalidades, um primeiro codificador de vídeo pode codificar todas as camadas do fluxo de bits de múltiplas camadas. Em outras modalidades, o codificador de vídeo pode codificar apenas uma porção das camadas do fluxo de bits de múltiplas camadas. Um codificador de vídeo pode codificar camadas de um fluxo de bits de acordo com um esquema de criptografia. Em alguns aspectos, o fluxo de bits pode incluir uma camada-base que foi criptografada com o uso de um esquema de criptografia que é diferente do esquema e/ou não está associado ao esquema de criptografia usado pelo primeiro codificador de vídeo. Por exemplo, a camada-base pode ter sido codificada por um segundo codificador de vídeo que é diferente do primeiro codificador de vídeo. Em outros aspectos, o fluxo de bits pode incluir uma camada-base que foi criptografada com o uso de um esquema de criptografia que é o mesmo e/ou está associado ao codec de recebimento. Por exemplo, a camada- base pode ter sido codificada pelo primeiro codificador de vídeo.
[0151] No bloco de decisão 515, o processo 500 pode envolver determinar se a camada-base foi codificada com o uso de um esquema de criptografia que está associado ao esquema de criptografia usado pelo primeiro codificador de vídeo. Se a camada-base tiver sido codificada com o uso de um esquema de criptografia que está associado ao esquema de criptografia usado pelo primeiro codificador de vídeo, o processo 500 pode envolver prosseguir para o bloco 520. Se a camada-base tiver sido codificada com o uso de um esquema de criptografia que não está associado ao esquema de criptografia usado pelo primeiro codificador de vídeo, o processo 500 pode envolver prosseguir para o bloco de decisão 535.
[0152] No bloco 520, o processo 500 pode envolver sinalizar uma janela de conformidade. Em um exemplo, a sinalização da janela de conformidade pode envolver definir um sinalizador de janela de conformidade para um valor (por exemplo, 1) para indicar que os deslocamentos de posição fornecer informações de posicionamento para a imagem reamostrada. Uma janela de conformidade pode incluir um ou mais deslocamentos, por exemplo, deslocamentos superior, inferior, esquerdo e direito (vide, por exemplo, a Tabela 1). A janela de conformidade e/ou os deslocamentos podem ser sinalizados em um SPS. Por exemplo, a janela de conformidade pode ser sinalizada em uma camada criptografada de HEVC.
[0153] No bloco 525, o processo 500 pode envolver codificar a imagem com o uso das informações de janela de conformidade.
[0154] No bloco 530, se a camada-base tiver sido codificada com o uso de um esquema de criptografia que não está associado ao esquema de criptografia usado pelo primeiro codificador de vídeo, o processo 500 pode envolver sinalizar uma janela de conformidade de camada-base. Em um exemplo, a sinalização da janela de conformidade pode envolver definir um sinalizador de janela de conformidade de camada-base para um valor (por exemplo, 1) para indicar que os deslocamentos de posição de camada-base fornecer informações de posicionamento para a imagem reamostrada. Uma janela de conformidade de camada-base pode incluir um ou mais deslocamentos, por exemplo, deslocamentos superior, inferior, esquerdo e direito (vide, por exemplo, a Tabela 2). A janela de conformidade e/ou os deslocamentos podem ser sinalizados em um VPS, SPS, PPS e/ou cabeçalho de fatia.
[0155] No bloco 535, o processo 500 pode envolver criptografar a imagem com o uso da janela de conformidade de camada-base. O processo 500 acaba no bloco 540.
[0156] A Figura 6 é um fluxograma de uma modalidade exemplificativa de um processo para decodificar uma imagem de acordo com o(s) aspecto(s) descrito(s) nesta revelação. O processo 600 começa no bloco 605.
[0157] No bloco 610, o processo 600 pode envolver receber um fluxo de bits. Em alguns aspectos, o fluxo de bits pode incluir uma camada-base que foi criptografada com o uso de um esquema de criptografia que não está associado a um esquema de criptografia usado para codificar outras camadas do fluxo de bits. Em outros aspectos, o fluxo de bits pode incluir uma camada-base que foi criptografada com o uso de um esquema de criptografia que está associado a um esquema de criptografia usado para codificar outras camadas do fluxo de bits.
[0158] No bloco 615, o processo 600 pode envolver decodificar um sinalizador de janela de conformidade e pelo menos um deslocamento de posição na camada-base do fluxo de bits. Em algumas modalidades, o sinalizador de janela de conformidade e/ou o pelo menos um deslocamento de posição pode ser sinalizado no VPS da camada-base.
[0159] No bloco 620, o processo 600 pode envolver decodificar a imagem com o uso da janela de conformidade de camada-base. O processo 600 acaba no bloco 625.
[0160] Em um aspecto, a imagem de saída de camada-base pode ser derivada para inúmeras finalidades, incluindo exibir imagens de camada-base e realizar processos de reamostragem.
[0161] Em um outro aspecto, o tamanho de uma janela de conformidade pode ser sinalizado explicitamente com informações de largura e altura, e as informações de largura e altura podem ser usadas para calcular uma razão de aspecto de escalabilidade. Isso pode ser feito com ou sem a determinação de um tamanho de imagem decodificada ou um posicionamento exato da imagem de camada-base de saída. Assim, a janela de conformidade pode ser apenas parcialmente sinalizada.
[0162] Em um aspecto adicional, se uma camada- base recebida for criptografada em termos de não HEVC, a semântica dos deslocamentos de referência dimensionados e o processo de reamostragem usado nos rascunhos de trabalho de SHVC podem ser modificados de modo que uma imagem decodificada de camada de referência com deslocamentos de referência dimensionados possam ser usados como uma entrada no processo de reamostragem e/ou cálculo de razão de escalabilidade. Por exemplo, em tais aspectos, os deslocamentos de referência dimensionados podem incluir scaled_ref_layer_left_offset, scaled_ref_layer_top_offset, scaled_ref_layer_right_offset e scaled_ref_layer_bottom_offset.
[0163] Em ainda um outro aspecto, um decodificador de SHVC pode usar uma estrutura de sintaxe de SPS de AVC de modo que as informações de janela de conformidade de uma camada-base de AVC possam ser usadas pelas camadas de aprimoramento de SHVC e possam ser usadas para derivar as informações de janela de conformidade sem qualquer sinalização adicional.
[0164] Em ainda um outro aspecto, os valores dos parâmetros de janela de conformidade de uma camada-base podem ser fornecidos por meios externos (por exemplo, pelo nível do sistema), em vez de sinalizar uma sintaxe relacionada no fluxo de bits de SHVC. Isso pode ser feito de um modo semelhante à própria camada-base e a outros parâmetros externamente fornecidos para imagens de camada- base.
OUTRAS CONSIDERAÇÕES
[0165] As informações e os sinais revelados no presente documento podem ser representados com o uso de qualquer uma dentre uma variedade de tecnologias e técnicas diferentes. Por exemplo, os dados, as instruções, os comandos, as informações, os sinais, os bits, os símbolos e os chips que podem ser referenciados ao longo da descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, por campos magnéticos ou por partículas, campos ópticos ou partículas, ou qualquer combinação dos mesmos.
[0166] Os vários blocos lógicos ilustrativos e etapas de algoritmo descritos em conjunto com as modalidades reveladas no presente documento podem ser implantados como hardware eletrônico, software de computador ou combinações de ambos. Para ilustrar claramente essa intercambialidade de hardware e software, vários componentes, blocos e etapas ilustrativos foram descritos acima em termos gerais de sua funcionalidade. Se tal funcionalidade for implantada como hardware ou software, depende das restrições de projeto e pedido particular impostas no sistema geral. Os versados na técnica podem implantar a funcionalidade descrita de vários modos para cada aplicação específica, mas tais decisões de implantação não devem ser interpretadas como ocasionando um afastamento do escopo da presente revelação.
[0167] As técnicas descritas no presente documento podem ser implantadas em hardware, software, firmware ou em qualquer combinação dos mesmos. Tais técnicas podem ser implantadas em qualquer um dentre uma variedade de dispositivos como computadores para fins gerais, dispositivo de comunicação sem fio fones, ou dispositivos de circuito integrado que tem múltiplos usos incluindo a aplicação em fones de dispositivo de comunicação sem e outros dispositivos. Quaisquer recursos descritos como dispositivos ou componentes podem ser implantados em um dispositivo lógico integrado ou separadamente como dispositivos lógicos discretos, mas interoperáveis. Se implantadas em software, as técnicas podem ser realizadas, pelo menos em parte, por um meio de armazenamento de dados legível por computador que compreende código de programa que inclui instruções que, quando executadas, realiza um ou mais dos métodos descritos acima. O meio de armazenamento de dados legível por computador pode formar parte de um produto de programa de computador, que pode incluir materiais de embalagem. O meio legível por computador pode compreender memória ou mídia de armazenamento de dados, como memória de acesso aleatório (RAM) como memória de acesso aleatório dinâmica síncrona (SDRAM), memória apenas de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória apenas de leitura eletricamente programável e apagável (EEPROM), memória FLASH, mídia de armazenamento de dados magnética ou óptica, e semelhantes. As técnicas podem, adicional ou alternativamente, ser realizadas, pelo menos em parte, por um meio de comunicação legível por computador que transporta ou comunica código de programa na forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador, como sinais ou ondas propagados.
[0168] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para fins gerais, circuitos integrados específicos de aplicação (ASICs), matrizes lógicas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógicos discretos ou integrados equivalente. Tal processador pode ser configurado para realizar qualquer uma dentre as técnicas descritas nesta revelação. Um processador para fins gerais pode ser um microprocessador, mas alternativamente, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador também pode ser implantado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo de DSP, ou qualquer outra tal conimagem. Dessa maneira, o termo “processador”, conforme usado no presente documento pode se referir a qualquer uma dentre a estrutura anterior, qualquer combinação da estrutura anterior, ou qualquer outra estrutura ou aparelho adequado para a implantação das técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida no software ou hardware dedicado configurado para codificar e decodificar, ou incorporado em um codificador-decodificador de vídeo combinado (CODEC). Também, as técnicas poderiam ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[0169] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um fone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um chipset). Vários componentes ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização através de diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por um conjunto de unidades de hardware interoperativas, que incluem um ou mais processadores conforme descrito acima, em conjunto com o software e/ou o firmware adequado.
[0170] Embora o supracitado tenha sido descrito em conjunto com várias modalidades diferentes, os recursos ou elementos de uma modalidade podem ser combinados com outras modalidades sem se afastar dos ensinamentos desta revelação. Por exemplo, um codificador pode ter múltiplas funções dentre as funções de hash discutidas disponíveis para uso, e pode determinar qual função de hash usar para cada bloco de informações de vídeo. Um índice de hash armazenado pode compreender múltiplos valores, e um bloco de informações de vídeo pode ser mapeado para o índice de hash armazenado se o índice de hash computado para o bloco for compatível com um ou mais dos valores do índice de hash armazenado. Os filtros de hash discutidos podem, em vez disso, ser aplicados em combinação com a adição automática de um bloco atual a uma tabela de hash, isto é, um filtro de hash pode ser aplicado após as informações indicativas de um bloco de informações de vídeo serem adicionadas à tabela de hash. Por exemplo, se uma lista vinculada se tornar completa, então os filtros de hash podem ser aplicados nesse ponto. As combinações semelhantes de recursos também são contempladas incluindo adicionar informações indicativas de um bloco atual a uma tabela de hash após as informações terem sido mapeadas para um índice de hash na tabela de hash; no entanto, as combinações dos recursos entre as respetivas modalidades não são necessariamente limitadas às mesmas.
[0171] Várias modalidades da revelação foram descritas. Essas e outras modalidades estão dentro do escopo das reivindicações a seguir.

Claims (7)

1. Método para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas caracterizado pelo fato de que compreende: codificar pelo menos uma camada de aperfeiçoamento do fluxo de bits de múltiplas camadas com base em um primeiro esquema de codificação, sendo que o fluxo de bits de múltiplas camadas compreende uma camada de aperfeiçoamento e uma camada-base; determinar a possibilidade de a camada-base ter sido codificada com o uso de um esquema de codificação que é associado ao primeiro esquema de codificação, em que um esquema de codificação é associado com o primeiro esquema de codificação somente se i) o esquema de codificação for idêntico ao primeiro esquema codificação ou ii) o primeiro esquema de codificação for uma extensão escalável do esquema de codificação; em resposta à determinação de que a camada-base não foi codificada usando um esquema de codificação que é associado com o primeiro esquema de codificação, (i) codificar um sinalizador de janela de conformidade da camada- base em um Conjunto de Parâmetros de Vídeo (VPS), sendo que o sinalizador de janela de conformidade indica a possibilidade de o VPS compreender pelo menos um deslocamento de posição de camada-base, sendo que o pelo menos um deslocamento de posição de camada-base é indicativo de informações de posicionamento para a imagem; (ii) definir o sinalizador de janela de conformidade para um valor predeterminado, sendo que o valor predeterminado indica que VPS compreende o pelo menos um deslocamento de posição de camada-base, e (iii) codificar o pelo menos um deslocamento de posição de camada-base no VPS; ou em resposta à determinação de que a camada-base foi codificada usando um esquema de codificação que é associada com o primeiro esquema de codificação, (i) codificar um sinalizador de janela de conformidade para a camada-base em um Conjunto de Parâmetros de Sequência (SPS), sendo que o sinalizador de janela de conformidade indica a possibilidade de o SPS compreender pelo menos um deslocamento de posição, sendo que o pelo menos um deslocamento de posição é indicativo de informações de posicionamento para a imagem; (ii) definir o sinalizador de janela de conformidade para um valor predeterminado, sendo que o valor predeterminado indica que SPS compreende o pelo menos um deslocamento de posição, e (iii) codificar o pelo menos um deslocamento de posição no SPS.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o pelo menos um deslocamento de posição compreende pelo menos um dentre um deslocamento para a esquerda, um deslocamento para a direita, um deslocamento para cima e um deslocamento para baixo.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente, em resposta à determinação de que a camada-base não foi codificada com base no primeiro esquema de codificação ou em um esquema de codificação associado ao primeiro esquema de codificação, codificar a imagem de camada de aperfeiçoamento com base no pelo menos um deslocamento de posição.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a camada-base compreende adicionalmente um tamanho de imagem de saída.
5. Aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas caracterizado pelo fato de que compreende: uma memória; e um processador de hardware acoplado de modo operacional à memória e configurado para: codificar pelo menos uma camada de aperfeiçoamento do fluxo de bits de múltiplas camadas com base em um primeiro esquema de codificação, sendo que o fluxo de bits de múltiplas camadas compreende uma camada-base diferente da camada de aperfeiçoamento; determinar a possibilidade de a camada-base ter sido codificada usando um esquema de codificação que é associado ao primeiro esquema de codificação somente se i) o esquema de codificação for idêntico ao primeiro esquema de codificação ou ii) o primeiro esquema de codificação for uma extensão escalável do esquema de codificação; em resposta à determinação de que a camada-base não foi codificada usando um esquema de codificação que é associado com o primeiro esquema de codificação, (i) codificar um sinalizador de janela de conformidade da camada-base em um Conjunto de Parâmetros de Vídeo (VPS), sendo que o sinalizador de janela de conformidade indica a possibilidade de o VPS compreender pelo menos um deslocamento de posição de camada-base, sendo que o pelo menos um deslocamento de posição de camada-base é indicativo de informações de posicionamento para a imagem; (ii) definir o sinalizador de janela de conformidade para um valor predeterminado, sendo que o valor predeterminado indica que o VPS compreende o pelo menos um deslocamento de posição de camada-base, e (iii) codificar o pelo menos um deslocamento de posição de camada-base no VPS da camada- base; em resposta à determinação de que a camada- base foi codificada usando um esquema de codificação que é associada com o primeiro esquema de codificação, (i) codificar um sinalizador de janela de conformidade para a camada-base em um Conjunto de Parâmetros de Sequência (SPS), sendo que o sinalizador de janela de conformidade indica a possibilidade de o SPS compreender pelo menos um deslocamento de posição, sendo que o pelo menos um deslocamento de posição é indicativo de informações de posicionamento para a imagem; (ii) definir o sinalizador de janela de conformidade para um valor predeterminado, sendo que o valor predeterminado indica que SPS compreende o pelo menos um deslocamento de posição, e (iii) codificar o pelo menos um deslocamento de posição no SPS.
6. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que o processador é adicionalmente configurado para, em resposta à determinação de que a camada- base não foi codificada com base no primeiro esquema de codificação ou em um esquema de codificação associado ao primeiro esquema de codificação, codificar a imagem de camada de aperfeiçoamento com base no pelo menos um deslocamento de posição.
7. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que a camada-base compreende adicionalmente um tamanho de imagem de saída.
BR112016024233-5A 2014-04-18 2015-04-17 Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas BR112016024233B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461981625P 2014-04-18 2014-04-18
US61/981,625 2014-04-18
US14/689,000 2015-04-16
US14/689,000 US9641851B2 (en) 2014-04-18 2015-04-16 Conformance window information in multi-layer coding
PCT/US2015/026497 WO2015161271A1 (en) 2014-04-18 2015-04-17 Conformance window information in multi-layer coding

Publications (3)

Publication Number Publication Date
BR112016024233A2 BR112016024233A2 (pt) 2017-08-15
BR112016024233A8 BR112016024233A8 (pt) 2021-07-13
BR112016024233B1 true BR112016024233B1 (pt) 2023-12-19

Family

ID=54323096

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016024233-5A BR112016024233B1 (pt) 2014-04-18 2015-04-17 Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas

Country Status (8)

Country Link
US (1) US9641851B2 (pt)
EP (1) EP3132604B1 (pt)
JP (1) JP6700193B2 (pt)
KR (1) KR102140361B1 (pt)
CN (1) CN106165429B (pt)
BR (1) BR112016024233B1 (pt)
MX (1) MX353507B (pt)
WO (1) WO2015161271A1 (pt)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11201500129UA (en) * 2012-07-09 2015-02-27 Vid Scale Inc Codec architecture for multiple layer video coding
EP3249928A1 (en) * 2016-05-23 2017-11-29 Thomson Licensing Method, apparatus and stream of formatting an immersive video for legacy and immersive rendering devices
EP3603067A4 (en) * 2017-03-20 2021-03-24 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR SIGNALING SCALABLE VIDEO IN A MEDIA APPLICATION FORMAT
CN114009032A (zh) * 2019-06-21 2022-02-01 瑞典爱立信有限公司 视频编码层上切换指示
CA3146230A1 (en) * 2019-07-08 2020-10-22 Huawei Technologies Co., Ltd. Handling of multiple picture size and conformance windows for reference picture resampling in video coding
EP4018659A4 (en) 2019-09-19 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. SCALE WINDOW IN VIDEO CODING
BR112022005293A2 (pt) 2019-09-19 2022-09-20 Beijing Bytedance Network Tech Co Ltd Método de processamento de vídeo, aparelho para processar dados de vídeo e meios de armazenamento e de gravação não transitórios legíveis por computador
US11140402B2 (en) 2019-09-20 2021-10-05 Tencent America LLC Signaling of reference picture resampling with constant window size indication in video bitstream
US11336894B2 (en) * 2019-09-20 2022-05-17 Tencent America LLC Signaling of reference picture resampling with resampling picture size indication in video bitstream
US11317093B2 (en) 2019-09-24 2022-04-26 Tencent America LLC Method for reference picture resampling with offset in video bitstream
EP4026336A4 (en) 2019-10-05 2022-12-07 Beijing Bytedance Network Technology Co., Ltd. LEVEL-BASED SIGNALING OF VIDEO CODING TOOLS
JP7439249B2 (ja) * 2019-10-07 2024-02-27 ホアウェイ・テクノロジーズ・カンパニー・リミテッド サブビットストリーム抽出におけるエラー回避
CN114556934A (zh) 2019-10-12 2022-05-27 北京字节跳动网络技术有限公司 视频编解码中的预测类型信令
CN114556955B (zh) 2019-10-13 2024-04-05 北京字节跳动网络技术有限公司 参考图片重采样与视频编解码工具之间的相互作用
US11778215B2 (en) * 2020-02-28 2023-10-03 Qualcomm Incorporated Coding output layer set data and conformance window data of high level syntax for video coding
CN115299064A (zh) * 2020-03-11 2022-11-04 抖音视界有限公司 基于颜色格式的自适应参数集信令通知
BR112022019770A2 (pt) * 2020-03-30 2022-11-16 Bytedance Inc Método de processamento de vídeo, aparelho para processar dados de vídeo, meios de armazenamento e de gravação não transitórios legíveis por computador
CN115699769A (zh) 2020-05-31 2023-02-03 抖音视界有限公司 使用通用约束信息语法元素的约束信令
JP7447147B2 (ja) * 2020-06-10 2024-03-11 テンセント・アメリカ・エルエルシー 符号化ビデオ・ストリームにおけるサブ画像のビットストリーム抽出のための技術
CN112601111B (zh) * 2020-11-19 2023-03-14 西安诺瓦星云科技股份有限公司 数据处理方法和装置以及数据传输系统
WO2023054068A1 (ja) * 2021-09-30 2023-04-06 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140146891A1 (en) * 2011-06-10 2014-05-29 Mediatek Inc. Method and Apparatus of Scalable Video Coding
US9635369B2 (en) * 2012-07-02 2017-04-25 Qualcomm Incorporated Video parameter set including HRD parameters
AU2013323836B2 (en) * 2012-09-27 2017-12-07 Dolby Laboratories Licensing Corporation Inter-layer reference picture processing for coding standard scalability
US20150078457A1 (en) * 2013-09-13 2015-03-19 Qualcomm Incorporated Representation format signaling in multi-layer video coding

Also Published As

Publication number Publication date
US20150304666A1 (en) 2015-10-22
JP2017517185A (ja) 2017-06-22
EP3132604B1 (en) 2020-04-08
US9641851B2 (en) 2017-05-02
EP3132604A1 (en) 2017-02-22
CN106165429B (zh) 2019-05-28
KR102140361B1 (ko) 2020-07-31
MX2016013401A (es) 2017-02-15
WO2015161271A1 (en) 2015-10-22
BR112016024233A2 (pt) 2017-08-15
CN106165429A (zh) 2016-11-23
MX353507B (es) 2018-01-17
BR112016024233A8 (pt) 2021-07-13
JP6700193B2 (ja) 2020-05-27
KR20160145076A (ko) 2016-12-19

Similar Documents

Publication Publication Date Title
BR112016024233B1 (pt) Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas
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
BR112016021489B1 (pt) Método e equipamento para codificação de informação de vídeo, e,memória legível por computador
BR112016030377B1 (pt) Método e aparelho para converter informações de vídeo em código em um fluxo de bits, assim como memória legível por computador
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
BR112016001223B1 (pt) Aparelho e método para codificar ou decodificar informações de vídeo e memória legível por computador
BR112016021473B1 (pt) Método e aparelho para codificar informação de vídeo usando extensão escalável para codificação de vídeo de alta eficiência, shvc, ou codificação de vídeo de alta eficiência de múltiplas vistas, mv-hevc, assim como memória legível por computador
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
CN107408400B (zh) 用于处理视频数据的装置和方法
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
CA2951530C (en) Full picture order count reset for multi-layer codecs
BR112016015455B1 (pt) Inferência aperfeiçoada de nooutputofpriorpicsflag em codificação de vídeo
BR112015023800B1 (pt) Dispositivo e método para codificação escalonável de informações de vídeo
BR112016030530B1 (pt) Método e aparelho para decodificação de dados de vídeo e método e aparelho para codificação de dados de vídeo em um fluxo de bits
US9848199B2 (en) Device and method for scalable coding of video information
JP2017507539A (ja) マルチレイヤコーディングにおいて回復点補足エンハンスメント情報(sei)メッセージと領域リフレッシュ情報seiメッセージとをコーディングするための方法
ES2887369T3 (es) Método y dispositivo para decodificar un conjunto de instantáneas de referencia inter capa (RPS) en decodificación multicapa
BR112016000865B1 (pt) Aparelho e método para codificar informações de vídeo multicamadas, aparelho e método para decodificar informações de vídeo multicamadas, e memória legível por computador
BR112016015931B1 (pt) Suporte de camada-base de não hevc em extensões de muticamadas de hevc
BR112016015918B1 (pt) Suporte de camada base não-hevc em extensões de muticamada de hevc
BR112016015568B1 (pt) Método e aparelho para codificar ou decodificar dados de vídeo e memória legível por computador
BR112016030211B1 (pt) Restrições de conformidade de fluxo de bits em codificação de vídeo escalonável
BR112016022251B1 (pt) Uso de mensagens de sei de hevc específicas para codecs de vídeo de multicamada

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 17/04/2015, OBSERVADAS AS CONDICOES LEGAIS