BR112016029691B1 - Projeto extensível de mensagens da informação suplementar do realce (sei) de aninhamento - Google Patents

Projeto extensível de mensagens da informação suplementar do realce (sei) de aninhamento Download PDF

Info

Publication number
BR112016029691B1
BR112016029691B1 BR112016029691-5A BR112016029691A BR112016029691B1 BR 112016029691 B1 BR112016029691 B1 BR 112016029691B1 BR 112016029691 A BR112016029691 A BR 112016029691A BR 112016029691 B1 BR112016029691 B1 BR 112016029691B1
Authority
BR
Brazil
Prior art keywords
video
sei message
sei
syntax element
structures
Prior art date
Application number
BR112016029691-5A
Other languages
English (en)
Other versions
BR112016029691A2 (pt
BR112016029691A8 (pt
Inventor
Adarsh Krishnan Ramasubramonian
Fnu HENDRY
Ye-Kui Wang
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016029691A2 publication Critical patent/BR112016029691A2/pt
Publication of BR112016029691A8 publication Critical patent/BR112016029691A8/pt
Publication of BR112016029691B1 publication Critical patent/BR112016029691B1/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/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/34Scalability techniques involving progressive bit-plane based encoding of the enhancement layer, e.g. fine granular scalability [FGS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process

Landscapes

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

Abstract

projeto extensível de mensagens da informação suplementar do realce (sei) de aninhamento. em um exemplo, um método para codificação de vídeo inclui processamento de uma unidade da camada de abstração de rede (nal) da informação suplementar do realce (sei) que compreende uma ou mais estruturas da mensagem sei em uma carga útil de sequência de byte não processada (rbsp), de modo que uma ou mais estruturas da mensagem sei inclui pelo menos uma estrutura da mensagem sei de aninhamento com uma ou mais mensagens sei. em várias formas de realização, a unidade nal sei é processada, e um elemento de sintaxe, indicativo de uma série de mensagens sei compreendidas na pelo menos uma estrutura de mensagem de aninhamento, é codificado.

Description

CAMPO TÉCNICO
[0001] Esta invenção em geral se refere à codificação e compressão de vídeo, e mais particularmente à melhoria da análise de estruturas de mensagens da informação suplementar do realce (SEI) de aninhamento.
FUNDAMENTOS DA INVENÇÃO
[0002] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de radiodifusão direta digital, sistemas de radiodifusão sem fios, assistentes digitais pessoais (PDAs), computadores de mesa ou portáteis, tablet, leitores de livros eletrônicos, câmaras digitais, aparelhos de gravação digital, leitores de mídias digitais, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones celulares ou rádio via satélite, chamados “smartphones”, dispositivos de teleconferência de vídeo, dispositivos de streaming de vídeo e afins. Os dispositivos de vídeo digital implementam uma ou mais técnicas de codificação de vídeo. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e / ou armazenar informação de vídeo digital de forma mais eficiente implementando tais técnicas de codificação de vídeo.
[0003] As técnicas de codificação de vídeo incluem, sem limitação, aquelas descritas nas normas definidas pelo 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 ou Codificação de Vídeo Avançada (AVC) MPEG-4 ISO / IEC (incluindo suas extensões de Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo Multivista (MVC)), e a norma Codificação de Vídeo de Alta Eficiência (HEVC) relativamente nova. A norma HEVC foi recentemente finalizada pela Equipe de Colaboração Conjunta sobre Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) do Setor de Normalização das Telecomunicações da União Internacional de Telecomunicações (ITU-T) e Grupo de Especialistas de Imagens em Movimento (MPEG), formado pela Organização Internacional de Normalização (ISO) e pela Comissão Eletrotécnica Internacional (IEC). O esboço de trabalho mais recente (WD) da especificação HEVC, denominado HEVC WD, está disponível em phenix.it- sudparis.eu/jct/doc_end_user/documents/17_Valencia/wg11/ JCTVC-Q1003-v1.zip. A extensão multivista para HEVC, ou seja, MV-HEVC, também está sendo desenvolvida pelo JCT-3V. Um esboço de trabalho recente de MV-HEVC WD3 a seguir está disponível a partir de phenix.it- sudparis.eu/jct2/doc_end_user/documents/8_Valencia/wg11/JCT 3V-H1002-v5.zip. A extensão escalável para HEVC, chamada SHVC, também está sendo desenvolvida pelo JCT-VC. Um esboço de trabalho recente de SHVC e referido como SHVC WD2 a seguir está disponível em http://phenix.it- sudparis.eu/jct/doc_end_user/documents/17_Valencia/wg11/JCT VC-Q1008-v2.zip.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intraimagem) e / ou predição temporal (inter-imagem) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em blocos, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser referidos como treeblocks, unidades de codificação (CUs) e / ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados utilizando predição espacial relativamente a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar a predição espacial com respeito a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e as imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais que indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de codificação intra e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residual, que então podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos num arranjo bidimensional, podem ser escaneados para produzir um vetor unidimensional de coeficientes de transformada, e a codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
SUMÁRIO DA INVENÇÃO
[0006] Em geral, esta invenção descreve técnicas relacionadas com a melhoria da análise de estruturas de mensagens da informação suplementar do realce (SEI) de aninhamento. Várias técnicas descritas abaixo fornecem métodos e dispositivos para reduzir ou eliminar erros de análise durante o processamento de estruturas de mensagem SEI de aninhamento.
[0007] Em uma forma de realização, é descrito um método para codificação de vídeo. O método compreende: processar uma unidade da Camada de Abstração de Rede (NAL) da SEI, compreendendo uma carga útil de sequência de bytes não processada (RBSP) que compreende uma ou mais estruturas de mensagem SEI, em que uma ou mais estruturas de mensagem SEI compreendem pelo menos uma estrutura de mensagem SEI Uma ou mais mensagens SEI; E codificar um elemento de sintaxe indicativo de um número de mensagens SEI compreendidas na pelo menos uma estrutura da mensagem SEI de aninhamento.
[0008] Em outra forma de realização, é descrito um dispositivo para codificação de vídeo. O dispositivo compreende uma memória configurada para armazenar dados de vídeo, e um processador em comunicação com a memória. O processador é configurado para: processar uma unidade NAL SEI associada com os dados de vídeo, em que a unidade NAL SEI compreende uma RBSP que compreende uma ou mais estruturas de mensagem SEI, e em que a uma ou mais estruturas de mensagem SEI compreendem pelo menos uma estrutura da mensagem SEI de aninhamento com uma ou mais mensagens SEI; e codificar um elemento de sintaxe indicativo de uma série de mensagens SEI compreendidas na pelo menos uma estrutura da mensagem SEI de aninhamento.
[0009] Em outra forma de realização, é descrito um dispositivo para codificação de vídeo. O dispositivo compreende meios para processar uma unidade NAL SEI associada com os dados de vídeo, em que a unidade NAL SEI compreende uma RBSP que compreende uma ou mais estruturas de mensagem SEI e em que a uma ou mais estruturas de mensagem SEI compreendem pelo menos uma estrutura da mensagem SEI de aninhamento tendo uma ou mais mensagens SEI; e meios para codificar um elemento de sintaxe indicativo de uma série de mensagens SEI compreendidas na pelo menos uma estrutura da mensagem SEI de aninhamento.
[0010] Em outra forma de realização, é descrito um meio não transitório de leitura por computador. O meio não transitório de leitura por computador tem instruções armazenadas nele que, quando executadas, levam um ou mais processadores a: processar uma unidade NAL SEI, compreendendo uma RBSP que compreende uma ou mais estruturas de mensagem SEI, em que a uma ou mais estruturas de mensagem SEI compreende pelo menos uma estrutura da mensagem SEI de aninhamento tendo uma ou mais mensagens SEI; e codificar um elemento de sintaxe indicativo de uma série de mensagens SEI compreendidas na pelo menos uma estrutura da mensagem SEI de aninhamento.
[0011] Em cada uma destas formas de realização, a pelo menos uma estrutura da mensagem SEI de aninhamento pode compreender uma de uma estrutura da mensagem SEI de aninhamento escalável ou uma estrutura da mensagem SEI de aninhamento de partição de fluxo de bits.
[0012] Adicionalmente ou alternativamente, em cada uma destas formas de realização, a codificação do elemento de sintaxe pode compreender a decodificação do elemento de sintaxe, e o número de mensagens SEI compreendidas na pelo menos uma estrutura da mensagem SEI de aninhamento pode ser determinado com base no elemento de sintaxe decodificado (por exemplo, por método, processador, meios e / ou instruções).
[0013] Adicionalmente ou alternativamente, em cada uma destas formas de realização, a pelo menos uma estrutura da mensagem SEI de aninhamento pode ser analisada com base no número determinado de mensagens SEI compreendidas na pelo menos uma estrutura da mensagem SEI de aninhamento (por exemplo, por método, processador, meio e / ou instruções).
[0014] Adicionalmente ou alternativamente, em cada uma destas formas de realização, o elemento de sintaxe pode ser decodificado a partir da pelo menos uma estrutura da mensagem SEI de aninhamento.
[0015] Adicionalmente ou alternativamente, em cada uma destas formas de realização, a codificação do elemento de sintaxe pode compreender a codificação do elemento de sintaxe, e o número de mensagens SEI compreendidas na pelo menos uma estrutura da mensagem SEI de aninhamento pode ser determinado antes da codificação do elemento de sintaxe (por exemplo, por método, processador, meio e / ou instruções).
[0016] Adicionalmente ou alternativamente, em cada uma destas formas de realização, o elemento de sintaxe é codificado na pelo menos uma estrutura da mensagem SEI de aninhamento.
[0017] Os detalhes de um ou mais exemplos estão apresentados nos desenhos anexos e na descrição abaixo, os quais não se destinam a limitar o âmbito completo dos conceitos inventivos aqui descritos. Outras características, objetos e vantagens serão evidentes a partir da descrição e desenhos, e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0018] Ao longo dos desenhos, os números de referência podem ser reutilizados para indicar correspondência entre elementos referenciados. Os desenhos são proporcionados para ilustrar formas de realização exemplificativas aqui descritas e não se destinam a limitar o âmbito da invenção.
[0019] A FIG. 1 é um diagrama em blocos que ilustra um exemplo de sistema de codificação e decodificação de vídeo que pode utilizar técnicas de acordo com aspectos descritos nesta invenção.
[0020] A FIG. 2A é um diagrama em blocos que ilustra um exemplo de um codificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta invenção.
[0021] A FIG. 2B é um diagrama em blocos que ilustra um exemplo de um codificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta invenção.
[0022] A FIG. 3A é um diagrama em blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta invenção.
[0023] A FIG. 3B é um diagrama em blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta invenção.
[0024] A FIG. 4 ilustra a estrutura de uma unidade da Camada de Abstração de Rede (NAL) da informação suplementar do realce (SEI) de acordo com aspectos descritos nesta invenção.
[0025] A FIG. 5 é um diagrama em blocos que ilustra um exemplo de uma parte de um processo de codificação de vídeo de acordo com aspectos descritos nesta invenção.
[0026] A FIG. 6 é um diagrama em blocos que ilustra um exemplo de uma parte de um processo de decodificação de vídeo de acordo com os aspectos descritos nesta invenção.
[0027] A FIG. 7 é um diagrama em blocos que ilustra um exemplo de uma parte de um processo de codificação de vídeo de acordo com aspectos descritos nesta invenção.
[0028] A FIG. 8 é um diagrama em blocos que ilustra um exemplo de uma parte de um processo de codificação de vídeo de acordo com aspectos descritos nesta invenção.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0029] Em geral, esta invenção se refere a mensagens de informação suplementar do realce (SEI) de aninhamento para codificação de múltiplas camadas (ou múltiplas vistas) no contexto de codecs de vídeo avançados, tal como a Codificação de Vídeo de Alta Eficiência (HEVC). Mais especificamente, as técnicas descritas nesta invenção se referem a sistemas, aparelhos e métodos para reduzir ou eliminar erros de análise durante a análise de estruturas de mensagem SEI de aninhamento nas extensões multivista e escaláveis de HEVC, nomeadamente MV-HEVC e SHVC, respectivamente.
[0030] Uma unidade NAL SEI pode compreender uma estrutura de carga útil de sequência de byte não processada (RBSP), que pode, por sua vez, compreender uma ou mais estruturas de mensagem SEI. Existem diferentes tipos de estruturas de mensagens SEI que podem estar compreendidas na estrutura RBSP. Esses tipos incluem estruturas de mensagem SEI de aninhamento, que podem conter uma ou várias mensagens SEI. Por exemplo, a estrutura da mensagem SEI de aninhamento escalável e a estrutura da mensagem SEI de aninhamento de partição de fluxo de bits são dois desses tipos de estruturas de mensagem SEI de aninhamento.
[0031] Com base em estruturas de sintaxe convencionais para estruturas de mensagem SEI de aninhamento escalável e estruturas de mensagem SEI de aninhamento de partição de fluxo de bits, os decodificadores analisam mensagens SEI na estrutura da mensagem SEI de aninhamento até uma posição de byte ser igual à posição do primeiro bit, nos bits à direita da estrutura da RBSP, que tem um valor de 1. Assim, se uma estrutura da mensagem SEI de aninhamento precede outros dados (isto é, dados diferentes dos bits à direita da RBSP) na estrutura da RBSP, um decodificador que implementa estas estruturas de sintaxe convencionais tentará analisar os outros dados como uma mensagem SEI na estrutura da mensagem SEI de aninhamento, resultando em um erro de análise.
[0032] As formas de realização aqui descritas impedem estes erros de análise, relacionados com estruturas de mensagem SEI de aninhamento, modificando as estruturas de sintaxe convencionais para mensagens SEI de aninhamento (por exemplo, estruturas de mensagem SEI de aninhamento escalável e / ou estruturas de mensagem SEI de aninhamento de partição de fluxo de bits), de modo que os decodificadores podem analisar mensagens SEI com base na série de mensagens SEI na estrutura da mensagem SEI de aninhamento, em vez dos bits à direita da RBSP. Por exemplo, uma indicação da série de mensagens SEI na estrutura da mensagem SEI de aninhamento pode ser codificada como um elemento de sintaxe na estrutura da mensagem SEI de aninhamento. Este elemento de sintaxe pode então ser utilizado durante a decodificação para assegurar que apenas a série de mensagens SEI seja analisada.
[0033] Embora certas formas de realização sejam aqui descritas no contexto das normas HEVC e / ou H.264, um especialista na matéria pode compreender que os sistemas e métodos aqui descritos podem ser aplicáveis a qualquer padrão de codificação de vídeo adequado. Por exemplo, as formas de realização aqui descritas podem ser aplicáveis a uma ou mais das seguintes normas: Sector de Normalização das Telecomunicações (UIT-T) da União Internacional das Telecomunicações (ITU) H.261, MPEG 1 Visual da Organização Internacional de Normalização / Comissão Eletrotécnica Internacional (ISO / IEC), 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 AVC MPEG-4 ISO / IEC), incluindo suas extensões escaláveis e multivista. Além disso, as técnicas descritas nesta invenção podem se tornar parte das normas desenvolvidas no futuro. Em outras palavras, as técnicas descritas nesta invenção podem ser aplicáveis a normas de codificação de vídeo anteriormente desenvolvidas, padrões de codificação de vídeo atualmente em desenvolvimento e futuros padrões de codificação de vídeo.
[0034] HEVC geralmente segue o enquadramento de padrões de codificação de vídeo anteriores em muitos aspectos. A unidade de predição em HEVC é diferente das unidades de predição (por exemplo, macroblocos) em certos padrões de codificação de vídeo anteriores. De fato, o conceito de um macrobloco não existe em HEVC tal como entendido em certos padrões de codificação de vídeo anteriores. Um macrobloco é substituído por uma estrutura hierárquica baseada em um esquema de quadtree, que pode fornecer alta flexibilidade, entre outros possíveis benefícios. Por exemplo, dentro do esquema HEVC, são definidos três tipos de blocos, Unidade de Codificação (CU), Unidade de Predição (PU) e Unidade de Transformada (TU). CU pode referir-se à unidade básica de divisão de região. CU pode ser considerada análoga ao conceito de macrobloco, mas HEVC não restringe o tamanho máximo de CUs e pode permitir a divisão recursiva em quatro CUs de tamanho igual para melhorar a adaptatividade do conteúdo. A PU pode ser considerada a unidade básica de predição inter / intra e uma única PU pode conter múltiplas divisões de forma arbitrárias para codificar eficazmente padrões de imagem irregulares. TU pode ser considerada a unidade básica de transformada. TU pode ser definida independentemente da PU; no entanto, o tamanho de uma TU pode ser limitado ao tamanho da CU à qual pertence a TU. Esta separação da estrutura de bloco em três conceitos diferentes pode permitir que cada unidade seja optimizada de acordo com o papel respectivo da unidade, o que pode resultar em uma eficiência de codificação melhorada.
[0035] Para fins de ilustração apenas, certas formas de realização aqui divulgadas são descritas com exemplos incluindo duas camadas (por exemplo, uma camada inferior tal como a camada de base e uma camada superior tal como a camada de realce) de dados de vídeo. Uma “camada” de dados de vídeo pode geralmente referir-se a uma sequência de imagens tendo pelo menos uma característica comum, tal como uma vista, uma taxa de quadros, uma resolução ou semelhante. Por exemplo, uma camada pode incluir dados de vídeo associados a uma vista particular (por exemplo, perspectiva) de dados de vídeo multivista. Como outro exemplo, uma camada pode incluir dados de vídeo associados a uma camada particular de dados de vídeo escaláveis. Deste modo, esta descrição pode referir-se de forma permutável a uma camada e uma vista de dados de vídeo. Isto é, uma vista de dados de vídeo pode ser referida como uma camada de dados de vídeo, e uma camada de dados de vídeo pode ser referida como uma vista de dados de vídeo. Além disso, um codec de múltiplas camadas (também referido como um codificador de vídeo de camadas múltiplas ou codificador-decodificador de camadas múltiplas) pode conjuntamente referir-se a um codec multivista ou a um codec escalável (por exemplo, um codec configurado para codificar e / ou decodificar dados de vídeo usando MV-HEVC, 3D-HEVC, SHVC, ou outra técnica de codificação de múltiplas camadas). A codificação de vídeo e decodificação de vídeo podem ambas em geral sem referidas como uma codificação de vídeo. Deve ser entendido que esses exemplos podem ser aplicáveis a configurações incluindo múltiplas camadas de base e / ou de realce. Em adição, para facilidade de explicação, a descrição a seguir inclui os termos “quadros” ou “blocos” com referência a certas formas de realização. No entanto, esses termos não devem ser considerados limitantes. Por exemplo, as técnicas descritas abaixo podem ser usadas com quaisquer unidades de vídeo adequadas, tais como blocos (por exemplo, CU, PU, TU, macroblocos, etc), fatias, quadros, etc.
NORMAS DE CODIFICAÇÃO DE VÍDEO
[0036] Uma imagem digital, tal como uma imagem de vídeo, uma imagem de TV, uma imagem fixa 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 de dezenas de milhares. Cada pixel contém tipicamente informações de luminância e crominância. Sem compressão, a grande quantidade de informação a ser transportada de um codificador de imagem para um decodificador de imagem tornaria impossível a transmissão de imagens em tempo real. Para reduzir a quantidade de informação a ser transmitida, foram desenvolvidos vários métodos de compressão diferentes, tais como as normas JPEG, MPEG e H.263.
[0037] As normas de codificação de vídeo incluem ITU-T H.261, ISO / IEC MPEG-1 Visual, ITU-T H.262 ou ISO / IEC MPEG-2 Visual, ITU-T H.263, ISO / IEC MPEG-4 Visual e ITU-T H.264 (também conhecida como MPEG-4 AVC ISO / IEC), incluindo suas extensões de codificação escaláveis e multivista denominadas SVC e MVC, respectivamente.
[0038] Além disso, o HEVC está sendo desenvolvida pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO / IEC (MPEG). A extensão multivista para HEVC, ou seja, MV-HEVC, e a extensão escalável para HEVC, SHVC, também estão sendo desenvolvidas pela JCT-3V (Equipe de Colaboração Conjunta de ITU-T / ISO / IEC no Desenvolvimento da Extensão de Codificação de Vídeo em 3D) e JCT-VC, respectivamente.
SISTEMA DE CODIFICAÇÃO DE VÍDEO
[0039] Diversos aspectos dos novos sistemas, aparelhos e métodos são descritos mais completamente a seguir com referência aos desenhos anexos. No entanto, esta divulgação pode ser incorporada em muitas formas diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apresentada ao longo desta invenção. Em vez disso, estes aspectos são proporcionados de modo que esta invenção será ampla e completa e irá transmitir completamente o âmbito da invenção para os especialistas na técnica. Com base nos ensinamentos aqui descritos, um especialista na técnica deve compreender que o âmbito da invenção se destina a abranger qualquer aspecto dos novos sistemas, aparelhos e métodos aqui descritos, se implementados de forma independente de, ou combinados com, qualquer outro aspecto da invenção. Por exemplo, um aparelho pode ser implementado ou um método pode ser praticado usando qualquer número dos aspectos aqui apresentados. Além disso, o âmbito da invenção se destina a cobrir um tal aparelho ou método que seja praticado utilizando outra estrutura, funcionalidade ou estrutura e funcionalidade além de ou diferentes dos vários aspectos da invenção aqui estabelecidos. Deve ser entendido que qualquer aspecto aqui divulgado pode ser incorporado por um ou mais elementos de uma reivindicação.
[0040] Embora aspectos particulares estejam aqui descritos, muitas variações e permutações destes aspectos estão dentro do âmbito da invenção. Embora sejam mencionados alguns benefícios e vantagens dos aspectos preferidos, o âmbito da invenção não se destina a ser limitado a benefícios, usos ou objetivos particulares. Em vez disso, aspectos da invenção pretendem ser amplamente aplicáveis a diferentes tecnologias sem fios, configurações de sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados a título de exemplo nas figuras e na descrição seguinte dos aspectos preferidos. A descrição detalhada e os desenhos são meramente ilustrativos da invenção em vez de limitantes, sendo o âmbito da invenção definido pelas reivindicações anexas e seus equivalentes.
[0041] A FIG. 1 é um diagrama em blocos que ilustra um sistema de codificação de vídeo exemplificativo 10 que pode utilizar as técnicas para eliminar ou reduzir erros de análise na análise de mensagens SEI descritas em outro local (por exemplo, codificando um elemento de sintaxe indicativo de uma série de mensagens SEI, compreendidas em uma estrutura da mensagem SEI de aninhamento, na estrutura da mensagem SEI de aninhamento e / ou usando o elemento de sintaxe para analisar as mensagens SEI). Conforme aqui descrito, o termo “codificador de vídeo” se refere em geral a codificadores de vídeo e decodificadores de vídeo. Nesta descrição, os termos “codificação de vídeo” ou “codificação” podem se referir genericamente à codificação de vídeo e decodificação de vídeo.
[0042] Conforme ilustrado na FIG. 1, o sistema de codificação de vídeo 10 inclui dispositivo de fonte 12 e dispositivo de destino 14. O dispositivo de fonte 12 gera dados de vídeo codificados. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados gerados pelo dispositivo de fonte 12. O dispositivo de fonte 12 pode fornecer os dados de vídeo para o dispositivo de destino 14 através do canal de comunicação 16, o qual pode incluir um meio de armazenamento de leitura por computador ou outro canal de comunicação. No exemplo da FIG. 1, o dispositivo de fonte 12 e o dispositivo de destino 14 constituem dispositivos separados. Note-se, contudo, que o dispositivo de fonte 12 e o dispositivo de destino 14 podem fazer parte de um mesmo dispositivo (não ilustrado).
[0043] O dispositivo de fonte 12 e o dispositivo de destino 14 podem incluir, respectivamente, uma ampla gama de dispositivos, incluindo computadores de mesa, computadores portáteis (por exemplo, laptops), tablet, settop boxes, telefones, dispositivos de comunicação sem fios tais como os chamados “smartfones” e / ou os chamados “smartpads”, televisores, câmaras, dispositivos de visualização, leitores de mídia digitais, consoles de jogos de vídeo, computadores no interior de automóveis, dispositivos de streaming de vídeo, dispositivos que são vestíveis (ou fixos de maneira removível) por (a) uma entidade (por exemplo, um ser humano, um animal e / ou outro dispositivo controlado), tal como óculos e / ou um dispositivo de computação vestível, dispositivos ou aparelhos que podem ser consumidos, ingeridos ou colocados dentro de uma entidade e / ou semelhantes. O dispositivo de fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fios (por exemplo, comunicação celular, comunicação local e / ou de área ampla, comunicação par a par, comunicação de campo próximo e / ou semelhante).
[0044] O dispositivo de destino 14 pode receber, através do canal de comunicação 16, os dados de vídeo codificados a serem decodificados. O canal de comunicação 16 pode compreender um tipo de meio ou dispositivo capaz de mover (ou seja, comunicar ou transmitir) os dados de vídeo codificados do dispositivo de fonte 12 para o dispositivo de destino 14. Por exemplo, o canal de comunicação 16 pode compreender um meio de comunicação para permitir que o dispositivo de fonte 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com uma norma de comunicação, tal como um protocolo de comunicação sem fios e transmitidos ao dispositivo de destino 14. O meio de comunicação pode compreender um meio de comunicação sem fios ou com fios, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações de base ou outro equipamento que pode ser útil para facilitar a comunicação do dispositivo de fonte 12 para o dispositivo de destino 14.
[0010] Em algumas formas de realização da presente invenção, os dados codificados podem ser emitidos a partir da interface de saída 22 para um dispositivo de armazenamento. Em tais exemplos, o canal 16 pode corresponder a um dispositivo de armazenamento ou meio de armazenamento de leitura por computador que armazena os dados de vídeo codificados gerados pelo dispositivo de fonte 12. Por exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento de leitura por computador através do acesso ao disco ou do acesso ao cartão. De modo semelhante, os dados codificados podem ser acessados a partir do meio de armazenamento de leitura por computador pela interface de entrada 28. O meio de armazenamento de leitura por computador pode incluir qualquer um de uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente, tal como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou outros meios de armazenamento digital para armazenar dados de vídeo. O meio de armazenamento de leitura por computador pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do meio de armazenamento de leitura por computador através de transmissão ou transferência. O servidor de arquivo pode ser um tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Os servidores de arquivo de exemplo incluem um servidor de rede (por exemplo, para um site), um servidor de protocolo de transferência de arquivos (FTP), dispositivos de armazenamento fixos à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de uma ligação de dados padrão, incluindo uma ligação à Internet. Isto pode incluir um canal sem fios (por exemplo, uma ligação da rede de área local sem fios (WLAN), uma ligação com fios (por exemplo, uma linha de assinante 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 meio de armazenamento de leitura por computador pode ser uma transmissão ao vivo ou uma transmissão de download, ou uma combinação de ambos.
[0046] As técnicas desta invenção podem implementar aplicativos ou configurações além de aplicativos ou configurações sem fios. As técnicas podem ser aplicadas à codificação de vídeo em apoio a uma variedade de aplicações de multimídia, tais como transmissões de televisão por via aérea, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões de transmissão ai vivo via internet, tal como transmissão dinâmica adaptativa através de Protocolo de Transferência de Hipertexto (HTTP), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outros aplicativos. Em algumas formas de realização, o sistema 10 pode ser configurado para suportar uma transmissão de vídeo unidirecional ou bidirecional para suportar aplicações tais como transmissão ao vivo de vídeo, reprodução de vídeo, radiodifusão de vídeo e / ou videotelefonia.
[0047] Na FIG. 1, o dispositivo de fonte 12 inclui fonte de vídeo 18, codificador de vídeo 20 e interface de saída 22. O dispositivo de destino 14 inclui interface de entrada 28, decodificador de vídeo 30 e dispositivo de visualização 32. O codificador de vídeo 20 do dispositivo de fonte 12 pode ser configurado para aplicar as técnicas para codificar um fluxo de bits incluindo dados de vídeo de acordo com padrões múltiplos (por exemplo, HEVC) ou extensões de normas. Em outras formas de realização da presente invenção, o dispositivo de fonte 12 e o dispositivo de destino 14 podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo de fonte 12 pode receber dados de vídeo de uma fonte de vídeo que é “externa” (isto é, uma fonte diferente da fonte de vídeo 18) à fonte de vídeo 18, tal como uma câmara externa. Do mesmo modo, o dispositivo de destino 14 pode interagir com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado, tal como o dispositivo de exibição 32.
[0048] A fonte de vídeo 18 do dispositivo de fonte 12 pode incluir um dispositivo de captura de vídeo, tal como uma câmara de vídeo, um arquivo de vídeo contendo vídeo previamente capturado e / ou uma interface de alimentação de vídeo para receber vídeo de um fornecedor de conteúdo de vídeo. A fonte de vídeo 18 pode gerar dados baseados em gráficos computadorizados como o vídeo de origem, ou uma combinação de vídeo direto, vídeo arquivado e / ou vídeo gerado por computador. Em algumas formas de realização, com base na fonte de vídeo 18 sendo uma câmara de vídeo, dispositivo de fonte 12 e dispositivo de destino 14 podem formar os chamados “telefones de câmara” ou “telefones de vídeo”. O vídeo capturado, pré-capturado e / ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificadas podem ser transmitidas pela interface de saída 22 para um canal de comunicação 16, o qual pode incluir um meio de armazenamento de leitura por computador, tal como discutido acima.
[0049] O meio de armazenamento de leitura por computador pode incluir meios transitórios, tal como uma transmissão sem fios ou uma transmissão de rede com fios, ou meios de armazenamento (por exemplo, meios de armazenamento não transitórios), tais como um disco rígido, uma unidade flash, um disco compacto, um disco de vídeo digital, um disco Blu-ray ou outro meio de leitura por computador. Um servidor de rede (não mostrado) pode receber dados de vídeo codificados a partir do dispositivo de fonte 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14 (por exemplo, através de transmissão de rede). Um dispositivo de computação de uma unidade de produção de meio, tal como uma unidade de estampagem de disco, pode receber dados de vídeo codificados do dispositivo de fonte 12 e produzir um disco contendo os dados de vídeo codificados. Por conseguinte, o canal de comunicação 16 pode ser entendido como incluindo um ou mais meios de armazenamento legíveis por computador de várias formas.
[0050] A interface de entrada 28 do dispositivo de destino 14 pode receber informação via (por exemplo, a partir de ou através de) o canal de comunicação 16. A informação recebida através do canal de comunicação 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que pode ser utilizada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e / ou processamento de blocos e / ou outras unidades codificadas (por exemplo, um grupo de imagens (GOP)). O dispositivo de exibição 32 exibe os dados de vídeo decodificados, por exemplo, para um usuário e pode incluir qualquer um de uma variedade de dispositivos de exibição, tal como um tubo de raios catódicos (CRT), um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0051] O codificador de vídeo 20 e / ou o decodificador de vídeo 30 podem funcionar de acordo com um padrão de codificação de vídeo, tal como o padrão HEVC, e podem estar em conformidade com o Modelo de Teste HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar de acordo com outras normas proprietárias ou da indústria, tal como a norma ITU-T H.264, também referida como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC) ou extensões dessas normas. As técnicas desta invenção, no entanto, não estão limitadas a qualquer norma de codificação particular. Outros exemplos de normas de codificação de vídeo incluem MPEG-2 e ITU-T H.263.
[0052] Embora não ilustrado na FIG. 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser integrados com um codificador de áudio e decodificador de áudio; e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e / ou software, para manusear a codificação de áudio e vídeo em um fluxo de dados comum ou em fluxos de dados separados. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo do multiplexador ITU H.223, ou outros protocolos, tal como o protocolo de datagrama de usuário (UDP).
[0053] A FIG. 1 é meramente um exemplo, e as técnicas para eliminar ou reduzir erros de análise na análise de mensagens SEI descritas em outro local aqui (por exemplo, utilizando um elemento de sintaxe indicativo de uma série de mensagens SEI, codificadas em uma estrutura da mensagem SEI de aninhamento) podem aplicar-se a configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente incluem qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados podem ser recuperados a partir de uma memória local, transmitidos através de uma rede ou semelhantes. Um dispositivo de codificação pode codificar e armazenar dados na memória, e / ou um dispositivo de descodificação pode recuperar e decodificar dados da memória. Em muitos exemplos, a codificação e a decodificação são realizadas por dispositivos que não se comunicam uns com os outros, mas simplesmente codificam dados para a memória e / ou recuperam e decodificam dados da memória.
[0054] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um de uma variedade de circuitos de codificador adequados, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio não transitório de leitura por computador e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta invenção. Cada um dos codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, sendo que qualquer um deles pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo. Um dispositivo que inclui o codificador de vídeo 20 e / ou o decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador e / ou um dispositivo de comunicação sem fios, tal como um telefone celular.
[0055] O JCT-VC continua a trabalhar no desenvolvimento da norma HEVC. Os esforços de padronização HEVC são baseados em um modelo evolutivo de um dispositivo de codificação de vídeo conhecido como o Modelo de Teste do HEVC (HM). O HM pressupõe várias capacidades adicionais de dispositivos de codificação de vídeo em relação a dispositivos existentes de acordo, por exemplo, com ITU-T H.264 / AVC. Por exemplo, embora o H.264 forneça nove modos de codificação de predição intra, o HM pode fornecer até trinta e três modos de codificação de predição intra.
[0056] Em geral, o modelo de trabalho do HM descreve que um quadro ou imagem de vídeo pode ser dividida em uma sequência de treeblocks ou unidades de codificação maiores (LCU) que incluem amostras de luma e croma. Os dados de sintaxe dentro de um fluxo de bits podem definir um tamanho para a LCU, que é a maior unidade de codificação em termos do número de pixels. Uma fatia inclui uma série de treeblocks consecutivos em ordem de codificação. Um quadro ou imagem de vídeo pode ser dividida em uma ou mais fatias. Cada treeblock pode ser dividido em unidades de codificação (CUs) de acordo com uma quadtree. Em geral, uma estrutura de dados quadtree inclui um nó por CU, com um nó raiz correspondente ao treeblock. Se uma CU é dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós folha, cada um dos quais corresponde a uma das sub-CUs.
[0057] Cada nó da estrutura de dados quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó na quadtree pode incluir um sinalizador de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender de se a CU é dividida em sub-CUs. Se uma CU não for mais dividida, ela é referida como uma CU-folha. Nesta descrição, quatro sub-CUs de uma CU folha também serão referidas como CUs-folha, mesmo que não haja divisão explícita da CU-folha original. Por exemplo, se uma CU no tamanho 16x16 não for dividida ainda mais, as quatro sub- CUs 8x8 também serão referidas como CUs-folha, embora a CU 16x16 nunca tenha sido dividida.
[0058] Uma CU tem uma finalidade semelhante à de um macrobloco da norma H.264, exceto que uma CU não tem uma distinção de tamanho. Por exemplo, um treeblock pode ser dividido em quatro nós secundários (child nodes) (também referidos como sub-CUs), e cada nó secundário pode por sua vez ser um nó original (parente node) e ser dividido em outros quatro nós secundários. Um nó secundário final, não dividido, referido como um nó folha da quadtree, compreende um nó de codificação, também referido como uma CU-folha. Os dados de sintaxe associados a um fluxo de bits codificado podem definir um número máximo de vezes que um treeblock pode ser dividido, referido como uma profundidade de CU máxima, e também pode definir um tamanho mínimo dos nós de codificação. Consequentemente, um fluxo de bits pode também definir uma menor unidade de codificação (SCU). Esta descrição utiliza o termo “bloco” para se referir a qualquer um de uma CU, PU ou TU, no contexto de HEVC, ou estruturas de dados semelhantes no contexto de outras normas (por exemplo, macroblocos e seus sub-blocos em H.264 / AVC).
[0059] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e deve ser de forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do treeblock com um máximo de 64x64 pixels ou maior. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados a uma CU podem descrever, por exemplo, o particionamento da CU em uma ou mais PUs. Os modos de particionamento podem diferir entre se a CU é ignorada ou codificada no modo direto, codificado no modo de predição intra ou codificada no modo de predição inter. As PUs podem ser particionadas para serem de forma não quadrada. Os dados de sintaxe associados a uma CU podem também descrever, por exemplo, o particionamento da CU em uma ou mais TUs de acordo com uma quadtree. Uma TU pode ser de forma quadrada ou não quadrada (por exemplo, retangular).
[0060] A norma HEVC permite transformações de acordo com TUs, que podem ser diferentes para diferentes CUs. As TUs são tipicamente dimensionadas com base no tamanho de PUs dentro de uma determinada CU definida para uma LCU particionada, embora isso nem sempre seja o caso. As TUs são tipicamente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, as amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores usando uma estrutura quadtree conhecida como “quad tree residual” (RQT). Os nós folha do RQT podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixel associados às TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantizados.
[0061] Uma CU-folha pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa uma área espacial correspondente a toda ou uma parte da CU correspondente, e pode incluir dados para recuperar uma amostra de referência para a PU. Além disso, uma PU inclui dados relacionados com a predição. Por exemplo, quando a PU é codificada em modo intra, os dados para a PU podem ser incluídos em uma quadtree residual (RQT), que pode incluir dados que descrevem um modo de predição intra para uma TU correspondente à PU. Como outro exemplo, quando a PU é codificada em modo inter, a PU pode incluir dados que definem um ou mais vetores de movimento para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, uma precisão de um quarto de pixel ou uma precisão de um oitavo pixel), uma imagem de referência à qual o vetor de movimento aponta e / ou uma lista de imagens de referência (por exemplo, Lista 0, Lista 1 ou Lista C) para o vetor de movimento.
[0062] Uma CU folha tendo uma ou mais PUs pode também incluir uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas usando uma RQT (também referida como uma estrutura TU quadtree), como discutido acima. Por exemplo, um sinalizador de divisão pode indicar se uma CU folha é dividida em quatro unidades de transformada. Em seguida, cada unidade de transformada pode ser dividida em sub-TUs adicionais. Quando uma TU não é mais dividida, ela pode ser referida como uma TU-folha. Geralmente, para codificação intra, todas as TUs-folha pertencentes a uma CU-folha compartilham o mesmo modo de predição intra. Isto é, o mesmo modo de predição intra é geralmente aplicado para calcular os valores preditos para todas as TUs de uma CU-folha. Para a codificação intra, um codificador de vídeo pode calcular um valor residual para cada TU-folha utilizando o modo de predição intra, como uma diferença entre a parte da CU correspondente à TU e ao bloco original. Uma TU não é necessariamente limitada ao tamanho de uma PU. Assim, as TUs podem ser maiores ou menores do que uma PU. Para a codificação intra, uma PU pode ser colocada com uma TU- folha correspondente para a mesma CU. Em alguns exemplos, o tamanho máximo de uma TU-folha pode corresponder ao tamanho da CU-folha correspondente.
[0063] Além disso, as TUs de CUs-folha podem também ser associadas com estruturas de dados quadtree respectivas, referidas como quadtrees residuais (RQTs). Ou seja, uma CU-folha pode incluir uma quadtree indicando como a CU-folha é dividida em TUs. O nó raiz de uma quadtree TU geralmente corresponde a uma CU-folha, ao passo que o nó raiz de uma quadtree CU geralmente corresponde a um treeblock (ou LCU). TUs da RQT que não são divididas são referidas como TUs-folha. Em geral, esta invenção utiliza os termos CU e TU para referir-se à CU-folha e TU-folha, respectivamente, a menos que se indique o contrário.
[0064] Uma sequência de vídeo inclui tipicamente uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em outro lugar, que descreve uma série de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. O codificador de vídeo 20 opera tipicamente em blocos de vídeo dentro de fatias de vídeo individuais para codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variados e podem diferir em tamanho de acordo com um padrão de codificação específico.
[0065] Como exemplo, o HM suporta predição em vários tamanhos de PU. Supondo que o tamanho de uma CU particular é 2Nx2N, o HM suporta predição intra em tamanhos de PU de 2Nx2N ou NxN, e predição inter em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N ou NxN. O HM também suporta particionamento assimétrico para predição inter em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. No particionamento assimétrico, uma direção de uma CU não é particionada, enquanto a outra direção é particionada em 25% e 75%. A parte da CU correspondente à partição de 25% é indicada por um “n” seguido de uma indicação de “Up”, “Down”, “Left” ou “Right”. Assim, por exemplo, “2NxnU” se refere a uma CU 2Nx2N que é particionada horizontalmente com uma PU 2Nx0,5N na parte superior e uma PU 2Nx1,5N na parte inferior.
[0066] Nesta descrição, “NxN” e “N por N” podem ser utilizados de forma intercambiável para se referirem às dimensões de pixel de um bloco de vídeo em termos de dimensões verticais e horizontais, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Da mesma forma, um bloco NxN tem geralmente N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro não negativo. Os pixels em um bloco podem ser dispostos em linhas e colunas. Além disso, os blocos não necessariamente precisam ter o mesmo número de pixels na direção horizontal como na direção vertical. Por exemplo, os blocos podem compreender NxM pixels, onde M não é necessariamente igual a N.
[0067] Seguindo a codificação intrapreditiva ou interpreditiva usando as PUs de uma CU, o codificador de vídeo 20 pode calcular os dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe que descrevem um método ou modo de geração de dados de pixel preditivos no domínio espacial (também referido como o domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformada após a aplicação de uma transformada, por exemplo, uma transformada discreta de seno (DST), uma transformada discreta de cosseno (DCT), uma transformada de inteiros, uma transformada wavelet, ou uma transformada conceitualmente semelhante aos dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre pixels da imagem não codificada e valores de predição correspondentes às PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU, e depois transformar as TUs para produzir coeficientes de transformada para a CU.
[0068] Seguindo quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode executar a quantificação dos coeficientes de transformada. A quantização é um termo amplo destinado a ter seu significado mais amplo. Em uma forma de realização, a quantização se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizada para representar os coeficientes, proporcionando uma compressão adicional. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para baixo a um valor de m-bits durante a quantização, onde n é maior do que m.
[0069] Após a quantização, o codificador de vídeo 20 pode triar os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo os coeficientes de transformada quantizados. A triagem pode ser projetada para colocar coeficientes de energia superiores (e, portanto, menor frequência) na frente da matriz e para colocar coeficientes de energia inferiores (e, portanto, maior frequência) na parte de trás da matriz. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de triagem pré-definida para triar os coeficientes de transformada quantizados para produzir um vetor em série que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode executar uma triagem adaptativa. Depois de triar os coeficientes de transformada quantizados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação de entropia por particionamento de intervalo de probabilidade (PIPE) ou outra metodologia de codificação de entropia. O codificador de vídeo 20 também pode codificar por entropia elementos de sintaxe associados aos dados de vídeo codificados para utilização pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0070] Para executar CABAC, o codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode se referir, por exemplo, a se os valores vizinhos do símbolo são diferentes de zero ou não. Para executar o CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. As palavras de código em VLC podem ser construídas de modo que códigos relativamente mais curtos correspondam a símbolos mais prováveis, enquanto códigos mais longos correspondem a símbolos menos prováveis. Desta forma, a utilização de VLC pode conseguir um economia de bits, por exemplo, utilizando palavras de código de igual comprimento para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0071] O codificador de vídeo 20 pode ainda enviar dados de sintaxe, tais como dados de sintaxe baseados em blocos, dados de sintaxe baseados em quadros e dados de sintaxe baseados em GOP, para o decodificador de vídeo 30, por exemplo, em um cabeçalho de quadro, um cabeçalho de bloco, um cabeçalho de fatia ou um cabeçalho GOP. Os dados de sintaxe GOP podem descrever uma série de quadros no respectivo GOP, e os dados de sintaxe de quadro podem indicar um modo de codificação / predição utilizado para codificar o quadro correspondente.
CODIFICADOR DE VÍDEO
[0072] A FIG. 2A é um diagrama em blocos que ilustra um exemplo do codificador de vídeo 20 que pode implementar técnicas de acordo com aspectos descritos nesta invenção. O codificador de vídeo 20 pode ser configurado para processar uma única camada de um fluxo de bits de vídeo, tal como para HEVC. Além disso, o codificador de vídeo 20 pode ser configurado para executar qualquer uma ou todas as técnicas desta invenção, incluindo, mas não se limitando aos métodos de prevenção ou redução de erros de análise em mensagens SEI e processos relacionados descritos em maiores detalhes aqui em outro local. Como um exemplo, a unidade de predição intercamadas 66 (quando fornecida) pode ser configurada para executar qualquer uma ou todas as técnicas descritas nesta invenção. No entanto, aspectos desta invenção não são assim limitados. Em alguns exemplos, as técnicas descritas nesta invenção podem ser compartilhadas entre os vários componentes do codificador de vídeo 20. Em alguns exemplos, adicionalmente ou alternativamente, um processador (não ilustrado) pode ser configurado para executar qualquer uma ou todas as técnicas descritas neste documento.
[0073] Para fins de explicação, esta invenção descreve o codificador de vídeo 20 no contexto da codificação HEVC. No entanto, as técnicas desta invenção podem ser aplicáveis a outras normas ou métodos de codificação. O codificador de vídeo 20 da FIG. 2A ilustra uma única camada de um codec. No entanto, como será descrito adicionalmente com referência à FIG. 2B, alguns ou todos os codificadores de vídeo 20 podem ser duplicados para processamento de acordo com um codec de múltiplas camadas.
[0074] O codificador de vídeo 20 pode realizar a predição intra-, inter- e intercamadas (algumas vezes referida como codificação intra-, inter- ou intercamadas) de blocos de vídeo dentro de fatias de vídeo. A codificação intra depende da predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de um determinado quadro ou imagem de vídeo. A intercodificação baseia-se na predição temporal para reduzir ou remover a redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. A codificação intercamada baseia-se na predição baseada em vídeo dentro de uma camada(s) diferente(s) dentro da mesma sequência de codificação de vídeo. O modo intra (modo I) pode se referir a qualquer um dos vários modos de codificação baseados em espaço. Modos inter, como predição unidirecional (modo P) ou bipredição (modo B), podem se referir a qualquer um dos vários modos de codificação de base temporal.
[0075] Conforme ilustrado na FIG. 2A, o codificador de vídeo 20 recebe um bloco de vídeo corrente dentro de um quadro de vídeo a ser codificada. No exemplo da FIG. 2A, o codificador de vídeo 20 inclui a unidade de seleção de modo 40, memória de quadro de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54 e unidade de codificação de entropia 56. A unidade de seleção de modo 40, por sua vez, inclui unidade de compensação de movimento 44, unidade de estimativa de movimento 42, unidade de intrapredição 46, unidade de predição intercamadas 66 e unidade de partição 48. A memória de quadro de referência 64 pode incluir um buffer de imagem decodificado. O buffer de imagem decodificado é um termo amplo que tem o seu significado comum e, em algumas formas de realização, se refere a uma estrutura de dados gerida por codec de vídeo de quadros de referências.
[0076] Para reconstrução de blocos de vídeo, o codificador de vídeo 20 inclui também a unidade de quantização inversa 58, unidade de transformada inversa 60 e somador 62. Um filtro de desbloqueio (não mostrado na FIG. 2A) também pode ser incluído para filtrar limites de bloco para remover artefatos de bloqueio de vídeo reconstruído. Se desejado, o filtro de desbloqueio tipicamente filtra a saída do somador 62. Podem também ser utilizados filtros adicionais (em loop ou pós-loop) além do filtro de desbloqueio. Tais filtros não são mostrados por brevidade, mas, se desejado, podem filtrar a saída do somador 50 (como um filtro em loop).
[0077] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro de vídeo ou uma fatia a ser codificada. O quadro ou fatia pode ser dividida em vários blocos de vídeo. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 executam a codificação inter-preditiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para proporcionar predição temporal. A unidade intrapredição 46 pode alternativamente realizar a codificação intrapreditiva do bloco de vídeo recebido relativamente a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para proporcionar a predição espacial. O codificador de vídeo 20 pode executar várias passagens de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0078] Além disso, a unidade de partição 48 pode dividir blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de particionamento anteriores em passagens de codificação anteriores. Por exemplo, a unidade de partição 48 pode dividir inicialmente um quadro ou fatia em LCUs e dividir cada uma das LCUs em sub-CUs com base na análise da taxa de distorção (por exemplo, optimização da taxa de distorção, etc.). A unidade de seleção de modo 40 pode ainda produzir uma estrutura de dados quadtree indicativa de particionamento de uma LCU em sub-CUs. As CUs de nó-folha da quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0079] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, modo de predição intra, inter ou intercamadas, por exemplo, com base em resultados de erro, e proporcionar o bloco codificado intra, inter ou intercamadas resultante para o somador 50 para gerar dados de bloco residuais e para o somador 62 reconstruir o bloco codificado para utilização como um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, tais como vetores de movimento, indicadores de modo intra, informação de partição e outras informações de sintaxe similares, para a unidade de codificação de entropia 56.
[0080] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro ou imagem de vídeo corrente relativamente a um bloco preditivo dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco corrente sendo codificado dentro do quadro corrente (ou outra unidade codificada). Um bloco preditivo é um bloco considerado como intimamente correspondente ao bloco a ser codificado, em termos de diferença de pixels, o que pode ser determinado pela soma da diferença absoluta (SAD), soma da diferença quadrática (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel de subinteiros de imagens de referência armazenadas na memória de quadro de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de um quarto de posições de pixel, um oitavo de posições de pixel ou outras posições de pixel fracionárias da imagem de referência. Por conseguinte, a unidade de estimativa de movimento 42 pode realizar uma busca de movimento em relação às posições de pixel inteiras e posições de pixel fracionadas e produzir um vetor de movimento com precisão de pixel fracionada.
[0081] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de quadro de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e unidade de compensação de movimento 44.
[0082] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver a obtenção ou geração do bloco preditivo com base no vetor de movimento determinado pela unidade de estimativa de movimento 42. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Ao receber o vector de movimento para a PU do bloco de vídeo corrente, a unidade de compensação de movimento 44 pode localizar o bloco preditivo ao qual o vector de movimento aponta em uma das listas de imagens de referência. O somador 50 forma um bloco de vídeo residual subtraindo os valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo corrente sendo codificado, formando valores de diferença de pixel, como discutido abaixo. Em algumas formas de realização, a unidade de estimativa de movimento 42 pode executar a estimativa de movimento em relação a componentes de luminância e a unidade de compensação de movimento 44 pode utilizar vetores de movimento calculados com base nos componentes de luminância para componentes de crominância e componentes de luminância. A unidade de seleção de modo 40 pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para utilização pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0083] A unidade de predição intra 46 pode intra- predizer ou calcular um bloco corrente, como uma alternativa à interpredição realizada pela unidade de estimativa de movimento 42 e pela unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de predição intra 46 pode determinar um modo de predição intra a usar para codificar um bloco corrente. Em alguns exemplos, a unidade de predição intra 46 pode codificar um bloco corrente utilizando vários modos de predição intra (por exemplo, durante passagens de codificação separadas) e a unidade de predição intra 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de predição intra apropriado para uso a partir dos modos testados.
[0084] Por exemplo, a unidade de predição intra 46 pode calcular os valores da taxa de distorção utilizando uma análise da taxa de distorção para os vários modos de predição intra testados, e selecionar o modo de predição intra com as melhores características da taxa de distorção entre os modos testados. A análise da taxa de distorção determina geralmente uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original, não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits, (isto é, uma série de bits) usado para produzir o bloco codificado. A unidade de predição intra 46 pode calcular razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de predição intra exibe o melhor valor da taxa de distorção para o bloco.
[0085] Depois de selecionar um modo de predição intra para um bloco, a unidade de predição intra 46 pode fornecer informação indicativa do modo de predição intra selecionado para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar a informação indicando o modo de predição intra. O codificador de vídeo 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, que podem incluir uma pluralidade de tabelas de índices do modo de predição intra e uma pluralidade de tabelas de índices do modos de predição intra modificados (também referidas como tabelas de mapeamento de palavras de código), definições de contextos de codificação para vários blocos, e indicações de um modo de predição intra mais provável, uma tabela de índices do modo de predição intra e uma tabela de índices do modo de predição intra modificados a utilizar para cada um dos contextos.
[0086] O codificador de vídeo 20 pode incluir uma unidade de predição intercamadas 66. A unidade de predição intercamadas 66 é configurada para predizer um bloco corrente (por exemplo, um bloco corrente na camada de realce) usando uma ou mais camadas diferentes que estão disponíveis em SVC (por exemplo, uma camada de base ou de referência). Essa predição pode ser referida como predição intercamadas. A unidade de predição intercamadas 66 utiliza métodos de predição para reduzir a redundância intercamadas, melhorando assim a eficiência de codificação e reduzindo os requisitos de recursos computacionais. Alguns exemplos de predição intercamadas incluem predição intra intercamadas, predição de movimento intercamadas e predição residual intercamadas. A predição intra intercamadas usa a reconstrução de blocos colocalizados na camada de base para predizer o bloco corrente na camada de realce. A predição de movimento intercamadas usa informações de movimento da camada de base para predizer o movimento na camada de realce. A predição residual intercamadas usa o resíduo da camada de base para predizer o resíduo da camada de realce. Quando as camadas de base e de realce têm resoluções espaciais diferentes, a escala do vector de movimento espacial e / ou o mapeamento da posição intercamadas utilizando uma função de escala temporal pode ser realizado pela unidade de predição intercamadas 66, como descrito em maiores detalhes abaixo.
[0087] O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo os dados de predição da unidade de seleção de modo 40 do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que realizam esta operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformada residual. A unidade de processamento de transformada 52 pode realizar outras transformadas que são conceitualmente semelhantes à DCT. Por exemplo, podem ser utilizadas transformadas discretas de seno (DST), transformadas de wavelet, transformações de inteiros, transformações de sub-bandas ou outros tipos de transformadas.
[0088] A unidade de processamento de transformada 52 pode aplicar a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter a informação residual de um domínio de valor de pixel em um domínio de transformada, tal como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantifica os coeficientes de transformada para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode então realizar uma triagem da matriz incluindo os coeficientes de transformada quantizados. Alternativamente, a unidade de codificação de entropia 56 pode executar a triagem.
[0089] Após a quantização, a unidade de codificação de entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação de entropia 56 pode executar codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação de entropia por particionamento do intervalo de probabilidade (PIPE) ou outra técnica de codificação de entropia. No caso da codificação de entropia baseada no contexto, o contexto pode ser baseado em blocos vizinhos. Após a codificação de entropia pela unidade de codificação de entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, decodificador de vídeo 30) ou arquivado para posterior transmissão ou recuperação.
[0090] A unidade de quantização inversa 58 e a unidade de transformada inversa 60 aplicam quantização inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel (por exemplo, para uso posterior como um bloco de referência). A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando o bloco residual a um bloco preditivo de um dos quadros da memória de quadro de referência 64. A unidade de compensação de movimento 44 pode também aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel subinteiros para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado por movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de quadro de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um bloco de vídeo subsequente.
CODIFICADOR DE VÍDEO DE MÚLTIPLAS CAMADAS
[0091] A FIG. 2B é um diagrama em blocos que ilustra um exemplo de um codificador de vídeo de múltiplas camadas 21 (também referido simplesmente como codificador de vídeo 21) que pode implementar técnicas de acordo com aspectos descritos nesta invenção. O codificador de vídeo 21 pode ser configurado para processar quadros de vídeo de camadas múltiplas, tal como para SHVC, 3D-HEVC e / ou MV- HEVC. Além disso, o codificador de vídeo 21 pode ser configurado para executar qualquer ou todas as técnicas desta invenção, incluindo, mas não se limitando aos métodos para eliminar ou reduzir erros de análise na análise de mensagens SEI descritas aqui em outro local (por exemplo, codificando um elemento de sintaxe indicativo de uma série de mensagens SEI em uma estrutura da mensagem SEI de aninhamento).
[0092] O codificador de vídeo 21 inclui um codificador de vídeo 20A e um codificador de vídeo 20B, cada um dos quais pode ser configurado como codificador de vídeo 20 da FIG. 2A e pode desempenhar as funções descritas acima em relação ao codificador de vídeo 20. Além disso, como indicado pela reutilização de números de referência, os codificadores de vídeo 20A e 20B podem incluir pelo menos alguns dos mesmos ou similares sistemas e subsistemas incluídos no codificador de vídeo 20. Embora o codificador de vídeo 21 seja ilustrado como incluindo dois codificadores de vídeo 20A e 20B, o codificador de vídeo 21 não é assim limitado e pode incluir qualquer número de camadas de codificador de vídeo. Em algumas formas de realização, o codificador de vídeo 21 pode incluir um codificador de vídeo 20 para cada imagem ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou codificada por um codificador de vídeo que inclui cinco camadas de codificador. Em algumas formas de realização, o codificador de vídeo 21 pode incluir mais camadas de codificador do que estruturas em uma unidade de acesso. Em alguns desses casos, algumas das camadas de codificador de vídeo podem estar inativas durante o processamento de algumas unidades de acesso.
[0093] Além dos codificadores de vídeo 20A e 20B, o codificador de vídeo 21 pode incluir uma unidade de reamostragem 90. A unidade de reamostragem 90 pode, em alguns casos, aumentar a resolução de uma camada de base de um quadro de vídeo recebido para, por exemplo, criar uma camada de realce. A unidade de reamostragem 90 pode aumentar a resolução de informação particular associada com a camada de base recebida de um quadro, mas não outras informações. Por exemplo, a unidade de reamostragem 90 pode aumentar a resolução do tamanho espacial ou do número de pixels da camada de base, mas o número de fatias ou a contagem da ordem de imagens podem 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 seleção de modo 40 pode executar o aumento da resolução. Em algumas formas de realização, 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 cumprir um conjunto de regras de limite de fatia e / ou regras de varredura raster. Embora principalmente descrita como aumento da resolução de uma camada de base, ou uma camada inferior em uma unidade de acesso, em alguns casos, a unidade de reamostragem 90 pode diminuir a resolução de uma camada. Por exemplo, se a largura de banda é reduzida durante o fluxo contínuo de um vídeo, um quadro pode ter a resolução diminuída, em vez de aumentada. A unidade de reamostragem 90 pode ainda ser configurada para realizar também operações de recorte (cropping) e / ou ajuste de imagem (padding).
[0094] A unidade de reamostragem 90 pode ser configurada para receber uma imagem ou quadro (ou informação de imagem associada com a imagem) a partir do buffer 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). Esta imagem com resolução aumentada pode então ser proporcionada à unidade de seleção de modo 40 de um codificador de camada superior (por exemplo, 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 é removido em uma camada 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 FIG. 2B.
[0095] Em alguns casos, a unidade de reamostragem 90 pode ser omitida ou contornada. Nesses casos, a imagem a partir do buffer de imagem decodificada 64 do codificador de vídeo 20A pode ser proporcionada diretamente, ou pelo menos sem ser fornecida à unidade de reamostragem 90, à unidade de seleção de modo 40 do codificador de vídeo 20B. Por exemplo, se os dados de vídeo fornecidos ao codificador de vídeo 20B e à imagem de referência a partir do buffer de imagem decodificada 64 do codificador de vídeo 20A são do mesmo tamanho ou resolução, a imagem de referência pode ser fornecida ao codificador de vídeo 20B sem qualquer reamostragem.
[0096] Em algumas formas de realização, o codificador de vídeo 21 diminui a resolução de dados de vídeo a serem fornecidos ao codificador de camada inferior utilizando a unidade de diminuição de resolução 94 antes de fornecer os dados de vídeo ao codificador de vídeo 20A. Alternativamente, a unidade de diminuição de resolução 94 pode ser uma unidade de reamostragem 90 capaz de aumentar a resolução ou diminuir a resolução dos dados de vídeo. Ainda em outras formas de realização, a unidade de diminuição de resolução 94 pode ser omitida.
[0097] Conforme ilustrado na FIG. 2B, o codificador de vídeo 21 pode ainda incluir multiplexor 98, ou mux. O mux 98 pode produzir um fluxo de bits combinado a partir do codificador de vídeo 21. O fluxo de bits combinado pode ser criado tirando um fluxo de bits de cada um dos codificadores de vídeo 20A e 20B e alternando qual fluxo de bits é emitido em um dado momento. Ao passo que, em alguns casos, os bits dos dois fluxos de bits (ou mais no caso de mais de duas camadas de codificador de vídeo) podem ser alternados um bit de cada vez, em muitos casos os fluxos de bits são combinados de forma diferente. Por exemplo, o fluxo de bits emitido pode ser criado alternando o fluxo de bits selecionado um bloco de cada vez. Em outro exemplo, o fluxo de bits emitido pode ser criado emitindo uma razão 1:1 de blocos 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 formas de realização, o fluxo emitido do mux 98 pode ser pré- programado. Em outras formas de realização, o mux 98 pode combinar os fluxos de bits dos codificadores de vídeo 20A e 20B com base em um sinal de controle recebido de um sistema externo ao codificador de vídeo 21, tal como a partir de um processador no dispositivo de fonte 12. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um vídeo da fonte de vídeo 18, com base em uma largura de banda do canal 16, com base em uma assinatura associada a um usuário (por exemplo, uma assinatura paga contra uma assinatura gratuita) ou com base em qualquer outro fator para determinar uma resolução emitida desejada do codificador de vídeo 21.
DECODIFICADOR DE VÍDEO
[0098] A FIG. 3A é um diagrama em blocos que ilustra um exemplo do decodificador de vídeo 30 que pode implementar técnicas de acordo com aspectos descritos nesta invenção. O decodificador de vídeo 30 pode ser configurado para processar uma única camada de um fluxo de bits de vídeo, tal como para HEVC. Além disso, o decodificador de vídeo 30 pode ser configurado para executar qualquer uma ou todas as técnicas desta invenção, incluindo, mas não se limitando aos métodos de eliminação ou redução de erros de análise na análise de mensagens SEI descritas aqui em outra parte. Como um exemplo, a unidade de predição intercamadas 75 pode ser configurada para executar qualquer uma ou todas as técnicas descritas nesta invenção, incluindo mas não se limitando aos métodos para eliminar ou reduzir erros de análise na análise de mensagens SEI descritas aqui em outra parte (por exemplo, utilizando um elemento de sintaxe, indicativo de uma série de mensagens SEI, dentro de uma mensagem SEI de aninhamento). No entanto, aspectos desta invenção não são assim limitados. Em alguns exemplos, estas técnicas podem ser compartilhadas entre os vários componentes do decodificador de vídeo 30. Em alguns exemplos, adicionalmente ou alternativamente, um processador (não ilustrado) pode ser configurado para executar qualquer uma ou todas estas.
[0099] Para fins de explicação, esta invenção descreve o decodificador de vídeo 30 no contexto da codificação HEVC. No entanto, as técnicas desta invenção, incluindo, mas não limitadas aos métodos para eliminar ou reduzir os erros de análise na análise de mensagens SEI descritas em outra parte aqui, podem ser aplicáveis a outras normas ou métodos de codificação. O decodificador de vídeo 30 da FIG. 3A ilustra uma única camada de um codec. No entanto, como será descrito adicionalmente com referência à FIG. 3B, alguns ou todos os decodificadores de vídeo 30 podem ser duplicados para processamento de acordo com um codec de múltiplas camadas.
[0100] No exemplo da FIG. 3A, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 70, unidade de compensação de movimento 72, unidade de predição intra 74, unidade de predição intercamadas 75, unidade de quantização inversa 76, unidade de transformada inversa 78, memória de quadro de referência 82 e somador 80. Em algumas formas de realização, a unidade de compensação de movimento 72 e / ou a unidade de predição intra 74 pode ser configurada para realizar a predição intercamadas, caso em que a unidade de predição intercamadas 75 pode ser omitida. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 20 na FIG. 2A. A unidade de compensação de movimento 72 pode gerar dados de predição com base em vetores de movimento recebidos da unidade de decodificação de entropia 70, enquanto a unidade de predição intra 74 pode gerar dados de predição com base em indicadores de modo de predição intra recebidos da unidade de decodificação de entropia 70. A memória de quadro de referência 82 pode incluir um buffer de imagem decodificada. Buffer de imagem decodificada é um termo amplo que tem o seu significado comum e, em algumas formas de realização, se refere a uma estrutura de dados gerida por codec de quadros de referências.
[0101] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados do codificador de vídeo 20. A unidade de decodificação de entropia 70 do decodificador de vídeo decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores de modo de predição intra, e outros elementos de sintaxe. A unidade de decodificação de entropia 70 encaminha os vetores de movimento para e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e / ou no nível de bloco de vídeo.
[0102] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de predição intra 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo corrente com base em um modo de predição intra sinalizado e dados de blocos previamente decodificados do quadro ou imagem corrente. Quando o quadro de vídeo é codificado como uma fatia intercodificada (por exemplo, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia de vídeo corrente com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, Lista 0 e Lista 1, utilizando técnicas de construção padrão baseadas em imagens de referência armazenadas na memória de quadro de referência 82.
[0103] A unidade de compensação de movimento 72 determina a informação de predição para um bloco de vídeo da fatia de vídeo corrente analisando os vetores de movimento e outros elementos de sintaxe, e utiliza a informação de predição para produzir os blocos previtivos para o bloco de vídeo corrente sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, Fatia B, fatia P ou fatia GPB), informação de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, estado de predição inter para cada bloco de vídeo intercodificado da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo corrente.
[0104] A unidade de compensação de movimento 72 também pode realizar a interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode usar filtros de interpolação como usados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para pixels de subinteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[0105] O decodificador de vídeo 30 também pode incluir uma unidade de predição intercamadas 75. A unidade de predição intercamadas 75 é configurada para predizer um bloco corrente (por exemplo, um bloco corrente na camada de realce) utilizando uma ou mais camadas diferentes que estão disponíveis em SVC (por exemplo, uma camada de base ou de referência). Tal previsão pode ser referida como predição intercamadas. A unidade de predição intercamadas 75 utiliza métodos de predição para reduzir a redundância intercamadas, melhorando assim a eficiência de codificação e reduzindo os requisitos de recursos computacionais. Alguns exemplos de predição intercamadas incluem predição intra intercamada, previsão de movimento intercamadas e predição residual intercamadas. A predição intra intercamadas usa a reconstrução de blocos co-localizados na camada de base para predizer o bloco corrente na camada de realce. A previsão de movimento intercamadas usa informações de movimento da camada base para predizer o movimento na camada de realce. A predição residual intercamadas usa o resíduo da camada de base para predizer o resíduo da camada de realce. Quando as camadas de base e de realce têm resoluções espaciais diferentes, a escala do vetor de movimento espacial e / ou o mapeamento de posição intercamadas pode ser realizado pela unidade de predição intercamadas 75 utilizando uma função de escala temporal, como descrito em maiores detalhes abaixo.
[0106] A unidade de quantização inversa 76 quantifica inversamente (por exemplo, desquantifica) os coeficientes de transformada quantizados proporcionados no fluxo de bits e decodificados pela unidade de decodificação de entropia 70. O processo de quantização inversa pode incluir a utilização de um parâmetro de quantização QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.
[0107] A unidade de transformada inversa 78 aplica uma transformada inversa (por exemplo, uma DCT inversa, uma DST inversa, uma transformada de inteiros inversa ou um processo de transformada inversa conceitualmente semelhante) aos coeficientes de transformada para produzir blocos residuais no domínio de pixel.
[0108] Depois que a unidade de compensação de movimento 72 gera o bloco preditivo para o bloco de vídeo corrente com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado somando os blocos residuais da unidade de transformada inversa 78 com os correspondentes blocos preditivos gerados pela unidade de compensação de movimento 72. O somador 90 representa o componente ou componentes que realizam esta operação de soma. Se desejado, um filtro de desbloqueio pode também ser aplicado para filtrar os blocos decodificados de modo a remover artefatos de bloqueio. Outros filtros em loop (no loop de codificação ou após o loop de codificação) também podem ser usados para suavizar transições de pixel, ou de outro modo melhorar a qualidade de vídeo. Os blocos de vídeo decodificados em um dado quadro ou imagem são então armazenados na memória de quadro de referência 82, que armazena imagens de referência utilizadas para compensação de movimento subsequente. A memória de quadro de referência 82 armazena também vídeo decodificado para apresentação posterior em um dispositivo de visualização, tal como o dispositivo de visualização 32 da FIG. 1.
DECODIFICADOR DE VÍDEO DE MÚLTIPLAS CAMADAS
[0109] A FIG. 3B é um diagrama em blocos que ilustra um exemplo de um decodificador de vídeo de múltiplas camadas 31 (também referido simplesmente como decodificador de vídeo 31) que pode implementar técnicas de acordo com aspectos descritos nesta invenção. O decodificador de vídeo 31 pode ser configurado para processar quadros de vídeo de múltiplas camadas, tal como para SHVC, 3D-HEVC e / ou MV-HEVC. Além disso, o decodificador de vídeo 31 pode ser configurado para executar qualquer uma ou todas as técnicas desta invenção.
[0110] O decodificador de vídeo 31 inclui um decodificador de vídeo 30A e um decodificador de vídeo 30B, cada um dos quais pode ser configurado como decodificador de vídeo 30 da FIG. 3A e pode desempenhar as funções descritas acima em relação ao decodificador de vídeo 30. Além disso, como indicado pela reutilização dos números de referência, os decodificadores de vídeo 30A e 30B podem incluir pelo menos alguns dos mesmos ou similares sistemas e subsistemas incluídos no decodificador de vídeo 30. Embora o decodificador de vídeo 31 seja ilustrado como incluindo dois decodificadores de vídeo 30A e 30B, o decodificador de vídeo 31 não está limitado como tal e pode incluir qualquer número de camadas de decodificador de vídeo. Em algumas formas de realização, o decodificador de vídeo 31 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 formas de realização, o decodificador de vídeo 31 pode incluir mais camadas de decodificador do que quadros em uma unidade de acesso. Em alguns desses casos, algumas das camadas de decodificador de vídeo podem estar inativas durante o processamento de algumas unidades de acesso.
[0111] Além dos decodificadores de vídeo 30A e 30B, o decodificador de vídeo 31 pode incluir uma unidade de aumento de resolução 92. Em algumas formas de realização, a unidade de aumento de resolução 92 pode aumentar a resolução de uma camada de base de um quadro de vídeo recebido para criar uma camada realçada a ser adicionada à lista de imagens de referência para o quadro ou unidade de acesso. Esta camada realçada pode ser armazenada na memória de quadro de referência 82 (por exemplo, em seu buffer de imagem decodificada, etc.). Em algumas formas de realização, a unidade de aumento de resolução 92 pode incluir algumas ou todas as formas de realização descritas com respeito à unidade de reamostragem 90 da FIG. 2B. Em algumas formas de realização, 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 cumprir um conjunto de regras de limite de fatia e / ou regras de varredura raster. 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 um quadro de vídeo recebido.
[0112] A unidade de aumento de resolução 92 pode ser configurada para receber uma imagem ou quadro (ou informação de imagem associada com a imagem) a partir do buffer de imagem decodificada 82 do decodificador de camada inferior (por exemplo, o decodificador de vídeo 30A) e para aumentar a resolução da imagem (ou a informação da imagem recebida). Esta imagem com aumento de resolução pode então ser proporcionada à unidade de seleção de modo 71 de um descodificador de camada superior (por exemplo, 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 é removido em uma camada do decodificador de camada inferior. Em outros casos, pode haver um ou mais decodificadores de camada superior entre o decodificador de camada 0 e o decodificador de camada 1 da FIG. 3B.
[0113] Em alguns casos, a unidade de aumento de resolução 92 pode ser omitida ou contornada. Em tais casos, a imagem do buffer de imagem decodificada 82 do decodificador de vídeo 30A pode ser proporcionada diretamente, ou pelo menos sem ser fornecida à unidade de aumento de resolução 92, para a unidade de seleção de modo 71 do decodificador de vídeo 30B. Por exemplo, se os dados de vídeo fornecidos ao decodificador de vídeo 30B e a imagem de referência do buffer de imagem decodificada 82 do decodificador de vídeo 30A forem do mesmo tamanho ou resolução, a imagem de referência pode ser fornecida ao decodificador de vídeo 30B sem aumento de resolução. Além disso, em algumas formas de realização, 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 buffer de imagem decodificada 82 do decodificador de vídeo 30A.
[0114] Conforme ilustrado na FIG. 3B, o decodificador de vídeo 31 pode ainda incluir um demultiplexador 99, ou demux. O demux 99 pode dividir um fluxo de bits de vídeo codificado em múltiplos fluxos de bits, com cada saída de fluxo de bits pelo demux 99 sendo proporcionada a um decodificador de vídeo diferente 30A e 30B. Os múltiplos fluxos de bits podem ser criados recebendo um fluxo de bits e cada um dos decodificadores de vídeo 30A e 30B recebe uma parte do fluxo de bits em um dado momento. Embora em alguns casos os bits do fluxo de bits recebido no demux 99 possam ser alternados um bit de cada vez entre cada um dos decodificadores de vídeo (por exemplo, decodificadores de vídeo 30A e 30B no exemplo da FIG. 3B), em muitos casos o fluxo de bits é dividido de forma diferente. Por exemplo, o fluxo de bits pode ser dividido alternando qual decodificador de vídeo recebe o fluxo de bits um bloco de cada vez. Em outro exemplo, o fluxo de bits pode ser dividido em uma razão de blocos diferente de 1:1 para cada um dos decodificadores de vídeo 30A e 30B. Por exemplo, podem ser proporcionados dois blocos ao decodificador de vídeo 30B para cada bloco proporcionado ao decodificador de vídeo 30A. Em algumas formas de realização, a divisão do fluxo de bits pelo demux 99 pode ser pré-programada. Em outras formas de realização, o demux 99 pode dividir o fluxo de bits com base em um sinal de controle recebido de um sistema externo ao decodificador de vídeo 31, tal como a partir de um processador no dispositivo de destino 14. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um vídeo a partir da interface de entrada 28, com base numa largura de banda do canal 16, com base em uma assinatura associada a um usuário (por exemplo, uma subscrição paga versus uma assinatura gratuita) ou com base em qualquer outro fator para determinar uma resolução que pode ser obtida pelo decodificador de vídeo 31.
MENSAGENS DE INFORMAÇÃO SUPLEMENTAR DO REALCE (SEI)
[0115] De acordo com a norma HEVC, os dados de vídeo codificados estão organizados em uma sequência de unidades de dados referidas como unidades da Camada de Abstração de Rede (NAL), que são formadas em unidades de acesso. Uma unidade de acesso compreende um conjunto de uma ou mais unidades NAL que coletivamente representam imagens que correspondem ao mesmo tempo de emissão. A uma ou mais unidades NAL em uma unidade de acesso compreendem um conjunto de uma ou mais unidades NAL da camada de codificação de vídeo (VCL) que compõem coletivamente as imagens que correspondem ao mesmo tempo de emissão, e zero ou mais unidades NAL não VCL (isto é, unidades NAL que não são unidades NAL VCL). As unidades NAL VCL portam segmentos de fatias de dados de vídeo codificados. Normalmente, as unidades NAL não-VCL contêm informações de controle. Um tipo de unidade NAL não VCL que pode estar presente em uma unidade de acesso é uma unidade NAL da Informação Suplementar do Realce (SEI), que contém dados suplementares (por exemplo, informação de temporização) que podem aumentar a usabilidade de, mas não são geralmente necessários para, um sinal de vídeo decodificado. As unidades NAL SEI contêm mensagens SEI com a estrutura de mensagem SEI descrita abaixo. As mensagens SEI podem conter vários tipos de metadados associados aos dados de vídeo codificados que podem fornecer informação associadas, por exemplo, à temporização de emissão de imagem, exibição, interpretação do espaço de cores e / ou embalagem de enquadramento.
[0116] Uma unidade NAL SEI pode compreender uma ou mais estruturas de mensagem SEI. Uma estrutura global de uma unidade NAL SEI é ilustrada na FIG. 4, de acordo com um exemplo. Foram omitidas partes da estrutura que não são úteis para a compreensão das técnicas divulgadas. Tais omissões são identificadas na FIG. 4 por uma elipse.
[0117] A unidade NAL SEI 410 compreende uma RBSP, por exemplo, estrutura sei_rbsp() 420 (a estrutura sei_rbsp() 420 também é referida como RBSP SEI 420). Por sua vez, a estrutura sei_rbsp() 420 pode compreender uma ou mais estruturas sei_message() 430 (ilustradas como duas estruturas 430A e 430B). Deve ser entendido que, embora duas estruturas sei_message() 430A e 430B sejam ilustradas, sei_rbsp() 420 pode compreender qualquer número de estruturas sei_message() 430, incluindo uma estrutura sei_message() 430 ou três ou mais estruturas sei_message() 430.
[0118] Cada estrutura sei_message() 430 compreende uma estrutura sei_payload 440 (ilustrada como 440A e 440B para estruturas sei_message() 430A e 430B, respectivamente). A estrutura de sintaxe das estruturas sei_message() 430 está contida em estruturas sei_payload 440 e é representada por estruturas xxx(payloadSize) 442 (ilustradas como 442A e 442B para estruturas sei_payload 440A e 440B, respectivamente) na FIG. 4. Opcionalmente, cada estrutura sei_payload 440 pode também compreender uma extensão de carga útil 444 (ilustrada como 444A e 444B para estruturas sei_payload 440A e 440B, respectivamente), que pode ser utilizada para extensibilidade futura de estruturas SEI_message() 430.
[0119] Algumas estruturas de mensagem SEI são estruturas de mensagem SEI de aninhamento. As estruturas de mensagem SEI de aninhamento podem conter uma ou mais mensagens SEI. Por exemplo, a estrutura sei_message() 430A pode compreender várias mensagens SEI aninhadas na estrutura sei_message() 430A. Cada mensagem SEI contida em uma estrutura da mensagem SEI de aninhamento é aplicável a um conjunto de camadas, pontos de operação, conjuntos de camadas de saída e / ou partições de fluxo de bits, conforme especificado pela estrutura de mensagens SEI de aninhamento.
[0120] A prática convencional, por exemplo, o esboço atual da especificação HEVC, HEVC Versão 1, especifica um tipo de estrutura da mensagem SEI de aninhamento: estruturas de mensagem SEI de aninhamento escalável. Além disso, os esboços correntes das extensões de várias camadas (ou multivista) especificam outro tipo de estrutura da mensagem SEI de aninhamento: estruturas de mensagem SEI de aninhamento de partição de fluxo de bits. Os termos “estrutura da mensagem SEI de aninhamento” e “estrutura SEI de aninhamento”, em forma singular ou plural, são aqui utilizados para se referirem coletivamente à estrutura da mensagem SEI de aninhamento escalável e à estrutura da mensagem SEI de aninhamento de partição de fluxo de bits.
[0121] A estrutura de sintaxe corrente (isto é, convencional) para a estrutura da mensagem SEI de aninhamento escalável é ilustrada na tabela a seguir. Foram omitidas partes da estrutura de sintaxe que não são úteis para a compreensão das técnicas divulgadas. Essas omissões são identificadas abaixo por uma elipse.
[0122] O elemento de sintaxe corrente da estrutura da mensagem SEI de aninhamento de partição de fluxo de bits é ilustrado na tabela a seguir.
[0123] Conforme ilustrado acima, as estruturas de sintaxe para ambas a estrutura da mensagem SEI de aninhamento escalável e a estrutura da mensagem SEI de aninhamento de partição de fluxo de bits compreendem a sintaxe do-while de “do sei_message()while(more_rbsp_data())”.
[0124] Embora esta sintaxe do- while permita que uma ou mais mensagens SEI sejam aninhadas na estrutura da mensagem SEI de aninhamento, a sintaxe do-while destas estruturas de sintaxe convencionais tem inconvenientes significativos. Especificamente, a função “more_rbsp_data ()”, que é definida como a condição da sintaxe do-while, retorna um valor de “1” (ou seja, VERDADEIRO) até a posição de byte corrente na RBSP SEI, compreendendo a mensagem SEI de aninhamento, é igual à posição do último (isto é, menos significante, à direita) bit com um valor de 1 nessa RBSP SEI particular (por exemplo, RBSP SEI 420 da Figura 4). Este último bit com um valor de 1 na sintaxe RBSP SEI corresponde ao primeiro bit na estrutura de sintaxe rbsp_trailing_bits() 450 com um valor de 1. Conforme ilustrado na FIG. 4, a estrutura de sintaxe rbsp_trailing_bits() 450 está presente no final da RBSP SEI 420. Consequentemente, se uma unidade NAL SEI compreende uma estrutura da mensagem SEI de aninhamento, e a estrutura da mensagem SEI de aninhamento precede outros dados (ou seja, dados diferentes dos bits à direita da RBSP) dentro da unidade NAL SEI, a sintaxe do-while da estrutura da mensagem SEI de aninhamento processará outros dados usando a função sei_message(), resultando em um erro de análise da unidade NAL SEI.
[0125] Por exemplo, com referência à FIG. 4, se a estrutura sei_payload 440A compreende uma estrutura da mensagem SEI de aninhamento como a estrutura 442A, um decodificador, com base na sintaxe do-while da mensagem SEI aninhada, processará a estrutura sei_rbsp 420 até atingir os bits à direita da RBSP (isto é, rbsp_trailing_bits() 450) no final da estrutura sei_rbsp 420. Consequentemente, a sintaxe do-while da estrutura 442A processará a extensão de carga útil da estrutura sei_payload 440A, se for o caso, bem como a estrutura sei_message 430B, de acordo com a função “sei_message )”, resultando em um erro de análise.
[0126] Assim, um fluxo de bits não pode ser corretamente analisado - e, portanto, é um fluxo de bits não conforme - se o fluxo de bits incluir uma unidade NAL SEI que compreende uma estrutura da mensagem SEI de aninhamento (por exemplo, ou uma estrutura da mensagem SEI de aninhamento escalável ou uma estrutura da mensagem SEI de aninhamento de partição de fluxo de bits) de acordo com os esquemas correntes e se alguma das seguintes condições for verdadeira:
[0127] (1) a unidade NAL SEI compreende qualquer mensagem SEI a seguir, em ordem de decodificação, a estrutura sei_payload contendo a estrutura da mensagem SEI de aninhamento; ou
[0128] (2) a estrutura sei_payload contendo a estrutura da mensagem SEI de aninhamento compreende dados de extensão de carga útil (por exemplo, qualquer um dos seguintes elementos de sintaxe: reserved_payload_extension_data, payload_bit_equal_to_one ou payload_bit_equal_to_zero).
[0129] Como resultado destas desvantagens na estrutura de sintaxe corrente das estruturas de mensagem SEI de aninhamento (por exemplo, estruturas de mensagem SEI de aninhamento escalável e / ou estruturas de mensagem SEI de aninhamento de partição de fluxo de bits), as estruturas da mensagem SEI de aninhamento não podem ser estendidas utilizando o mecanismo de extensão fornecido na estrutura sei_payload. Consequentemente, serão agora discutidos métodos que abordam estas desvantagens na estrutura de sintaxe corrente das estruturas de mensagem SEI de aninhamento. Várias características destas respectivas formas de realização exemplificativas podem ser aplicadas independentemente ou em combinação uma com a outra.
[0130] Em várias formas de realização da presente invenção, a série de sei_messages() contidas em uma estrutura da mensagem SEI de aninhamento pode ser sinalizada por um codificador de vídeo (por exemplo, codificador de vídeo 20 do codificador de vídeo 21) e recebido por um decodificador de vídeo (por exemplo, o decodificador de vídeo 30 ou o decodificador de vídeo 31), e a estrutura de sintaxe da estrutura da mensagem SEI de aninhamento pode ser analisada, por exemplo, por um decodificador de vídeo, com base nesse número. Por exemplo, uma ou ambas as estruturas de sintaxe da estrutura da mensagem SEI de aninhamento escalável e a estrutura da mensagem SEI de aninhamento de partição de fluxo de bits podem ser modificadas substituindo a sintaxe do-while, que chama a função “sei_message()”, desde que a função “more_rbsp_data()” retorne um valor de 1 como descrito acima, com sintaxe que só chama (ou seja, instrui a execução ou desempenho de) a função “sei_message()” o número de vezes sinalizado.
[0131] Por exemplo, de acordo com a presente invenção, a estrutura de sintaxe da estrutura da mensagem SEI de aninhamento escalável pode ser modificada conforme ilustrado na tabela a seguir. Novamente, foram omitidas partes da estrutura de sintaxe que não são úteis para a compreensão das técnicas descritas. Essas omissões são identificadas abaixo por uma elipse.
[0132] De forma similar, a estrutura de sintaxe da estrutura da mensagem SEI de aninhamento de partição de fluxo de bits pode ser modificada como ilustrado na tabela a seguir.
[0133] Especificamente, as linhas 09-11 na estrutura de sintaxe corrente da estrutura da mensagem SEI de aninhamento escalável, ilustrada na Tabela 1 acima, foram substituídas na Tabela 3 por uma estrutura de sintaxe que chama a função “sei_message()” com base no número especificado pela variável (ou seja, o elemento de sintaxe) “num_seis_in_scalable_minus1”. De forma semelhante, as linhas 05-07 na estrutura de sintaxe corrente da estrutura de mensagem SEI de agrupamento de partição de fluxo de bits, ilustrada na Tabela 2, foram substituídas na Tabela 4 por uma estrutura de sintaxe que chama a função “sei_message()” com base no número armazenado na variável “num_seis_in_bsp_minus1”.
[0134] O número especificado pela variável “num_seis_in_scalable_minus1” é um menor do que o número de estruturas sei_message contidas na estrutura da mensagem SEI de aninhamento escalável. Da mesma forma, o número especificado pela variável “num_seis_in_bsp_minus1” é um menor do que o número de estruturas sei_message contidas na estrutura da mensagem SEI de aninhamento de partição de fluxo de bits. Mais especificamente, “num_seis_in_bsp_minus1” mais 1 especifica o número de estruturas sei_message() contidas na estrutura de sintaxe bsp_nesting(). Em outras palavras, um mais do que o número especificado por cada elemento de sintaxe indica o número de estruturas sei_message contidas na respectiva estrutura de sintaxe da estrutura da mensagem SEI de aninhamento. Deve ser entendido que as variáveis “num_seis_in_scalable_minus1” e “num_seis_in_bsp_minus1” podem ser números inteiros ou outros tipos de dados capazes de representar um número.
[0135] Em ambas as Tabelas 3 e 4, a estrutura substituída compreende um loop “para” que itera através da instrução “sei_message()” uma série de vezes que é igual a um mais do que o número especificado por “num_seis_in_scalable_minus1” (isto é, “num_seis_in_scalable_minus1” + 1) e que é igual a um mais do que o número em “num_seis_in_bsp_minus1” (ou seja, “num_seis_in_bsp_minus1”), respectivamente. Deve ser entendido que outros tipos de estruturas que iteram através de um conjunto de uma ou mais instruções um número assinalado de vezes podem ser utilizados no lugar do loop “para” ilustrado. Deve também ser entendido que o loop “para” pode ser modificado para utilizar o número de estruturas sei_message na respectiva estrutura da mensagem SEI de aninhamento, em vez de um menor do que o número de estruturas sei_message na respectiva estrutura da mensagem SEI de aninhamento, por exemplo, aumentando a iteração de partida em um (uu seja, “i = 1” em vez de “i = 0”) ou substituindo o operador menor-que-ou-igual por uma operação menor-que (ou seja, “i < num_seis_in_scalable” em vez de “i <= num_seis_in_scalable_minus1” e “i < num_seis_in_bsp” em vez de “i <= num_seis_in_bsp_minus1”).
[0136] Em várias formas de realização, o valor de num_seis_in_scalable_minus1 e / ou o valor de num_seis_in_bsp_minus1 podem ser restritos a um intervalo de zero a quinze, inclusive. No entanto, deve ser entendido que o valor de num_seis_in_scalable_minus1 e / ou o valor de num_seis_in_bsp_minus1 podem ser restritos a um intervalo diferente e / ou intervalos diferentes uns dos outros, ou não ser restritos. Quando um ou mais destes valores é restrito a um intervalo de valores, a restrição pode ser imposta ou a um codificador ou decodificador, ou a ambos um codificador e um decodificador. Por exemplo, o codificador de vídeo 20 pode impedir que seja adicionado mais do que um número predeterminado de mensagens SEI a uma estrutura da mensagem SEI de aninhamento de uma unidade SEI NAL.
[0137] Com a estrutura de sintaxe da mensagem SEI de aninhamento modificada, as estruturas da mensagem SEI de aninhamento não têm as limitações das estruturas da mensagem SEI de aninhamento correntes (isto é, convencionais) discutidas acima. Especificamente, as estruturas de mensagem SEI de aninhamento não são mais restritas a serem a última estrutura de mensagem SEI em uma unidade SEI NAL e podem ser estendidas (por exemplo, usando o elemento de sintaxe reserved_payload_extension_data).
[0138] A FIG. 5 ilustra um processo exemplificativo 500 para codificação de vídeo, de acordo com várias formas de realização da presente invenção. O processo 500, que começa na etapa 510, pode ser implementado pelo codificador de vídeo 20, codificador de vídeo 21, decodificador de vídeo 30 e / ou decodificador de vídeo 31, ou qualquer outro componente. Na etapa 520, é processada uma unidade SEI NAL. A unidade NAL SEI pode compreender uma RBSP que compreende uma ou mais estruturas de mensagem SEI. Uma ou mais dessas estruturas de mensagem SEI compreende pelo menos uma estrutura da mensagem SEI de aninhamento configurada para compreender uma ou mais mensagens SEI. Na etapa 530, é codificado um elemento de sintaxe, indicativo de um número de mensagens SEI compreendidas na pelo menos uma estrutura da mensagem SEI de aninhamento. Esta codificação pode compreender a decodificação do elemento de sintaxe (por exemplo, como descrito em relação à etapa 650 na FIG. 6) ou a codificação do elemento de sintaxe (por exemplo, como descrito em relação à etapa 770 na FIG. 7). Além disso, a etapa 530 pode ser realizada como parte de, ou separada do processamento na etapa 520. O processo 500 termina na etapa 580.
[0139] A FIG. 6 ilustra um processo exemplificativo 600 a ser utilizado na decodificação de vídeo, de acordo com várias formas de realização da presente invenção. O processo 600, que começa na etapa 610, pode ser implementado pelo decodificador de vídeo 30 e / ou decodificador de vídeo 31, ou qualquer outro componente. Por conveniência, o processo 600 é descrito como realizado pelo decodificador de vídeo 30. Na etapa 620, é recebida uma estrutura de mensagem SEI. Na etapa 630, é determinado se a estrutura da mensagem SEI é uma estrutura da mensagem SEI de aninhamento (por exemplo, uma estrutura da mensagem SEI de aninhamento escalável e / ou uma estrutura da mensagem SEI de aninhamento de partição de fluxo de bits) ou uma estrutura da mensagem SEI sem aninhamento. Deve ser entendido que a etapa 630 pode ser realizada para apenas um tipo particular de estrutura de mensagem SEI de aninhamento (por exemplo, ou estruturas de mensagem SEI de aninhamento escalável ou estruturas de mensagem SEI aninhamento de partição de bits) ou vários tipos de estrutura da mensagem SEI de aninhamento (por exemplo, estruturas da mensagem SEI de aninhamento escalável e estruturas da mensagem SEI de aninhamento de partição de fluxo de bits).
[0140] Se for determinado na etapa 630 que a estrutura da mensagem SEI é uma estrutura da mensagem SEI sem aninhamento, a estrutura da mensagem SEI é analisada convencionalmente (isto é, como indicado em um esboço corrente da especificação HEVC) na etapa 640, e o processo 600 termina na etapa 680.
[0141] Por outro lado, se for determinado na etapa 630 que a estrutura da mensagem SEI é uma estrutura da mensagem SEI de aninhamento, o número de mensagens SEI na estrutura da mensagem SEI de aninhamento é determinado na etapa 650. Por exemplo, este número pode ter sido incorporado à estrutura da mensagem SEI ou outra estrutura por um codificador de vídeo (por exemplo, codificador de vídeo 20 ou codificador de vídeo 21) que codificou a estrutura da mensagem SEI de aninhamento, caso em que o decodificador de vídeo 30 determina este número extraindo um valor do número a partir da posição codificada do número na estrutura da mensagem SEI de aninhamento ou outra estrutura. Alternativamente, o número de mensagens SEI na estrutura da mensagem SEI de aninhamento pode ser sinalizado pelo codificador de vídeo de outra maneira (por exemplo, fornecido através de alguns meios externos). Em qualquer dos casos, o número sinalizado de mensagens SEI na estrutura da mensagem SEI de aninhamento pode ser o número corrente de mensagens SEI ou o número de mensagens SEI menos um (por exemplo, a variável “num_seis_in_scalable_minus1” para mensagens de SEI de aninhamento escalável ou, a variável “num_seis_in_bsp_minus1” para mensagens de SEI de aninhamento de partição de fluxo de bits).
[0142] Na etapa 660, é determinado se o número determinado de mensagens SEI na estrutura da mensagem SEI de aninhamento foi analisado. Se o número determinado de mensagens SEI na estrutura da mensagem SEI de aninhamento não foi analisado, a mensagem SEI seguinte é analisada na etapa 670, e o processo 600 retorna então à etapa 660. Por outro lado, se o número determinado de mensagens SEI na estrutura da mensagem SEI de aninhamento foi analisado, o processo 600 termina na etapa 680. Este loop formado pelas etapas 660 e 670 pode ser implementado usando um “para loop”, como discutido acima e ilustrado pelas linhas 10-11 da Tabela 3 e linhas 06-07 da Tabela 4. Alternativamente, o loop formado pelas etapas 660 e 670 pode ser implementado usando um tipo diferente de estrutura de loop.
[0143] A FIG. 7 ilustra um processo 700 a ser utilizado na codificação de vídeo, de acordo com várias formas de realização da presente invenção. O processo 700, que começa na etapa 710, pode ser implementado pelo codificador de vídeo 20 e / ou codificador de vídeo 21, ou qualquer outro componente. Na etapa 720, uma ou mais mensagens SEI são recebidas para gerar uma estrutura de mensagem SEI. Na etapa 730, é determinado se a estrutura da mensagem SEI a ser gerada é uma estrutura da mensagem SEI de aninhamento (por exemplo, uma estrutura da mensagem SEI de aninhamento escalável e / ou estrutura de mensagem SEI de aninhamento de partição de fluxo de bits). Deve ser entendido que a etapa 730 pode ser realizada para apenas um tipo particular de estrutura da mensagem SEI de aninhamento (por exemplo, ou estruturas da mensagem SEI de aninhamento escalável ou estruturas de mensagem SEI de aninhamento de partição de fluxo de bits) ou vários tipos de estrutura da mensagem SEI de aninhamento (por exemplo, tanto estruturas da mensagem SEI de aninhamento escalável quanto estruturas da mensagem SEI de aninhamento de partição de fluxo de bits).
[0144] Se for determinado na etapa 730 que a estrutura da mensagem SEI é uma estrutura da mensagem SEI sem aninhamento, a mensagem SEI recebida é adicionada à estrutura da mensagem SEI convencionalmente (isto é, como indicado em um esboço corrente da especificação HEVC) na etapa 740, e o processo 700 termina na etapa 780.
[0145] Por outro lado, se for determinado na etapa 730 que a estrutura da mensagem SEI é uma estrutura da mensagem SEI de aninhamento, o número de mensagens SEI a ser contido na estrutura da mensagem SEI de aninhamento é determinado (por exemplo, por contagem, análise, etc.) na etapa 750. Por exemplo, o codificador de vídeo pode contar o número de mensagens SEI enquanto o codificador de vídeo está adicionando a(s) mensagem(ns) SEI à estrutura da mensagem SEI, ou pode contar o número de mensagens SEI antes de adicionar qualquer mensagem SEI à estrutura da mensagem SEI. Em qualquer dos casos, tal como representado na etapa 760, a(s) mensagem(ns) SEI são adicionadas (por exemplo, codificadas dentro) da estrutura da mensagem SEI de aninhamento.
[0146] Na etapa 770, o número de mensagem(ns) SEI determinado na etapa 750 é incorporado (por exemplo, codificado em) à estrutura da mensagem SEI de aninhamento ou outra estrutura. Alternativamente, o número de mensagens SEI pode ser sinalizado de outra maneira. Em qualquer dos casos, o número sinalizado de mensagens SEI na estrutura da mensagem SEI de aninhamento pode ser o número real de mensagens SEI ou o número de mensagens SEI menos um (por exemplo, a variável “num_seis_in_scalable_minus1” para mensagens SEI de aninhamento escalável ou a “variável num_seis_in_bsp_minus1” para mensagens SEI de aninhamento de partição de fluxo de bits). O processo 700 termina na etapa 780.
[0147] Em várias formas de realização, restrições são adicionadas, de tal modo que uma estrutura da mensagem SEI de aninhamento (por exemplo, a estrutura da mensagem SEI de aninhamento escalável e / ou uma estrutura da mensagem SEI de aninhamento de partição de fluxo de bits) é restrita a ser a última estrutura da mensagem SEI em uma unidade NAL SEI. Esta restrição pode ser utilizada em combinação com característica(s) de outras formas de realização da presente invenção, descrita acima, ou como uma alternativa.
[0148] Por exemplo, o codificador de vídeo 20 e / ou o codificador de vídeo 21 podem impedir que uma estrutura da mensagem SEI de aninhamento seja adicionada a uma unidade NAL SEI em uma posição que precede outros dados (isto é, dados diferentes da estrutura de bits à direita da RBSP 450) na estrutura sei_rbsp 420. Em outras palavras, o codificador de vídeo 20 pode assegurar que, se uma estrutura da mensagem SEI de aninhamento é adicionada a uma unidade NAL SEI, a estrutura da mensagem SEI de aninhamento é adicionada após quaisquer outras estruturas da mensagem SEI na unidade NAL SEI.
[0149] Além disso, o codificador de vídeo 20 e / ou o codificador de vídeo 21 podem impedir a adição de duas ou mais estruturas da mensagem SEI de aninhamento a uma única unidade NAL SEI, a fim de evitar uma situação em que uma unidade NAL SEI compreende duas estruturas da mensagen SEI de aninhamento. Em tal situação, uma das estruturas da mensagem SEI de aninhamento necessariamente precederia outros dados (isto é, outra mensagem SEI de aninhamento das duas ou mais mensagens SEI de aninhamento), resultando em um erro de análise, como descrito acima.
[0150] A FIG. 8 ilustra um processo 800 a ser utilizado na codificação de vídeo, de acordo com várias formas de realização da presente invenção. O processo 800, que começa na etapa 810, pode ser implementado pelo codificador de vídeo 20 e / ou pelo codificador de vídeo 21, ou qualquer outro componente. Na etapa 820, uma ou mais estruturas da mensagem SEI são recebidas para gerar uma unidade NAL SEI. Na etapa 830, é determinado se a(s) estrutura(s) da mensagem SEI a ser(em) incorporada(s) na unidade NAL SEI inclui(em) uma estrutura da mensagem SEI de aninhamento (por exemplo, uma estrutura da mensagem SEI de aninhamento escalável e / ou estrutura da mensagem SEI de aninhamento de partição de fluxo de bits). Deve ser entendido que a etapa 830 pode ser realizada para apenas um tipo particular de estrutura da mensagem SEI de aninhamento (por exemplo, ou estruturas da mensagem SEI de aninhamento escalável ou estruturas da mensagem SEI de aninhamento de partição de bits) ou vários tipos de estrutura da mensagem SEI de aninhamento (por exemplo, tanto estruturas da mensagem SEI de aninhamento escalável quanto estruturas da mensagem SEI de aninhamento de partição de fluxo de bits).
[0151] Se for determinado na etapa 830 que a(s) estrutura(s) da mensagem SEI a ser(em) incorporada(s) na unidade NAL SEI não inclui(em) quaisquer mensagens SEI de aninhamento, a(s) estrutura(s) da mensagem SEI recebida é(são) adicionada(s) à unidade NAL SEI convencionalmente (isto é, como indicado em um esboço corrente da especificação HEVC) na etapa 840, e o processo 800 termina na etapa 880.
[0152] Por outro lado, se for determinado na etapa 830 que a(s) estrutura(s) de mensagem SEI a ser(em) incorporada(s) na unidade NAL SEI inclui(em) uma estrutura da mensagem SEI de aninhamento, a(s) estrutura(s) da mensagem SEI recebida na etapa 820 é(são) ordenada(s), de modo que a estrutura da mensagem SEI de aninhamento é a última entre todas as estruturas da mensagem SEI. Por exemplo, se quatro estruturas da mensagem SEI, A, B, C e D, são recebidas na etapa 820, e a estrutura C é uma estrutura da mensagem SEI de aninhamento, ao passo que A, B e D são estruturas da mensagem SEI sem aninhamento, as estruturas são ordenadas de tal forma que a estrutura C da mensagem SEI de aninhamento é a última (por exemplo, A-B-D-C, B-A-D- C, B-D-A-C, etc.). A ordem das estruturas da mensagem SEI sem aninhamento, A, B e D, pode ser determinada de qualquer maneira (por exemplo, na ordem em que as estruturas da mensagem SEI sem aninhamento foram recebidas, aleatoriamente, de acordo com outras condições ou parâmetros, etc.), desde que as estruturas A, B e D precedam, cada uma, a estrutura C na ordem.
[0153] Depois que a ordem da(s) estrutura(s) da mensagem SEI recebida na etapa 820 é determinada na etapa 850, a(s) estrutura(s) da mensagem SEI é(são) incorporada(s) à unidade NAL SEI na ordem determinada na etapa 860. Deve ser entendido que a ordem pode ser determinada antes da adição de qualquer uma da(s) estrutura(s) da mensagem SEI à unidade NAL SEI. Alternativamente, a ordem pode ser determinada na medida em que a(s) estrutura(s) da mensagem SEI está(ão) sendo adicionada(s) à unidade NAL SEI, por exemplo, adicionando estruturas da mensagem SEI sem aninhamento na ordem em que foram recebidas as estruturas da mensagem SEI sem aninhamento, porém armazenando uma estrutura da mensagem SEI de aninhamento, quando encontrada, a ser adicionada depois que todas as outras estruturas da mensagem SEI foram adicionadas. O processo 800 termina na etapa 880.
USO DA INFORMAÇÃO DO TAMANHO DA CARGA ÚTIL NA ANÁLISE DE MENSAGENS SEI
[0154] A estrutura da mensagem SEI (por exemplo, sei_message() 430A ou 430B na FIG. 4) compreende uma variável “payloadSize” que denota o número de bytes de RBSP na carga útil (por exemplo, sei_payload() 440A ou 440B na FIG. 4) da estrutura da mensagem SEI. Este número, representado em “payloadSize”, inclui todos os bytes da carga útil, incluindo os bytes na extensão de carga útil (por exemplo, 444A ou 444B na FIG. 4) quando presentes.
[0155] No entanto, várias estruturas de sintaxe da mensagem SEI incluem todos os bytes de payloadSize dentro da estrutura de sintaxe da mensagem SEI específica, tal como recovery_point(). Isso não deixa espaço para que qualquer extensão de carga útil esteja presente. As estruturas de sintaxe da mensagem SEI que são atualmente definidas para HEVC e que se enquadram nesta categoria são: mensagem SEI de carga útil de enchimento; dados de usuário registrados; dados de usuário não registrados; mensagem SEI reservada; e Conjunto de Parâmetros de Vídeo (VPS) que reescrevem a mensagem SEI.
[0156] Deve ser reconhecido que, dependendo do exemplo, certos atos ou acontecimentos de qualquer das técnicas aqui descritas podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos ou deixados de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, os atos ou eventos podem ser realizados concorrentemente, por exemplo, através de processamento multi-threaded, processamento de interrupção ou processadores múltiplos, em vez de sequencialmente.
[0157] As informações e sinais aqui divulgados podem ser representados utilizando qualquer uma de uma variedade de diferentes tecnologias e técnicas. Por exemplo, dados, instruções, comandos, informações, sinais, bits, símbolos e chips que podem ser referenciados ao longo da descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, campos ou partículas magnéticas, campos ou partículas ópticas, ou qualquer combinação deles.
[0158] Os vários blocos lógicos, módulos, circuitos e etapas de algoritmo ilustrativos descritos em ligação com as formas de realização aqui descritas podem ser implementados como hardware eletrônico, software de computador ou combinações de ambos. Para ilustrar claramente esta permutabilidade de hardware e software, vários componentes, blocos, módulos, circuitos e etapas ilustrativos foram descritos acima geralmente em termos de sua funcionalidade. Se tal funcionalidade é implementada como hardware ou software depende da aplicação particular e restrições de design impostas ao sistema global. Os especialistas podem implementar a funcionalidade descrita de formas variadas para cada aplicação particular, mas tais decisões de implementação não devem ser interpretadas como provocando um afastamento do âmbito da presente invenção.
[0159] As técnicas aqui descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação destes. Tais técnicas podem ser implementadas em qualquer uma de uma variedade de dispositivos, tais como computadores de fins gerais, aparelhos de comunicações sem fios, ou dispositivos de circuitos integrados que têm múltiplos usos incluindo aplicação em dispositivos de comunicação sem fios e outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implementados juntos em um dispositivo lógico integrado ou separadamente como dispositivos lógicos discretos, porém interoperáveis. Se implementadas em software, as técnicas podem ser realizadas pelo menos em parte por um meio de armazenamento de dados de leitura por computador compreendendo código de programa incluindo instruções que, quando executadas, executam um ou mais dos métodos descritos acima. O meio de armazenamento de dados de leitura por computador pode fazer parte de um produto de programa de computador, que pode incluir materiais de embalagem. O meio de leitura por computador pode compreender memória ou meios de armazenamento de dados, tal como memória de acesso aleatório (RAM), tal como memória de acesso aleatório dinâmica síncrona (SDRAM), memória somente de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória somente de leitura programável apagável eletricamente (EEPROM), memória FLASH, meios de armazenamento de dados magnéticos ou ópticos e semelhantes. As técnicas adicionalmente ou, em alternativa, podem ser realizadas pelo menos em parte por um meio de comunicação de leitura por computador que transporta ou comunica código de programa sob a forma de instruções ou estruturas de dados e que pode ser acessado, lido e / ou executado por um computador, tais como sinais propagados ou ondas.
[0160] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs), ou outros circuitos lógicos integrados ou discretos equivalentes. Tal processador pode ser configurado para executar qualquer uma das técnicas descritas nesta invenção. Um processador de uso geral pode ser um microprocessador; mas em alternativa, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador pode também ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo DSP, ou qualquer outra configuração semelhante. Em conformidade, o termo “processador”, tal como aqui utilizado, pode referir-se a qualquer estrutura anterior, qualquer combinação da estrutura anterior ou qualquer outra estrutura ou aparelho adequado para a implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser proporcionada dentro de módulos de software dedicados ou módulos de hardware configurados para codificação e decodificação, ou incorporados em um codificador- decodificador de vídeo combinado (CODEC).
[0161] Várias forma de realização da invenção foram descritas. Essas e outras formas de realização estão dentro do âmbito das reivindicações a seguir.

Claims (13)

1. Método para conversão em código de vídeo, o método caracterizado por compreender: processar uma unidade da Camada de Abstração de Rede, NAL, da Informações de Aperfeiçoamento Complementares, SEI, que compreende uma carga útil de sequência de bytes brutos, RBSP, que compreende uma ou mais estruturas de mensagem SEI, em que a uma ou mais estruturas de mensagem de SEI compreendendo agrupamento de partição de fluxo de bits que tem uma ou mais estruturas de sintaxe de mensagens SEI; e codificar, dentro da uma ou mais estruturas de mensagem SEI compreendendo agrupamento de partição de fluxo de bits ou a partir da uma ou mais estruturas de mensagem SEI compreendendo agrupamento de partição de fluxo de bits, um elemento de sintaxe num_seis_in_bsp_minus1, o elemento de sintaxe num_seis_in_bsp_minus1 mais 1 especificando uma série de uma ou mais estruturas de sintaxe de mensagens SEI compreendidas dentro da uma ou mais estruturas de mensagem SEI compreendendo agrupamento de partição de fluxo de bits, o elemento de sintaxe num_seis_in_bsp_minus1 sendo distinto da uma ou mais estruturas de sintaxe de mensagem SEI.
2. Método, de acordo com a reivindicação 1, caracterizado pelo método ser um método para decodificação de vídeo, e em que a conversão em código do elemento de sintaxe compreende decodificar o elemento de sintaxe, e em que o método compreende adicionalmente determinar o número de mensagens de SEI compreendidas na pelo menos uma estrutura de mensagem de SEI de agrupamento com base no elemento de sintaxe decodificado.
3. Método, de acordo com a reivindicação 2, caracterizado por compreender adicionalmente analisar a pelo menos uma estrutura de mensagem de SEI de agrupamento com base no número determinado de mensagens SEI compreendidas na pelo menos uma estrutura de mensagem de SEI de agrupamento.
4. Método, de acordo com a reivindicação 2, caracterizado pelo elemento de sintaxe ser decodificado a partir da pelo menos uma estrutura de mensagem de SEI de agrupamento.
5. Método, de acordo com a reivindicação 1, caracterizado pelo método ser um método para codificação de vídeo, e em que a conversão em código do elemento de sintaxe compreende codificar o elemento de sintaxe, e em que o método compreende adicionalmente determinar o número de mensagens de SEI compreendidas na pelo menos uma estrutura de mensagem de SEI antes de codificar o elemento se sintaxe.
6. Método, de acordo com a reivindicação 5, caracterizado pelo elemento de sintaxe ser codificado na pelo menos uma estrutura de mensagem de SEI de agrupamento.
7. Dispositivo para codificação de vídeo, o dispositivo caracterizado por compreender: meios para processar uma unidade da Camada de Abstração de Rede, NAL, da Informações de Aperfeiçoamento Complementares, SEI, que compreende uma carga útil de sequência de bytes brutos, RBSP, que compreende uma ou mais estruturas de mensagem SEI, em que a uma ou mais estruturas de mensagem de SEI compreendendo agrupamento de partição de fluxo de bits que tem uma ou mais estruturas de sintaxe de mensagens SEI; e meios para codificar, dentro da uma ou mais estruturas de mensagem SEI compreendendo agrupamento de partição de fluxo de bits ou a partir da uma ou mais estruturas de mensagem SEI compreendendo agrupamento de partição de fluxo de bits, um elemento de sintaxe num_seis_in_bsp_minus1, o elemento de sintaxe num_seis_in_bsp_minus1 mais 1 especificando uma série de uma ou mais estruturas de sintaxe de mensagens SEI compreendidas dentro da uma ou mais estruturas de mensagem SEI compreendendo agrupamento de partição de fluxo de bits, o elemento de sintaxe num_seis_in_bsp_minus1 sendo distinto da uma ou mais estruturas de sintaxe de mensagem SEI.
8. Dispositivo, de acordo com a reivindicação 7, caracterizado pelo dispositivo ser um dispositivo para decodificar vídeo, em que os meios para converter em código o elemento de sintaxe compreendem meios para decodificar o elemento de sintaxe, e em que o dispositivo compreende adicionalmente meios para determinar o número de mensagens de SEI compreendidas na pelo menos uma estrutura de mensagem de SEI de agrupamento com base no elemento de sintaxe decodificado.
9. Dispositivo, de acordo com a reivindicação 8, caracterizado por compreender adicionalmente meios para analisar pelo menos uma estrutura de mensagem SEI de agrupamento com base no número determinado de mensagens de SEI compreendidas na pelo menos uma estrutura de mensagem de SEI.
10. Dispositivo, de acordo com a reivindicação 8, caracterizado pelos meios para decodificar o elemento de sintaxe decodificarem o elemento de sintaxe a partir da pelo menos uma estrutura de mensagem de SEI de agrupamento.
11. Dispositivo, de acordo com a reivindicação 7, caracterizado pelos meios para converter em código o elemento de sintaxe compreenderem meios para codificar o elemento de sintaxe, e em que o dispositivo compreende adicionalmente meios para determinar o número de mensagens de SEI compreendidas na pelo menos uma estrutura de mensagem de SEI antes de codificar o elemento de sintaxe.
12. Dispositivo, de acordo com a reivindicação 11, caracterizado pelos meios para codificar o elemento de sintaxe codificarem o elemento de sintaxe em pelo menos uma estrutura de mensagem de SEI de agrupamento.
13. Memória caracterizada por compreender instruções armazenadas na mesma que, quando executadas por um ou mais processadores, realizam o método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112016029691-5A 2014-06-20 2015-06-18 Projeto extensível de mensagens da informação suplementar do realce (sei) de aninhamento BR112016029691B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462015110P 2014-06-20 2014-06-20
US62/015,110 2014-06-20
US14/742,573 2015-06-17
US14/742,573 US9716900B2 (en) 2014-06-20 2015-06-17 Extensible design of nesting supplemental enhancement information (SEI) messages
PCT/US2015/036390 WO2015195888A1 (en) 2014-06-20 2015-06-18 Extensible design of nesting supplemental enhancement information (sei) messages

Publications (3)

Publication Number Publication Date
BR112016029691A2 BR112016029691A2 (pt) 2017-08-22
BR112016029691A8 BR112016029691A8 (pt) 2021-07-13
BR112016029691B1 true BR112016029691B1 (pt) 2024-02-15

Family

ID=54870874

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016029691-5A BR112016029691B1 (pt) 2014-06-20 2015-06-18 Projeto extensível de mensagens da informação suplementar do realce (sei) de aninhamento

Country Status (8)

Country Link
US (1) US9716900B2 (pt)
EP (1) EP3158761B1 (pt)
JP (1) JP6400741B2 (pt)
KR (1) KR101930152B1 (pt)
CN (1) CN106416259B (pt)
BR (1) BR112016029691B1 (pt)
CA (1) CA2951522C (pt)
WO (1) WO2015195888A1 (pt)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX361767B (es) * 2012-07-09 2018-12-17 Vid Scale Inc Arquitectura de códec para codificación de video de múltiples capas.
US9977642B2 (en) * 2015-01-27 2018-05-22 Telefonaktiebolaget L M Ericsson (Publ) Methods and apparatuses for supporting screen sharing
US10063422B1 (en) * 2015-12-29 2018-08-28 Amazon Technologies, Inc. Controlled bandwidth expansion in compressed disaggregated storage systems
US9959097B2 (en) 2016-03-09 2018-05-01 Bank Of America Corporation SVN interface system for heterogeneous development environments
EP3226561A1 (en) * 2016-03-31 2017-10-04 Thomson Licensing Method and apparatus for coding a video into a bitstream carrying region-based post processing parameters into an sei nesting message
US10554981B2 (en) * 2016-05-10 2020-02-04 Qualcomm Incorporated Methods and systems for generating regional nesting messages for video pictures
TWI661720B (zh) * 2016-10-05 2019-06-01 日商夏普股份有限公司 用於傳訊視訊參數之系統及方法
US10764575B2 (en) * 2017-03-03 2020-09-01 Qualcomm Incorporated Coding MCTS-nested SEI messages to exclude other SEI messages that are not MCTS-nested
US10701400B2 (en) * 2017-03-21 2020-06-30 Qualcomm Incorporated Signalling of summarizing video supplemental information
CN108924600A (zh) * 2018-06-28 2018-11-30 乐蜜有限公司 直播数据的发送接收方法、装置及电子设备
GB201817783D0 (en) 2018-10-31 2018-12-19 V Nova Int Ltd Methods,apparatuses, computer programs and computer-readable media for processing configuration data
WO2021061391A1 (en) * 2019-09-24 2021-04-01 Futurewei Technologies, Inc. Hrd parameters for layer based conformance testing
JP2023529421A (ja) 2020-06-09 2023-07-10 バイトダンス インコーポレイテッド 映像コーディングにおける補足強化情報の制約
KR20230020428A (ko) * 2020-06-09 2023-02-10 바이트댄스 아이엔씨 서브픽처 서브비트스트림 추출 프로세스에서 추가 향상 정보의 처리
KR20230019850A (ko) 2020-06-09 2023-02-09 바이트댄스 아이엔씨 서브픽처 레벨 및 버퍼링 정보의 시그널링
US20220103847A1 (en) 2020-09-29 2022-03-31 Lemon Inc. Dependent random access point indication in video bitstreams
CN113507628A (zh) * 2021-06-30 2021-10-15 深圳市圆周率软件科技有限责任公司 视频数据处理方法和相关设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101741050B1 (ko) * 2007-04-17 2017-05-29 톰슨 라이센싱 멀티뷰 비디오 코딩을 위한 가설의 참조 디코더
US20100142613A1 (en) * 2007-04-18 2010-06-10 Lihua Zhu Method for encoding video data in a scalable manner
PL2491720T3 (pl) * 2009-10-20 2018-08-31 Telefonaktiebolaget Lm Ericsson (Publ) Zapewnienie uzupełniających informacji przetwarzania
US10200708B2 (en) * 2011-11-30 2019-02-05 Qualcomm Incorporated Sequence level information for multiview video coding (MVC) compatible three-dimensional video coding (3DVC)
KR101678321B1 (ko) * 2012-07-02 2016-11-21 노키아 테크놀로지스 오와이 비디오 코딩을 위한 방법 및 장치

Also Published As

Publication number Publication date
BR112016029691A2 (pt) 2017-08-22
US9716900B2 (en) 2017-07-25
EP3158761B1 (en) 2023-08-09
CA2951522A1 (en) 2015-12-23
EP3158761C0 (en) 2023-08-09
EP3158761A1 (en) 2017-04-26
CN106416259B (zh) 2019-06-21
KR101930152B1 (ko) 2019-03-14
JP2017525225A (ja) 2017-08-31
CA2951522C (en) 2019-08-20
US20150373374A1 (en) 2015-12-24
KR20170020795A (ko) 2017-02-24
BR112016029691A8 (pt) 2021-07-13
WO2015195888A1 (en) 2015-12-23
CN106416259A (zh) 2017-02-15
JP6400741B2 (ja) 2018-10-03

Similar Documents

Publication Publication Date Title
BR112016029691B1 (pt) Projeto extensível de mensagens da informação suplementar do realce (sei) de aninhamento
US10764575B2 (en) Coding MCTS-nested SEI messages to exclude other SEI messages that are not MCTS-nested
KR20210134389A (ko) 인코더, 디코더, 및 대응하는 방법들
JP6388929B2 (ja) マルチレイヤビデオコーディングにおけるレイヤ間予測タイプに関するビットストリーム制約を処理すること
CA2914714C (en) Signaling of view id bit depth in parameter sets
BR112014002479B1 (pt) Conjuntos de parâmetros de codificação para várias dimensões em codificação de vídeo
EP2904793A1 (en) Indication of video properties
JP7490797B2 (ja) 長方形スライスのサイズ情報を選択的に符号化する画像符号化/復号化方法及び装置、並びにビットストリームを伝送する方法

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 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 18/06/2015, OBSERVADAS AS CONDICOES LEGAIS