BR112016029555B1 - Sistemas e métodos para a realização seletiva de uma verificação de conformidade de sequência de bits - Google Patents

Sistemas e métodos para a realização seletiva de uma verificação de conformidade de sequência de bits Download PDF

Info

Publication number
BR112016029555B1
BR112016029555B1 BR112016029555-2A BR112016029555A BR112016029555B1 BR 112016029555 B1 BR112016029555 B1 BR 112016029555B1 BR 112016029555 A BR112016029555 A BR 112016029555A BR 112016029555 B1 BR112016029555 B1 BR 112016029555B1
Authority
BR
Brazil
Prior art keywords
bit
video
subsequence
bit sequence
layers
Prior art date
Application number
BR112016029555-2A
Other languages
English (en)
Other versions
BR112016029555A2 (pt
Inventor
Ye-Kui Wang
Fnu HENDRY
Adarsh Krishnan Ramasubramonian
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 BR112016029555A2 publication Critical patent/BR112016029555A2/pt
Publication of BR112016029555B1 publication Critical patent/BR112016029555B1/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • 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/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

sistemas e métodos para a realização seletiva de uma verificação de conformidade de sequência de bits. técnicas e sistemas são fornecidos para a codificação de dados de vídeo. por exemplo, um método de codificação de dados de vídeo inclui a geração de uma sequência de bits de vídeo codificada compreendendo múltiplas camadas. a sequência de bits de vídeo codificada incluindo um conjunto de parâmetros que define os parâmetros da sequência de bits de vídeo codificada. o método inclui adicionalmente a determinação de um ou mais parâmetros do conjunto de parâmetros que incluem a informação que descreve uma primeira subsequência de bits da sequência de bits de vídeo codificada que inclui uma ou mais camadas com dados de vídeo e informação descrevendo uma segunda subsequência de bits da sequência de bits de vídeo codificada que inclui uma ou mais camadas sem quaisquer dados de vídeo. o método inclui adicionalmente a realização de uma verificação de conformidade de sequência de bits na primeira subsequência de bits ou segunda subsequência de bits com base no fato de se pelo menos uma camada da primeira subsequência de bits ou segunda subsequência de bits inclui dados de vídeo.

Description

Campo
[0001] A presente descrição refere-se geralmente à codificação de vídeo, e mais especificamente a técnicas e sistemas para a realização seletiva de uma verificação de conformidade de sequência de bits.
Fundamentos
[0002] Muitos dispositivos e sistemas permitem que os dados de vídeo sejam processados e enviados para consumo. Os dados de vídeo digital incluem grandes quantidades de dados para corresponder às demandas dos consumidores e provedores de vídeo. Por exemplo, os consumidores de dados de vídeo desejam vídeo da maior qualidade, com alta fidelidade, resoluções, taxas de quadro e similares. Como resultado disso, a grande quantidade de dados de vídeo que é necessária para se corresponder às demandas impõe um fardo às redes de comunicação e dispositivos que processam e armazenam os dados de vídeo.
[0003] Várias técnicas de codificação de vídeo podem ser utilizadas para comprimir os dados de vídeo. A codificação de vídeo é realizada de acordo com um ou mais padrões de codificação de vídeo. Por exemplo, os padrões de codificação de vídeo incluem codificação de vídeo de alta eficiência (HEVC), codificação de vídeo avançada (AVC), codificação de grupo de especialistas em imagem em movimento (MPEG) ou similar. A codificação de vídeo utiliza geralmente métodos de previsão (por exemplo, interprevisão, intraprevisão ou similares) que levam vantagem da redundância presente nas imagens ou sequências de vídeo. Um objetivo importante das técnicas de codificação de vídeo é se comprimir os dados de vídeo em uma forma que utilize uma taxa de bit inferior, enquanto se evita ou minimiza a degradação da qualidade de vídeo. Com os serviços de vídeo sempre em evolução se tornando disponíveis, as técnicas de codificação com melhor eficiência de codificação são necessárias.
Breve Sumário
[0004] Em algumas modalidades, as técnicas e sistemas são descritos para realizar seletivamente uma verificação de conformidade de sequência de bits. Em alguns exemplos, uma ou mais subsequências de bits podem ser extraídas a partir de uma sequência de bits. Por exemplo, uma ou mais camadas ou subcamadas podem ser removidas a partir da sequência de bits para obtenção de uma subsequência de bits. Como resultado disso, uma subsequência de bits pode ter menos camadas ou subcamadas do que a sequência de bits. Uma verificação de conformidade de subsequência de bits pode ser realizada para determinar se uma sequência de bits ou uma subsequência de bits está em conformidade com um padrão de codificação de vídeo em particular. Como descrito aqui, uma verificação de conformidade de sequência de bits pode incluir a realização de um teste normativo utilizando os parâmetros de decodificador de referência hipotéticos.
[0005] Quando as camadas ou subcamadas são removidas de uma sequência de bits para extrair uma subsequência de bits, informação pode estar presente (por exemplo, em um ou mais conjuntos de parâmetros) que descreve as características e parâmetros das camadas removidas ou subcamadas que não estão mais presentes na sequência de bits e, dessa forma, não incluem quaisquer dados. Em algumas modalidades descritas aqui, uma verificação de conformidade de sequência de bits pode ser realizada de forma seletiva em uma subsequência de bits com base no fato de se pelo menos uma camada da subsequência de bits inclui dados de vídeo. Por exemplo, uma verificação de conformidade de sequência de bits pode ser realizada apenas em subsequências de bits que incluem dados de vídeo em uma ou todas as camadas ou subcamadas das subsequências de bits.
[0006] De acordo com pelo menos um exemplo de realização seletiva de uma verificação de conformidade de sequência de bits, um método de codificação de dados de vídeo é fornecido e inclui a geração de uma sequência de bits de vídeo codificada compreendendo múltiplas camadas. A sequência de bits de vídeo codificada inclui um conjunto de parâmetros definindo os parâmetros da sequência de bits de vídeo codificada. O método inclui adicionalmente a determinação de um ou mais parâmetros do conjunto de parâmetros que inclui informação descrevendo uma primeira subsequência de bits da sequência de bits de vídeo codificada e informação descrevendo uma segunda subsequência de bits da sequência de bits de vídeo codificada, a primeira subsequência de bits incluindo uma ou mais camadas com dados de vídeo, e a segunda subsequência de bits incluindo uma ou mais camadas sem qualquer dados de vídeo. O método inclui adicionalmente a realização de uma verificação de conformidade de sequência de bits na primeira subsequência de bits ou segunda subsequência de bits com base no fato de se pelo menos uma camada da primeira subsequência de bits ou segunda subsequência de bits inclui dados de vídeo.
[0007] Em outro exemplo, um aparelho é fornecido e inclui uma memória configurada para armazenar os dados de vídeo e um processador. O processador é configurado para e pode gerar, a partir de dados de vídeo, uma sequência de bits de vídeo codificada compreendendo múltiplas camadas. A sequência de bits de vídeo codificada inclui um conjunto de parâmetros definindo os parâmetros da sequência de bits de vídeo codificada. O processador é adicionalmente configurado e pode determinar um ou mais parâmetros do conjunto de parâmetros que inclui informação descrevendo uma primeira subsequência de bits da sequência de bits de vídeo codificada, a primeira subsequência de bits incluindo uma ou mais camadas com dados de vídeo, e a segunda subsequência de bits incluindo uma ou mais camadas sem qualquer dados de vídeo. O processador é adicionalmente configurado para e pode realizar uma verificação de conformidade de sequência de bits na primeira subsequência de bits ou a segunda subsequência de bits com base no fato de se pelo menos uma camada da primeira subsequência de bits ou a segunda subsequência de bits inclui dados de vídeo.
[0008] Em outro exemplo, um meio legível por computador é fornecido tendo armazenadas no mesmo instruções que quando executadas por um processador realizam um método que inclui a geração de uma sequência de bits de vídeo codificada compreendendo múltiplas camadas, a subsequência de bits de vídeo codificada incluindo um conjunto de parâmetros definido os parâmetros da sequência de bits de vídeo codificada; determinando um ou mais parâmetros do conjunto de parâmetros que inclui informação descrevendo uma primeira subsequência de bits da sequência de bits de vídeo codificada e informação descrevendo uma segunda subsequência de bits da sequência de bits de vídeo codificada, a primeira subsequência de bits incluindo uma ou mais camadas sem dados de vídeo, e a segunda subsequência de bits incluindo uma ou mais camadas sem dados de vídeo e realizando uma verificação de conformidade de sequência de bits na primeira subsequência de bits ou segunda subsequência de bits com base no fato de se pelo menos uma camada da primeira subsequência de bits ou a segunda subsequência de bits inclui dados de vídeo.
[0009] Em outro exemplo, um aparelho é fornecido e inclui meios para gerar uma sequência de bits de vídeo codificada compreendendo múltiplas camadas. A sequência de bits de vídeo codificada inclui um conjunto de parâmetros definindo os parâmetros da sequência de bits de vídeo codificada. O aparelho inclui adicionalmente meios para determinar um ou mais parâmetros do conjunto de parâmetros que incluem a informação descrevendo uma primeira subsequência de bits da sequência de bits de vídeo codificada e informação descrevendo uma segunda subsequência de bits da sequência de bits de vídeo codificada, a primeira subsequência de bits incluindo uma ou mais camadas com dados de vídeo, e a segunda subsequência de bits incluindo uma ou mais camada sem dados de vídeo. O aparelho inclui adicionalmente meios para realizar uma verificação de conformidade de sequência de bits na primeira subsequência de bits ou segunda subsequência de bits com base no fato de se pelo menos uma camada da primeira subsequência de bits ou a segunda subsequência de bits inclui dados de vídeo.
[0010] O método, aparelhos e meio legível por computador descritos acima para a realização seletiva de uma verificação de conformidade de sequência de bits pode incluir adicionalmente a realização da verificação de conformidade de sequência de bits na primeira subsequência de bits com base em uma ou mais camadas da primeira subsequência de bits possuindo dados de vídeo, onde uma verificação de conformidade de sequência de bits não é realizada na segunda subsequência de bits com base em uma ou mais camadas da segunda subsequência de bits sem quaisquer dados de vídeo. Em algumas modalidades, a verificação de conformidade de sequência de bits é realizada na primeira subsequência de bits quando todas dentre a uma ou mais camadas da primeira subsequência de bits possuem dados de vídeo. Em algumas modalidades, a verificação de conformidade de sequência de bits é realizada na primeira subsequência de bits quando pelo menos uma dentre uma ou mais camadas da primeira subsequência de bits possui dados de vídeo.
[0011] Em alguns aspectos, a verificação de conformidade de sequência de bits inclui a realização de um teste normativo na primeira subsequência de bits para garantir que a primeira subsequência de bits se conforme às exigências de codificação necessárias para a primeira subsequência de bits a ser decodificada. Em alguns caos, o teste normativo é realizado utilizando-se parâmetros de decodificador de referência hipotéticos.
[0012] O método, aparelhos e meio legível por computador descritos acima para a realização seletiva de uma verificação de conformidade de sequência de bits pode incluir adicionalmente a realização da verificação de conformidade de sequência de bits na primeira subsequência de bits com base no fato de se um valor mais alto de um identificador temporal de dados de vídeo na primeira subsequência de bits é igual a ou maior do que um valor de um identificador temporal correspondente da primeira subsequência de bits.
[0013] Em alguns aspectos, os dados de video de uma ou mais camadas da primeira subsequência de bits estão presentes na primeira subsequência de bits ou são fornecidos a partir de uma fonte externa além de um codificador utilizado para gerar a sequência de bits de vídeo codificada.
[0014] Em alguns aspectos, os dados de vídeo incluem uma ou mais unidades de camada de abstração de rede de camada de codificação de vídeo.
[0015] Em alguns aspectos, a segunda subsequência de bits é gerada a partir da sequência de bits de vídeo codificada pela remoção de pelo menos uma camada da sequência de bits de vídeo codificada.
[0016] Em alguns aspectos, o conjunto de parâmetros inclui um conjunto de parâmetros de vídeo. Em algumas modalidades, o conjunto de parâmetros inclui um conjunto de parâmetros de sequência.
[0017] Em algumas modalidades, as técnicas e sistemas são descritos para designação de um valor mínimo para uma estrutura de sintaxe em um conjunto de parâmetros. Uma estrutura de sintaxe inclui múltiplos elementos de sintaxe. Em alguns exemplos, um codificador que codifica dados de vídeo de acordo com um primeiro protocolo de codificação pode gerar uma sequência de bits de vídeo codificada. O codificador pode fornecer a sequência de bits de vídeo codificada para um decodificador em um dispositivo receptor. Uma camada de base para os dados de vídeo pode ser fornecida para o decodificador (ou outro decodificador no mesmo dispositivo receptor) por uma fonte externa além do codificador que utiliza o primeiro protocolo de codificação. Por exemplo, a camada de base pode ser codificada de acordo com um segundo protocolo de codificação que é diferente do primeiro protocolo de codificação. Em tal exemplo, um codificador codifica os dados de vídeo utilizando o segundo protocolo de codificação que pode fornecer a camada de base para o dispositivo receptor. Um conjunto de parâmetros, tal como um conjunto de parâmetros de vídeo, pode ser fornecido com a sequência de bits de vídeo codificada de acordo com o primeiro protocolo de codificação. O conjunto de parâmetros de vídeo pode incluir informação relacionada com os dados de vídeo na sequência de bits de vídeo codificada. Uma estrutura de sintaxe pode estar presente no conjunto de parâmetros de vídeo que inclui informação referente a uma camada de base da sequência de bits de vídeo codificada, mesmo quando a camada de base é fornecida externamente (uma camada de base do primeiro protocolo de codificação não é fornecida). Como descrito aqui, um valor mínimo pode ser designado para os elementos de sintaxe na estrutura de sintaxe quando for determinado que a camada de base deve ser fornecida para o dispositivo receptor pela fonte externa além do codificador utilizado para gerar uma sequência de bits de vídeo codificada.
[0018] De acordo com pelo menos um exemplo de designação de um valor mínimo para uma estrutura de sintaxe em um conjunto de parâmetros, um método de codificação de dados de vídeo é fornecido incluindo a geração, por um codificador, de uma sequência de bits de vídeo codificada de acordo com um primeiro protocolo de codificação. A sequência de bits de vídeo codificada inclui uma ou mais camadas de melhoria e um conjunto de parâmetros de vídeo definindo os parâmetros da sequência de bits de vídeo codificada. O método inclui adicionalmente a determinação de que uma camada de base deve ser fornecida para um dispositivo receptor por uma fonte externa além do codificador. O método inclui adicionalmente a designação de um valor mínimo a uma estrutura de sintaxe no conjunto de parâmetros de vídeo quando for determinado que a camada de base deve ser fornecida para o dispositivo receptor pela fonte externa. A estrutura de sintaxe define parâmetros de perfil, tier e nível para a camada de base.
[0019] Em outro exemplo, um codificador é fornecido incluindo uma memória configurada para armazenar os dados de vídeo e um processador. O processador é configurado para e pode gerar, a partir dos dados de vídeo, uma sequência de bits de vídeo codificada de acordo com um primeiro protocolo de codificação. A sequência de bits de vídeo codificada inclui uma ou mais camadas de melhoria e um conjunto de parâmetros de vídeo definindo os parâmetros da sequência de bits de vídeo codificada. O processador é configurado adicionalmente para e pode determinar que uma camada de base seja fornecida para um dispositivo receptor por uma fonte externa além do codificador. O processador é adicionalmente configurado para e pode designar um valor mínimo para uma estrutura de sintaxe no conjunto de parâmetros de vídeo quando for determinado que a camada de base deve ser fornecida para o dispositivo receptor pela fonte externa. A estrutura de sintaxe define os parâmetros de perfil, tier e nível para a camada de base.
[0020] Em outro exemplo, o meio legível por computador de um codificador é fornecido possuindo armazenadas no mesmo instruções que quando executadas por um processador realizam um método que inclui a geração de uma sequência de bits de vídeo codificada de acordo com um primeiro protocolo de codificação, a sequência de bits de vídeo codificada incluindo uma ou mais camadas de melhoria e um conjunto de parâmetros de vídeo definindo parâmetros da sequência de bits de vídeo codificada; determinando que uma camada de base deve ser fornecida para um dispositivo receptor por uma fonte externa além do codificador; e designando um valor mínimo para uma estrutura de sintaxe no conjunto de parâmetros de vídeo quando for determinado que a camada de base deve ser fornecida para o dispositivo receptor pela fonte externa, a estrutura de sintaxe definindo os parâmetros de perfil, tier e nível para a camada de base.
[0021] Em outro exemplo, um codificador é fornecido incluindo meios para a geração de uma sequência de bits de vídeo codificada de acordo com um primeiro protocolo de codificação, a sequência de bits de vídeo codificada incluindo uma ou mais camadas de melhoria e um conjunto de parâmetros de vídeo definindo os parâmetros da sequência de bits de vídeo codificada. O codificador inclui adicionalmente meios para determinar que uma camada de base deve ser fornecida para um dispositivo de recebimento por uma fonte externa além do codificador. O codificador inclui adicionalmente meios para designar um valor mínimo para uma estrutura de sintaxe no conjunto de parâmetros de vídeo quando for determinado que a camada de base deve ser fornecida para o dispositivo receptor pela fonte externa, a estrutura de sintaxe definindo os parâmetros de perfil, tier e nível para a camada de base.
[0022] Em alguns aspectos, o valor mínimo inclui um valor de 0 para todos os bits de todos os elementos de sintaxe na estrutura de sintaxe. Em alguns aspectos, a determinação de que a camada de base deve ser fornecida para o dispositivo receptor pela fonte externa inclui a determinação de que um indicador seja determinado para um valor indicando que a camada de base é fornecida pela fonte externa.
[0023] Em alguns aspectos, a camada de base fornecida pela fonte externa é codificada de acordo com um segundo protocolo de codificação, o segundo protocolo de codificação sendo diferente do primeiro protocolo de codificação. O primeiro protocolo de codificação inclui um protocolo de codificação de vídeo de alta eficiência, e o segundo protocolo de codificação inclui um protocolo de codificação de vídeo avançado.
[0024] Em alguns aspectos, os parâmetros de perfil, tier e nível especificam as restrições em ferramentas de codificação, características de sequência de bits, características de armazenador necessárias pelo dispositivo de decodificação para decodificar a camada de base, ou outros parâmetros.
[0025] Em algumas modalidades, as técnicas e sistemas são descritos para restringir parâmetros de formato de representação para um conjunto de parâmetros. Em alguns exemplos, os parâmetros de formato de representação que descrevem as características de dados de vídeo (por exemplo, parâmetros de resolução, profundidade de bit, largura de imagem, formato de cor ou outros parâmetros de formato de representação) podem ser sinalizadas em um conjunto de parâmetros de sequência e/ou em um conjunto de parâmetros de vídeo. Por exemplo, os parâmetros de formato de representação sinalizados em um conjunto de parâmetros de vídeo podem fornecer valores máximos para os parâmetros, enquanto os parâmetros de formato de representação sinalizados em um conjunto de parâmetros de sequência podem fornecer valores de parâmetros atualizados. Como descrito aqui, uma restrição pode ser especificada exigindo que os valores de parâmetro de formato de representação sinalizados no conjunto de parâmetros de sequência sejam inferiores a ou iguais aos valores de parâmetros de formato de representação sinalizados no conjunto de parâmetros de vídeo. Em algumas modalidades, a restrição se aplica a um conjunto de parâmetros sequência designado para uma camada de base de uma sequência de bits de vídeo codificada. Por exemplo, a restrição pode limitar um codificador a gerar valores para um ou mais parâmetros de formato de representação no conjunto de parâmetros de sequência inferiores a ou iguais aos valores dos parâmetros de formato de representação correspondentes que são designados para a camada de base no conjunto de parâmetros de vídeo.
[0026] De acordo com pelo menos um exemplo de restrição dos parâmetros de formato de representação para um conjunto de parâmetros, um método de codificação de dados de vídeo é fornecido incluindo a geração de uma sequência de bits de vídeo codificada compreendendo múltiplas camadas. A sequência de bits de vídeo codificada inclui um ou mais conjuntos de parâmetros de sequência e um conjunto de parâmetros de vídeo. O método inclui adicionalmente a geração, de acordo com uma restrição, de um ou mais parâmetros de formato de representação para um conjunto de parâmetros de sequência designado para uma camada de base da sequência de bits de vídeo codificada. A restrição limitas os valores de um ou mais dos parâmetros de formato de representação no conjunto de parâmetros de sequência para que sejam inferiores a ou iguais aos valores dos parâmetros de formato de representação correspondentes que são designados para a camada de base no conjunto de parâmetros de vídeo.
[0027] Em outro exemplo, um aparelho é fornecido incluindo uma memória configurada para armazenar os dados de vídeo e um processador. O processador é configurado para e pode gerar, a partir de dados de vídeo, uma sequência de bits de vídeo codificada compreendendo múltiplas camadas. A sequência de bits de vídeo codificada inclui um ou mais conjuntos de parâmetros de sequência e um conjunto de parâmetro de vídeo. O processador é adicionalmente configurado para e pode gerar, de acordo com uma restrição, um ou mais parâmetros de formato de representação para um conjunto de parâmetros de sequência designado para uma camada de base da sequência de bits de vídeo codificada. A restrição limita os valores de um ou mais parâmetros de formato de representação no conjunto de parâmetros de sequência a serem inferiores a ou iguais aos valores dos parâmetros de formato de representação correspondentes que são designados para a camada de base no conjunto de parâmetros de vídeo.
[0028] Em outro exemplo, um meio legível por computador é fornecido possuindo armazenadas no mesmo instruções que quando executadas por um processador realizam um método que inclui a geração de uma sequência de bits de vídeo codificada compreendendo múltiplas camadas, a sequência de bits de vídeo codificada incluindo um ou mais conjuntos de parâmetros de sequência e um conjunto de parâmetros de vídeo; e gerando, de acordo com uma restrição, um ou mais parâmetros de formato de representação para um conjunto de parâmetros de sequência designado para uma camada de base da sequência de bits de vídeo codificada, a restrição limitando os valores de um ou mais parâmetros de formato de representação no conjunto de parâmetros de sequência a serem inferiores a ou iguais aos valores dos parâmetros de formato de representação correspondente que são designados para a camada de base no conjunto de parâmetros de vídeo.
[0029] Em outro exemplo, um aparelho é fornecido incluindo meios para gerar uma sequência de bits de vídeo codificada compreendendo múltiplas camadas, a sequência de bits de vídeo codificada incluindo um ou mais conjuntos de parâmetros de sequência e um conjunto de parâmetros de vídeo. O aparelho inclui adicionalmente meios para gerar, de acordo com uma restrição, um ou mais parâmetros de formato de representação para um conjunto de parâmetros de sequência designado para uma camada de base da sequência de bits de vídeo codificada, a restrição limitando os valores de um ou mais parâmetros de formato de representação no conjunto de parâmetros de sequência a serem inferiores a ou iguais aos valores dos parâmetros de formato de representação correspondentes que são designados para a camada de base no conjunto de parâmetros de vídeo
[0030] Em alguns aspectos, o um ou mais parâmetros de formato de representação incluem um ou mais dentre resolução, profundidade de bit, largura de imagem, formato de cor, ou outros parâmetros de característica de vídeo. Em alguns aspectos, os parâmetros de formato de representação sinalizados no conjunto de parâmetros de vídeo são utilizados para negociação de sessão com um ou mais decodificadores. Em alguns aspectos, um ou mais parâmetros de formato de representação no conjunto de parâmetros de sequência são sinalizados em um ou mais elementos de sintaxe de codificação de vídeo de alta eficiência.
[0031] O método, aparelhos e meio legível por computador descritos acima para restringir os parâmetros de formato de representação para um conjunto de parâmetros podem incluir adicionalmente a atualização de um ou mais conjuntos de parâmetros de sequência de acordo com a restrição.
[0032] Esse sumário não deve identificar características chave ou essenciais da presente matéria reivindicada, nem pretende ser utilizado isoladamente para determinar o escopo da presente matéria reivindicada. A presente matéria deve ser compreendida por referência às partes adequadas de toda a especificação dessa patente, todo e qualquer desenho, e cada reivindicação.
[0033] O acima exposto, juntamente com outras características e modalidades, se tornará mais aparente mediante referência à especificação, reivindicações e desenhos em anexo a seguir.
Breve Descrição dos Desenhos
[0034] Modalidades ilustrativas da presente invenção são descritas em detalhes abaixo com referência às figuras dos desenhos a seguir:
[0035] A figura 1 é um diagrama em bloco ilustrando um exemplo de um dispositivo de codificação e um dispositivo de decodificação de acordo com algumas modalidades.
[0036] A figura 2 é um diagrama em bloco ilustrando um exemplo de conjuntos de camadas, de acordo com algumas modalidades.
[0037] A figura 3 é um diagrama em bloco ilustrando uma modalidade de um processo de codificação de dados de vídeo para a realização seletiva de uma verificação de conformidade de sequência de bits, de acordo com algumas modalidades.
[0038] A figura 4 é um fluxograma ilustrando uma modalidade de um processo de codificação de dados de vídeo para realizar seletivamente uma verificação de conformidade de sequência de bits, de acordo com algumas modalidades.
[0039] A figura 5 é um diagrama em bloco ilustrando um ambiente com múltiplos dispositivos de codificação para fornecer dados de vídeo codificados, de acordo com algumas modalidades.
[0040] A figura 6 é um fluxograma ilustrando uma modalidade de um processo de codificação de dados de vídeo para designação de um valor mínimo para uma estrutura de sintaxe em um conjunto de parâmetros, com algumas modalidades.
[0041] A figura 7 é um diagrama em bloco ilustrando um exemplo de um conjunto de parâmetros de vídeo e um conjunto de parâmetros de sequência com parâmetros de formato de representação de acordo com algumas modalidades.
[0042] A figura 8 é um fluxograma ilustrando uma modalidade de um processo de codificação de dados de vídeo para restringir os parâmetros de formato de representação para um conjunto de parâmetros, de acordo com algumas modalidades.
[0043] A figura 9 é um diagrama em bloco ilustrando um dispositivo de codificação de vídeo ilustrativo, de acordo com algumas modalidades.
[0044] A figura 10 é um diagrama em bloco ilustrando um dispositivo de decodificação de vídeo ilustrativo, de acordo com algumas modalidades.
Descrição Detalhada
[0045] Determinados aspectos e modalidades dessa descrição são fornecidos abaixo. Alguns desses aspectos e modalidades podem ser aplicados independentemente e alguns dos mesmos podem ser aplicados em combinação como será aparente aos versados na técnica. Na descrição a seguir, para fins de explicação, detalhes específicos são apresentados a fim de fornecer uma compreensão profunda das modalidades da invenção. No entanto, será aparente que várias modalidades podem ser praticadas sem esses detalhes específicos. As figuras e a descrição não devem ser restritivas.
[0046] A emissão da descrição fornece modalidades ilustrativas apenas, e não deve limitar o escopo, aplicabilidade, ou configuração da descrição. Em vez disso, a emissão da descrição das modalidades ilustrativas fornecerá aos versados na técnica uma descrição para implementação de uma modalidade ilustrativa.Deve-se compreender que várias mudanças podem ser feitas em função e disposição dos elementos sem se distanciar do espírito e escopo da invenção como apresentado nas reivindicações em anexo.
[0047] Detalhes específicos são fornecidos na descrição a seguir para fornecer uma compreensão profunda das modalidades. No entanto, será compreendido pelos versados na técnica que as modalidades podem ser praticadas sem esses detalhes específicos. Por exemplo, circuitos, sistemas, redes, processos e outros componentes podem ser ilustrados como componentes na forma de diagrama em bloco a fim de não obscurecer as modalidades com detalhes desnecessários. Em outros casos, circuitos, processos, algoritmos, estruturas e técnicas bem conhecidos podem ser ilustrados sem detalhes desnecessários a fim de evitar obscurecer as modalidades.
[0048] Além disso, é notado que modalidades individuais podem ser descritas como um processo que é apresentado como um fluxograma, um fluxograma de dados, um diagrama de estrutura, ou um diagrama em bloco. Apesar de um fluxograma poder descrever as operações como um processo sequencial, muitas das operações podem ter nova disposição. Um processo é encerrado quando suas operações são completada, mas pode ter etapas adicionais não incluídas em uma figura. Um processo pode corresponder a um método, uma função, um procedimento, uma sub-rotina, um subprograma, etc. Quando um processo corresponde a uma função, sua terminação pode corresponder a um retorno da função para a função de chamada ou função principal.
[0049] O termo "meio legível por computador" inclui, mas não está limitado a dispositivos de armazenamento portáteis ou não, dispositivos de armazenamento ótico, e vários outros meios capazes de armazenar conter ou transportar instruções e/ou dados. Um meio legível por computador pode incluir um meio não transitório no qual os dados podem ser armazenados e que não inclua ondas portadoras e/ou sinais eletrônicos transitórios se propagando sem fio ou através de conexões com fio. Exemplos de um meio não transitório podem incluir, mas não estão limitados a um disco ou fita magnética, mídia de armazenamento ótico tal como disco compacto (CD) ou disco versátil digital (DVD), memória flash, memória ou dispositivos de memória. Um meio legível por computador pode ter armazenado no mesmo um código e/ou instruções executáveis por máquina que podem representar um procedimento, uma função, um subprograma, um programa, uma rotina, uma sub-rotina, um módulo, um pacote de software, uma classe ou qualquer combinação de instruções, estruturas de dados, ou declarações de programa. Um segmento de código pode ser acoplado a outro segmento de código ou um circuito de hardware pela passagem e/ou recebimento de informação, dados, argumentos, parâmetros, ou conteúdo de memória. A informação, argumentos, parâmetros, dados, etc., podem ser passados, enviados ou transmitidos através de qualquer meio adequado incluindo compartilhamento de memória, passagem de mensagem, passagem de token, transmissão de rede, ou similares.
[0050] Adicionalmente, as modalidades podem ser implementadas por hardware, software, firmware, middleware, microcódigo, linguagens de descrição de hardware, ou qualquer combinação dos mesmos. Quando implementadas em software, firmware, middleware ou microcódigo, o código de programa ou segmentos de código para realizar as tarefas necessárias (por exemplo, um produto de programa de computador) pode ser armazenado em um meio legível por computador ou legível por máquina. Um processador pode realizar as tarefas necessárias.
[0051] Vários sistemas e métodos de codificação de vídeo utilizando codificadores de vídeo e decodificadores de vídeo são descritos aqui. Por exemplo, um ou mais sistemas e métodos são direcionados para o manuseio de camadas indisponíveis, conjuntos de camadas e pontos de operação além de restrições aos parâmetros de formato de representação na codificação de vídeo de múltiplas camadas.
[0052] À medida que mais dispositivos e sistemas fornecem aos consumidores a capacidade de consumir dados de vídeo digital, a necessidade de se ter técnicas de codificação de vídeo eficientes se torna mais importante. A codificação de vídeo é necessária para se reduzir as exigências de armazenamento e transmissão necessárias para manusear as grandes quantidades de dados presentes nos dados de vídeo digital. Várias técnicas de codificação de vídeo podem ser utilizadas para comprimir os dados de vídeo em uma forma que utilize uma taxa de bits menor enquanto mantém a alta qualidade de vídeo.
[0053] A figura 1 é um diagrama em bloco ilustrando um exemplo de um sistema 100 incluindo um dispositivo de codificação 104 e um dispositivo de decodificação 112. O dispositivo de codificação 104 pode ser parte de um dispositivo de fonte, e o dispositivo de decodificação 112 pode ser parte de um dispositivo receptor. O dispositivo fonte e/ou o dispositivo receptor podem incluir um dispositivo eletrônico, tal como um aparelho telefônico móvel ou estacionário (por exemplo, um smartphone, um telefone celular, uma caixa de decodificação, uma televisão, uma câmera, um dispositivo de exibição, um aparelho de reprodução de mídia digital, um console de jogos de vídeo, um dispositivo de sequenciamento de vídeo e qualquer outro dispositivo eletrônico adequado. Em alguns exemplos, o dispositivo fonte e o dispositivo de recebimento podem incluir um ou mais transceptores sem fio para comunicações sem fio. As técnicas de codificação descritas aqui são aplicáveis à codificação de vídeo em vários aplicativos de multimídia, incluindo transmissões de sequenciamento de vídeo (por exemplo, através da Internet), difusões ou transmissões de televisão, codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação do vídeo digital armazenado em um meio de armazenamento de dados, ou outros aplicativos. Em alguns exemplos, o sistema 100 pode suportar a transmissão de vídeo de via única ou duas vias para suportar os aplicativos tal como conferência de vídeo, sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo, jogos e/ou vídeo telefonia.
[0054] O dispositivo de codificação 104 (ou codificador) pode ser utilizado para codificar os dados de vídeo utilizando um padrão de codificação de vídeo ou protocolo para gerar uma sequência de bits de vídeo codificada. Os padrões de codificação de vídeo incluem ITU- T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de Vídeo Escalonável (SVC) e Codificação de Vídeo de Múltiplas Visualizações (MVC). Um padrão de codificação de vídeo mais recente, Codificação de Vídeo de Alta Eficiência (HEVC), foi finalizado pela Equipe de Colaboração Conjunta sobre Codificação de Vídeo (JCT-VC) de ITU-T Grupo de Especialistas em Codificação de Vídeo (VCEG) e ISO/IEC Grupo de Especialistas em Imagem em Movimento (MPEG). Várias extensões de HEVC lidam com a codificação de vídeo de múltiplas camadas e também estão sendo desenvolvidas por JCT-VC, incluindo a extensão de múltiplas visualizações de HEVC, chamada de MV-HEVC, e a extensão escalonável de HEVC, chamada SHVC, ou qualquer outro protocolo de codificação adequado. Uma especificação de rascunho HEVC está disponível a partir de http://phenix.it- sudparis.eu/jct/docenduser/documents/17Valencia/wg11/JCT VC-Q1003-v1.zip. Um rascunho de trabalho de MV-HEVC está disponível a partir de http://phenis.it-sudparis- eu/jct2/docenduser/documents/8Valencia/wg11/JCT3V- H1002v5.zip. Um rascunho de trabalho de SHVC está disponível a partir de http://phenix.it-sudparis- eu/jct/docenduser/documents/17Valencia/wg11/JCTVC-Q1008- v2.zip.
[0055] Muitas modalidades descritas aqui descrevem exemplos utilizando o padrão HEVC, ou extensões do mesmo. No entanto, as técnicas e sistemas descritos aqui também podem ser aplicáveis a outros padrões de codificação, tal como AVC, MPEG, extensões dos mesmos, ou outros padrões de codificação adequados. De acordo, enquanto as técnicas e os sistemas descritos aqui podem ser descritos com referência a um padrão de codificação de vídeo em particular, os versados na técnica apreciarão que a descrição não deve ser interpretados para aplicar apenas esse padrão em particular.
[0056] Uma fonte de vídeo 102 pode fornecer os dados de vídeo para o dispositivo de codificação 104. A fonte de vídeo 102 pode ser parte do dispositivo fonte, ou pode ser parte de um dispositivo além do dispositivo fonte. A fonte de vídeo 102 pode incluir um dispositivo de captura de vídeo (por exemplo, uma câmera de vídeo, um telefone de câmera, um telefone de vídeo, ou similar), um arquivo de vídeo contendo vídeo armazenado, um servidor de vídeo ou provedor de conteúdo fornecendo dados de vídeo, uma interface de alimentação de vídeo recebendo o vídeo de um servidor de vídeo ou provedor de conteúdo, um sistema de gráficos de computador para gerar os dados de vídeo de gráficos de computador, uma combinação de tais fontes, ou qualquer outra fonte de vídeo adequada.
[0057] Os dados de vídeo da fonte de vídeo 102 podem incluir uma ou mais imagens ou quadros de entrada. Uma imagem ou quadro é uma imagem estática que é parte de um vídeo. O motor de codificador 106 (ou codificador) do dispositivo de codificação 104 codifica os dados de vídeo para gerar uma sequência de bits de vídeo codificada. Uma sequência de bits HEVC, por exemplo, pode incluir uma sequência de unidades de dados chamadas de unidades de camada de abstração de rede (NAL). Duas classes de unidades NAL existem no padrão HEVC, incluindo as unidades de camada de codificação de vídeo (VCL) e unidades NAL não VCL. Uma unidade NAL VCL inclui uma fatia ou segmento de fatia (descrito abaixo) de dados de imagem codificada, e uma unidade NAL não VCL inclui informação de controle que se refere a múltiplas imagens codificadas. Uma imagem codificada e unidades NAL não VCL (se alguma) correspondente à imagem codificada é chamada de unidade de acesso (AU).
[0058] Unidades NAL podem conter uma sequência de bits formando uma representação codificada de dados de vídeo (a sequência de bit de vídeo codificada), tal como as representações codificadas de imagens em um vídeo. O motor de codificador 106 gera representações codificadas de imagens pela partição de cada imagem em múltiplas fatias. Uma fatia é independente de outras fatias de modo que a informação na fatia seja codificada sem dependência de dados de outras fatias dentro da mesma imagem. Uma fatia inclui um ou mais segmentos de fatia incluindo um segmento de fatia independente e, se presente, um ou mais segmentos de fatia dependentes que dependem de vários segmentos de fatia. As fatias são então divididas em blocos de árvore de codificação (CTBs) de amostras de luminescência e amostras de crominância. Um CTB de amostras de luminescência e um ou mais CTBs de amostras de crominância, juntamente com sintaxe para as amostras, são referidos como uma unidade de árvore de codificação (CTU). Uma CTU é a unidade de processamento básica para codificação HEVC. Uma CTU pode ser dividida em múltiplas unidades de codificação (CUs) de tamanhos variáveis. Uma CU contém conjuntos de amostras de luminescência e crominância que são referidas como blocos de codificação (CBs).
[0059] Os CBs de luminescência e crominância podem ser adicionalmente divididos em blocos de previsão (PBs). Um PB é um bloco de amostras do componente de luminescência ou um componente de crominância que utiliza os mesmos parâmetros de movimento para a interprevisão. O PB de luminescência e um ou mais PBs de crominância, juntamente com a sintaxe associada, formam uma unidade de previsão (PU). Um conjunto de parâmetros de movimento é sinalizado na sequência de bits para cada PU e é utilizado para interprevisão de PB de luminescência e um ou mais PBs de crominância. Um CB também pode ser dividido em um ou mais blocos de transformação (TBs). Um TB representa um bloco quadrado de amostras de um componente de cor no qual a mesma transformação bidimensional é aplicada para codificação de um sinal residual de previsão. Uma unidade de transformação (TU) representa os TBs das amostras de luminescência e crominância, e os elementos de sintaxe correspondentes.
[0060] Um tamanho de uma CU corresponde a um tamanho do nó de codificação e é quadrado em formato. Por exemplo, um tamanho de uma CU pode ser de 8 x 8 amostras, 16 x 16 amostras, 32 x 32 amostras, 64 x 64 amostras ou qualquer outro tamanho adequado até o tamanho da CTU correspondente. A frase "N x N" é utilizada aqui para fazer referência às dimensões de pixel de um bloco de vídeo em termos de dimensões verticais e horizontais (por exemplo, 8 pixels x 8 pixels). Os pixels em um bloco podem ser dispostos em fileiras e colunas. Em algumas modalidades, os blocos podem não ter o mesmo número de pixels em uma direção horizontal como em uma direção vertical. Os dados de sintaxe associados a uma CU podem descrever, por exemplo, a partição da CU em uma ou mais PUs. Os modos de partição podem diferir entre se a CU é codificada por modo de intraprevisão ou codificada por modo de interprevisão. As PUs podem ser divididas em um formato não quadrado. Os dados de sintaxe associados com uma CU também podem descrever, por exemplo, a partição da CU em uma ou mais TUs de acordo com uma CTU. Uma TU pode ter formato quadrado ou não.
[0061] De acordo com o padrão HEVC, as transformações podem ser realizadas utilizando-se unidades de transformação (TUs). As TUs podem variar para CUs diferentes. As TUs podem ser dimensionadas com base no tamanho das PUs dentro de uma CU determinada. As TUs podem ter o mesmo tamanho ou podem ser menores do que as PUs. Em alguns exemplos, as amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores utilizando-se uma estrutura quadtree conhecida como quad tree residual (RQT). Os nós folha de RQT podem corresponder às TUs. Valores de diferença de pixel associados com as TUs podem ser transformados para produzir coeficientes de transformação. Os coeficientes de transformação podem então ser quantizados pelo motor do codificador 106.
[0062] Uma vez que as imagens dos dados de vídeo são divididas em CUs, o motor de codificador 106 prevê cada PU utilizando um modo de previsão. A previsão é então subtraída dos dados de vídeo originais para se obter o residual (descrito abaixo). Para cada CU, um modo de previsão pode ser sinalizado dentro da sequência de bits utilizando dados de sintaxe. Um modo de previsão pode incluir a intraprevisão (ou previsão intraimagem) ou a interprevisão (ou previsão interimagem). Utilizando a intraprevisão, cada PU é prevista a partir dos dados de imagem vizinhos na mesma imagem utilizando, por exemplo, a previsão DC para encontrar um valor médio para a PU, a previsão plana para encaixar uma superfície plana na PU, previsão de direção para extrapolar a partir dos dados vizinhos ou qualquer outro tipo de previsão. Utilizando-se a interprevisão, cada PU é prevista utilizando a previsão de compensação de movimento a partir de dados de imagem em uma ou mais imagens de referência (antes ou depois da imagem atual na ordem de saída). A decisão de se codifica uma área de imagem utilizando a previsão de interimagem ou intraimagem pode ser feita, por exemplo, no nível de CU.
[0063] Uma PU pode incluir dados relacionados com o processo de previsão. Por exemplo, quando a PU é codificada utilizando-se a intraprevisão, a PU pode incluir dados descrevendo um modo de intraprevisão para a PU. Como outro exemplo, quando a PU for codificada utilizando a interprevisão, a PU pode incluir dados definindo um vetor de movimento para a PU. Os dados definindo 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, precisão de um quarto de pixel ou precisão de um oitavo de pixel), uma imagem de referência para a 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.
[0064] O codificador 104 pode então realizar a transformação e quantização. Por exemplo, seguindo a previsão, o motor de codificador 106 pode calcular valores residuais correspondentes à PU. Os valores residuais podem compreender valores de diferença de pixel. Quaisquer dados residuais que possam permanecer após a previsão ser realizada são transformados utilizando-se uma transformação em bloco, que pode ser baseada em uma função de transformação de cosseno discreta, transformação de seno discreta, transformação de inteiro, transformação de wavelet, ou outra função de transformação adequada. Em alguns casos, uma ou mais transformações em bloco (por exemplo, tamanhos 32 x 32, 16 x 16, 8 x 8, 4 x 4 ou similares) podem ser aplicadas aos dados residuais em cada CU. Em algumas modalidades, uma TU pode ser utilizada para os processos de transformação e quantização implementados pelo motor de codificador 106. Uma CU determinada possuindo uma ou mais PUs também pode incluir uma ou mais TUs. Como descrito em maiores detalhes abaixo, os valores residuais podem ser transformados em coeficientes de transformação utilizando-se transformações em bloco, e então podem ser quantizados e digitalizados utilizando-se TUs para produção de coeficientes de transformação serializados para a codificação por entropia.
[0065] Em algumas modalidades, seguindo a codificação por intraprevisão ou interprevisão utilizando PUs de uma CU, o motor do codificador 106 pode calcular os dados residuais para as TUs da CU. As PUs podem compreender dados de pixel no domínio espacial (ou domínio de pixel). As TUs podem compreender coeficientes no domínio de transformação seguindo a aplicação de uma transformação de bloco. Como notado previamente, os dados residuais podem corresponder a valores de diferença de pixel entre pixels da imagem não codificada e valores de previsão correspondentes às PUs. O motor do codificador 106 pode formar as TUs incluindo os dados residuais para a CU, e podem então transformar as TUs para produzir os coeficientes de transformação para a CU.
[0066] O motor do codificador 106 pode realizar a quantização dos coeficientes de transformação. A quantização fornece compressão adicional pela quantização de coeficientes de transformação para reduzir a quantidade de dados utilizados para representar os coeficientes. Por exemplo, a quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. Em um exemplo, um coeficiente com um valor de bit n pode ser arredondado para baixo para um valor de bit m durante a quantização, com n sendo superior a m.
[0067] Uma vez que a quantização é realizada, a sequência de bits codificada inclui os coeficientes de transformação quantizados, informação de previsão (por exemplo, modos de previsão, vetores de movimento, ou similares), informação de partição, e qualquer outro dado adequado, tal como outros dados de sintaxe. Os diferentes elementos da sequência de bits codificada podem então ser codificados por entropia pelo motor de codificador 106. Em alguns exemplos, o motor de codificador 106 pode utilizar uma ordem de digitalização serializada para digitalizar os coeficientes de transformação quantizados para produzir um vetor serializado que pode ser codificado por entropia. Em alguns exemplos, o motor de codificador 106 pode realizar uma digitalização adaptativa. Depois da digitalização dos coeficientes de transformação quantizados para formar um vetor unidimensional, o motor de codificador 106 pode codificar por entropia o vetor unidimensional. Por exemplo, o motor de codificador 106 pode utilizar a codificação de comprimento variável adaptativa de contexto, a codificação de aritmética binária adaptativa de contexto, a codificação aritmética binária adaptativa de contexto com base em sintaxe, a codificação por entropia da partição de intervalo de probabilidade, ou qualquer outra técnica de codificação por entropia adequada.
[0068] Como descrito previamente, uma sequência de bits HEVC inclui um grupo de unidades NAL. Uma sequência de bits formando a sequência de bits de vídeo codificada está presente nas unidades NAL VCL. As unidades NAL não VCL podem conter conjuntos de parâmetros com informação de alto nível referente à sequência de bits de vídeo codificada, em adição a outra informação. Por exemplo, um conjunto de parâmetros pode incluir um conjunto de parâmetros de vídeo (VPS), um conjunto de parâmetros de sequência (SPS), e um conjunto de parâmetros de imagem (PPS). O objetivo dos conjuntos de parâmetros é a eficiência da taxa de bits, resiliência a erro, e fornecimento de interfaces de camada de sistemas. Cada fatia se refere a um único PPS, SPS e VPS ativo para acessar a informação que o dispositivo de decodificação 112 pode utilizar para decodificar a fatia. Um identificador (ID) pode ser codificado para cada conjunto de parâmetro, incluindo um ID VPS, um ID SPS e um ID PPS. Um SPS inclui um ID SPS e um ID VPS. Um PPS inclui um ID PPS e um ID SPS. Cada cabeçalho de fatia inclui um ID PPS. Utilizando-se os IDs, os conjuntos de parâmetro ativo podem ser identificados para uma fatia determinada.
[0069] Um PPS inclui informação que se aplica a todas as fatias em uma imagem determinada. Devido a esse fato, todas as fatias em uma imagem ser referem ao mesmo PPS. Fatias em imagens diferentes também podem se referir ao mesmo PPS. UM SPS inclui informação que se aplica a todas as imagens em uma mesma sequência de vídeo codificada ou sequência de bits. Uma sequência de vídeo codificada é uma série de unidades de acesso que começa com uma imagem de ponto de acesso randômico (por exemplo, uma imagem de atualização de decodificação instantânea (IDR) ou uma imagem de acesso a link interrompido (BLA) ou outra imagem de ponto de acesso randômico adequada) e inclui todas as unidades de acesso até, mas não incluindo a próxima imagem de ponto de acesso randômico (ou o final da sequência de bits). A informação em um SPS não muda tipicamente de imagem para imagem dentro de uma sequência de vídeo codificada. Todas as imagens em uma sequência de vídeo codificada utilizam o mesmo SPS. O VPS inclui informação que se aplica a todas as camadas dentro de uma sequência de vídeo codificada ou sequência de bits. VPS inclui uma estrutura de sintaxe com elementos de sintaxe que se aplicam a todas as sequências de vídeo codificadas. Em algumas modalidades, VPS, SPS ou PPS podem ser transmitidos em banda com a sequência de bits codificada. Em algumas modalidades, VPS, SPS ou PPS podem ser transmitidos fora de banda em uma transmissão separada da unidades NAL contendo dados de vídeo codificados.
[0070] A saida 110 do dispositivo de codificação 104 pode enviar as unidades NAL criando os dados de vídeo codificados através do link de comunicação 120 para o dispositivo de decodificação 112 do dispositivo receptor. A entrada 114 do dispositivo de decodificação 112 pode receber as unidades NAL. O link de comunicação 120 pode incluir um sinal transmitido utilizando-se uma rede sem fio, uma rede com fio, ou uma combinação de uma rede com e uma rede sem fio. Uma rede sem fio pode incluir qualquer interface sem fio ou combinação de interfaces sem fio e pode incluir qualquer rede sem fio adequada (por exemplo, a Internet ou outra rede de área ampla, uma rede com base em pacote, WiFi, frequência de rádio (RF), UWB, WiFi Direto, celular, Evolução de Longo Termo (LTE), WiMax ou similares). Uma rede com fio pode incluir qualquer interface com fio (por exemplo, fibra, ethernet, ethernet de linha de energia, ethernet através de cabo coaxial, linha de sinal digital (DSL), ou similares). As redes com e/ou sem fio podem ser implementadas utilizando-se vários equipamentos, tal como estações base, roteadores, pontos de acesso, pontes, circuitos de acesso, comutadores ou similares. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio e transmitidos para o dispositivo receptor.
[0071] Em alguns exemplos, o dispositivo de codificação 104 pode armazenar dados de vídeo codificados no armazenador 108. A saída 110 pode recuperar os dados de vídeo codificados do motor do codificador 106 ou do armazenador 108. O armazenador 108 pode incluir qualquer uma dentre uma variedade de mídias de armazenamento de dados distribuídas ou acessadas localmente. Por exemplo, o armazenador 108 pode incluir um disco rígido, um disco de armazenamento, uma memória flash, uma memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para armazenamento de dados de vídeo codificados.
[0072] A entrada 114 recebe os dados de video codificados e pode fornecer dados de vídeo para o motor decodificador 116 ou para o armazenador 118 para uso posterior pelo motor decodificador 116. O motor decodificador 116 pode decodificar os dados de vídeo codificados por decodificação por entropia (por exemplo, utilizando um decodificador por entropia) e extrair os elementos da sequência de vídeo codificada que cria os dados de vídeo codificados. O motor decodificador 116 pode então escalonar novamente e realizar uma transformação inversa nos dados de vídeo codificados. Os resíduos são então passados para um estádio de previsão do motor decodificador 116. O motor decodificador 116 então prevê um bloco de pixels (por exemplo, uma PU). Em alguns exemplos, a previsão é adicionada à saída da transformação inversa.
[0073] O dispositivo de decodificação 112 pode enviar o vídeo decodificado para um dispositivo de destino de vídeo 122, que pode incluir um monitor ou outro dispositivo de saída para exibição dos dados de vídeo decodificados para um consumidor de conteúdo. Em alguns aspectos, o dispositivo de destino de vídeo 122 pode ser parte do dispositivo receptor que inclui o dispositivo de decodificação 112. Em alguns aspectos, o dispositivo de destino de vídeo 122 pode ser parte de um dispositivo separado além do dispositivo receptor.
[0074] Em algumas modalidades, o dispositivo de codificação de vídeo 104 e/ou o dispositivo de decodificação de vídeo 112 podem ser integrados a um dispositivo de codificação de áudio e dispositivo de decodificação de áudio, respectivamente. O dispositivo de codificação de vídeo 104 e/ou o dispositivo de decodificação de vídeo 112 também podem incluir outro hardware ou software que é necessário para implementar as técnicas de codificação descritas acima, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. O dispositivo de codificação de vídeo 104 e o dispositivo de decodificação de vídeo 112 podem ser integrados como parte de um codificador/decodificador combinado (codec) em um dispositivo respectivo. Um exemplo dos detalhes específicos do dispositivo de codificação 104 é descrito abaixo com referência à figura 9. Um exemplo de detalhes específicos do dispositivo de decodificação 112 é descrito abaixo com referência à figura 10.
[0075] Como notado acima, as extensões do padrão HEVC incluem a extensão de Codificação de Vídeo de Múltiplas Visualizações, referidas como MV-HEVC, e a extensão de Codificação de Vídeo Escalonável, referida como SHVC. As extensões MV-HEVC e SHVC compartilham o conceito de codificação em camadas, com camadas diferentes sendo incluídas na sequência de bits de vídeo codificada. Cada camada em uma sequência de vídeo codificada é endereçada por um único identificador de camada (ID). Um ID de camada pode estar presente em um cabeçalho de uma unidade NAL para identificar uma camada com a qual a unidade NAL está associada. Em MV-HEVC, diferentes camadas representam normalmente vistas diferentes da mesma cena na sequência de bits de vídeo. Em SHVC, diferentes camadas escalonáveis são fornecidas e representam as sequências de bits de vídeo em diferentes resoluções espaciais (ou resolução de imagem) ou em fidelidades de reconstrução diferentes. As camadas escalonáveis podem incluir uma camada de base (com ID de camada = 0) e uma ou mais camadas de melhoria (com IDs de camada = 1, 2,...,n). A camada de base pode se conformar a um perfil da primeira versão de HEVC, e representa a camada mais inferior disponível em uma sequência de bits. As camadas de melhoria possuem uma resolução espacial aumentada, uma resolução temporal ou taxa de quadro aumentada e/ou fidelidade de reconstrução (ou qualidade) em comparação com a camada de base. As camadas de melhoria são organizadas hierarquicamente e podem (ou não) depender das camadas inferiores. Em alguns exemplos, as diferentes camadas podem ser codificadas utilizando-se um único codec padrão (por exemplo, todas as camadas são codificadas utilizando-se HEVC, SHVC ou outro padrão de codificação). Em alguns exemplos, diferentes camadas podem ser codificadas utilizando-se um codec de múltiplos padrões. Por exemplo, uma camada de base pode ser codificada utilizando AVC, enquanto uma ou mais camadas de melhoria podem ser codificadas utilizando-se extensões SHVC e/ou MV- HEVC do padrão HEVC.
[0076] Em geral, uma camada inclui um conjunto de unidades NAL VCL e um conjunto correspondente de unidades NAL não VCL. As unidades NAL são designadas para um valor ID de camada em particular. As camadas podem ser hierárquicas no sentido de que uma camada pode depender de uma camada inferior. Um conjunto de camadas se refere a um conjunto de camadas representado dentro de uma sequência de bits que é autocontida, significando que a camada dentro de um conjunto de camadas pode depender de outras camadas no conjunto de camadas no processo de decodificação, mas não depender de quaisquer outras camadas para decodificação. De acordo, as camadas em um conjunto de camadas pode formar uma sequência de bits independente que pode representar o conteúdo de vídeo. O conjunto de camadas em um conjunto de camadas pode ser obtido a partir de outra sequência de camadas pela operação de um processo de extração de subsequências de camadas (descrito abaixo). Um conjunto de camadas pode corresponder ao conjunto de camadas que deve ser decodificado quando um decodificador desejar operar de acordo com determinados parâmetros.
[0077] Conjuntos de parâmetros de decodificador de referência hipotéticos são fornecidos (por exemplo, em uma sequência ou conjunto de parâmetros de vídeo, ou em outra mensagem) para permitir a funcionalidade de múltiplas camadas, com cada conjunto de parâmetros correspondendo a um ponto de operação. Um ponto de operação define os parâmetros utilizados para a extração de subsequência de bits, e inclui uma listra de camadas alvo (um conjunto de camadas para esse ponto de operação) e uma camada temporal mais alta alvo. Múltiplos pontos de operação podem ser aplicáveis a uma determinada sequência de bits. Um ponto de operação pode incluir todas as camadas em um conjunto de camadas ou pode ser uma sequência de bits formada como um subconjunto do conjunto de camadas. Por exemplo, um ponto operacional de uma sequência de bits pode ser associado com um conjunto de identificadores de camada e um identificador temporal. Uma lista de identificadores de camada pode ser utilizada para identificar as camadas a serem incluídas no ponto de operação. A lista de identificador de camada pode ser incluída em um conjunto de parâmetros (por exemplo, um VPS). A lista de identificadores de camada pode incluir uma lista de valores de identificador de camada (ID) (por exemplo, indicados por um elemento de sintaxe nuh_layer_id). Em alguns casos, os valores de ID de camada podem incluir inteiros não negativos, e cada camada pode ser associada com um valor de ID de camada singular de modo que cada valor de ID de camada identifique uma camada particular. Um ID temporal mais alto (por exemplo, identificado por um TemporalId variável) pode ser utilizado para definir um subconjunto temporal. Em algumas modalidades, uma lista de identificadores de camada e um ID temporal mais alto alvo podem ser utilizados como entradas para extrair um ponto operacional de uma sequência de bits. Por exemplo, quando uma unidade NAL possui um identificador de camada que é incluído em um conjunto de identificadores de camada associados com um ponto operacional, e o identificador temporal da unidade NAL é inferior a ou igual ao identificador temporal do ponto operacional, a unidade NAL é associada com o ponto operacional. Uma camada de saída alvo é uma camada que deve ser enviada, e um conjunto de camadas de saída é um conjunto de camadas que é associado com um conjunto de camadas de saída alvo. Por exemplo, um conjunto de camadas de saída é um conjunto de camadas incluindo as camadas de um conjunto de camadas especificado, onde uma ou mais camadas no conjunto de camadas são indicadas como sendo camadas de saída. Um ponto operacional de saída corresponde a um conjunto de camadas de saída em particular. Por exemplo, um ponto de operação de saída pode incluir uma sequência de bits que é criada a partir de uma sequência de bits de entrada pela operação de um processo de extração de subsequência de bits com a subsequência de bits de entrada, um identificador temporal mais alto alvo (TemporalId), e uma lista de identificadores de camada alvo como entradas, e que é associado com um conjunto de camadas de saída.
[0078] A figura 2 é um diagrama em bloco ilustrando um exemplo de conjuntos de camadas, incluindo o conjunto de camada 0, o conjunto de camadas 1, o conjunto de camadas 2 e o conjunto de camadas 3. Um ponto operacional diferente pode ser associado a cada um dos conjuntos de camadas 0, 1, 2, e 3. O conjunto de camadas 0 inclui a camada 0. O conjunto de camadas 1 inclui a camada 0 e a camada 1. O conjunto de camadas 2 inclui a camada 0, a camada 1, a camada 2. O conjunto de camadas 3 inclui a camada 0, a camada 1, a camada 2 e a camada 3. A camada 0 pode ser uma camada de base, e as camadas 1, 2 e 3 podem ser camadas de melhoria. Por exemplo, a camada 0 pode ter uma taxa de quadro de 7,5 Hz e uma taxa de bit de 64 quilobytes por segundo, a camada 1 pode ter uma taxa de quadro de 15 Hz e uma taxa de bit de 128 quilobytes por segundo, a camada 2 pode ter uma taxa de quadro de 15 Hz e uma taxa e uma taxa de bits de 256 quilobytes por segundo, a camada 3 pode ter uma taxa de quadro de 30 Hz e uma taxa de bit de 512 quilobytes por segundo, e uma camada 4 (não ilustrada na figura) pode ter uma taxa de quadro de 30 Hz e uma taxa de bit de 1 megabyte por segundo. Os versados na técnica apreciarão que esses números são fornecidos como um exemplo apenas, e que as camadas podem ter outras taxas de quadro e taxas de bit de acordo com a implementação particular.
[0079] A capacidade de escalonamento nas técnicas de codificação permite que as unidades de dados codificadas (por exemplo, unidades NAL) de uma sequência de bits sejam removidas para obter uma subsequência de bits resultante que forma outra sequência de bits válida para um decodificador alvo. As subsequências de bits representam o conteúdo fonte de uma sequência de bits, mas possuem taxas de quadro menores (ou resolução temporal), resoluções espaciais e/ou fidelidade de vídeo do que as da sequência de bits original. A capacidade de escalonamento temporal permite que uma sequência de bits e subsequências de bits correspondentes com taxas de quadro escalonáveis, onde as dependências de compensação de movimento são estruturadas de modo que imagens completas possam ser removidas da sequência de bits. A capacidade de escalonamento espacial permite que uma sequência de bits e subsequências de bits associadas com resoluções espaciais escalonáveis ou tamanhos de imagem escalonáveis, caso no qual o vídeo pode ser codificado em múltiplas resoluções espaciais. Em alguns casos, os dados de resoluções inferiores podem ser utilizados para prever os dados ou amostras de resoluções superiores a fim de reduzir a taxa de bit para codificar as resoluções mais altas. A capacidade de escalonamento também pode ser alcançada com base na qualidade de vídeo, com o vídeo sendo codificado em uma única resolução espacial e em qualidades diferentes. Em alguns casos, os dados de qualidades inferiores podem ser utilizados para prever os dados de qualidades superiores a fim de reduzir a taxa de bit para codificar qualidades superiores. Uma combinação de diferentes capacidades de escalonamento também pode ser utilizada.
[0080] Em alguns exemplos, uma ou mais camadas ou subcamadas temporais podem ser removidas de uma sequência de bits para obter uma subsequência de bits com características diferentes (por exemplo, taxas de quadro, resoluções especiais, fidelidade de vídeo, ou outras características adequadas). Por exemplo, um processo de extração de subsequência de bits pode ser utilizado para remover as camadas ou subcamadas da sequência de bits. As camadas ou subcamadas podem ser removidas por várias razões. Por exemplo, uma sequência de bits pode ser editada pela remoção de uma camada a fim de reduzir uma quantidade de dados que é necessária para transmitir os dados para um dispositivo de decodificação. Coo resultado de uma camada ou subcamada ser removida da sequência de bits, uma subsequência de bits possui menos camadas ou subcamadas do que a sequência de bits original. Cada subsequência é associada com um conjunto de camadas e ponto operacional correspondente. Em alguns casos, um conjunto de camadas incompleto e um ponto operacional indisponível (total ou parcialmente) podem resultar de uma ou mais camadas sendo removidas da sequência de bits.
[0081] A figura 3 é um diagrama em bloco ilustrando o conjunto de camadas 3 se tornando um conjunto de camadas incompleto depois da remoção de uma camada. O conjunto de camadas incompleto pode ocorrer quando uma camada ou uma subcamada temporal é extraída ou removida da sequência de bits para criar uma subsequência de bits. Quando uma camada ou subcamada é removida, um conjunto de camadas que inclui a camada extraída estará incompleto devido à camada em falta. Na figura 3, a camada 3 é removida da sequência de bits, resultando no conjunto de camada 3 se tornar um conjunto de camadas incompleto e o ponto operacional correspondente para esse conjunto de camadas se tornar não totalmente disponível. Uma subsequência de bits pode, dessa forma, corresponder a um ponto operacional que é considerado não totalmente disponível ou não pelo menos parcialmente disponível, como descrito em maiores detalhes abaixo. Os conjuntos de camada restantes 0, 1 e 2 permanecem completos, e os pontos operacionais correspondentes permanecem totalmente ou pelo menos parcialmente disponíveis.
[0082] Quando as camadas ou subcamadas são removidas de uma sequência de bits para obtenção de uma subsequência de bits, a informação pode estar presente (por exemplo, em um ou mais conjuntos de parâmetros) descrevendo as características e parâmetros das camadas removidas ou subcamadas que não estão mais presentes na sequência de bits e, dessa forma, não incluem quaisquer dados. Por exemplo, VPS em HEVC é projetado de modo que quando algumas camadas ou subcamadas são removidas da sequência de bits, VPS propriamente dito não precisa ser alterado. Em outras palavras, VPS pode conter informação que descreve as camadas, subcamadas, conjuntos de camada, conjuntos de camadas de saída, pontos operacionais, e pontos operacionais de saída que não estão mais presentes na sequência de bits depois do processo de extração de subsequência de bits. Independentemente dessa característica do VPS, cada subsequência de bits precisa estar em conformidade com o padrão de codificação de vídeo quando determinadas características são correspondidas pela subsequência de bits. Para testar a conformidade, uma verificação de conformidade de sequência de bits é realizada por um codificador quando da geração de uma sequência de bits escalonável ou sequência de bits de múltiplas camadas para garantir que cada conjunto de camadas que corresponde a um ponto operacional em particular seja uma subsequência de bits em conformidade. Uma verificação de conformidade de sequência de bits pode incluir a realização de um teste normativo utilizando parâmetros de decodificador de referência hipotéticos. O teste normativo utiliza os parâmetros de decodificador de referência hipotéticos para verificar que uma sequência de bits ou subsequência de bits pode ser decodificada por um decodificador de referência hipotético que é conectado conceitualmente à saída de um codificador e que inclui um armazenador de imagens codificadas, um decodificador e um armazenador de imagens decodificadas. O codificador deve garantir que várias restrições sejam correspondidas quando da criação de uma sequência de bits para corresponder à conformidade, incluindo garantir que as ferramentas utilizadas na sequência de bits combinem com as sinalizadas nos conjuntos de parâmetros, garantindo que o armazenador de imagens codificadas do decodificador de referência hipotético não flua excessivamente ou insuficientemente, garantindo que as imagens marcadas sejam utilizadas para referência não sejam utilizadas como referência depois, ou outras exigências. Um fluxo excessivo de armazenador ocorre quando muitas unidade de dados codificadas são apresentadas para o armazenador de decodificador. O fluxo insuficiente ocorre quando for a hora de o decodificador processar algumas das unidades de dados codificadas, mas o armazenador está vazio.
[0083] De acordo com o padrão HEVC, uma subsequência de bits deve ser uma sequência de bits em conformidade quando a subsequência de bits corresponder a um ponto operacional ou ponto operacional de saída associado com um conjunto de camadas e um valor mais alto alvo de TemporalId, OpTid, inferior a ou igual a 6 para o qual o conjunto de camadas é especificado por VPS. Subsequências de bits solicitantes correspondendo a pontos operacionais que não estão disponíveis (por exemplo, devido a um conjunto de camadas incompleto) causará determinações de não conformidade para subsequências de bits com conjuntos de camadas incompletos, resultando em um processamento e overhead que podem não ser necessários. Em um exemplo, uma camada de base pode ser excluída de um conjunto de camadas, como no texto da especificação em JCTVC-R0010v1, e tal subsequência de bits e tal subsequência de bits pode conter zero camadas (pode não haver qualquer unidade NAL VCL). Nesse exemplo, uma camada de base pode ser fornecida por uma fonte externa além de um codificador utilizado para gerar a sequência de bits codificada (por exemplo, a camada de base é codificada AVC, e a sequência de bits codificada é codificada HEVC). Uma subsequência de bits pode ser extraída a partir da sequência de bits codificada para obter um conjunto de camadas 0 incluindo a camada de base apenas. Como resultado disso, a subsequência de bits é extraída a partir da sequência de bits codificada para obter apenas a camada de base, não deixando quaisquer dados de vídeo na subsequência de bits (visto que a camada de base é fornecida a partir de uma fonte externa). Exigir que uma subsequência de bits vazia ou parcialmente vazia seja uma sequência de bits em conformidade resulta em ineficiências no processo de codificação. Adicionalmente, nos testes de conformidade de sequência de bits, cada ponto de operação correspondente a um conjunto de camadas especificado em VPS em HEVC é testado, e cada ponto operacional de saída correspondendo a um conjunto de camadas de saída especificado em VPS em SHVC/MV-HEVC é testado. No entanto, quando nem todas as subcamadas ou todas as camadas de um ponto operacional (em HEVC) ou um ponto operacional de saída (em SHVC-MV-HEVC) estão disponíveis, o teste de conformidade de sequência de bits não deve ser realizado.
[0084] Em algumas modalidades descritas aqui, uma verificação de conformidade de sequência de bits pode ser realizada seletivamente em uma subsequência de bits com base no fato de se pelo menos uma camada da subsequência de bits inclui dados de vídeo. Em tais modalidades, uma verificação de conformidade de sequência de bits pode ser realizada apenas em subsequências de bits, que incluem dados de vídeo em uma ou todas as camadas ou subcamadas das subsequências de bits.
[0085] Por exemplo, em algumas modalidades, apenas as subsequências de bits que correspondem aos pontos operacionais totalmente disponíveis (ou pontos operacionais de saída) precisam ser sequências de bits em conformidade. Em tais modalidades, o dispositivo de codificação 104 pode determinar os pontos operacionais que estão totalmente disponíveis (por exemplo, com base na informação em um conjunto de parâmetros, dados presentes em uma subsequência de bits, ou outra informação adequada disponível para o dispositivo de codificação 104). O dispositivo de codificação 104 só pode realizar uma verificação de conformidade de sequência de bits nas subsequências de bits que correspondem a pontos operacionais totalmente disponíveis. Um ponto operacional pode ser considerado totalmente disponível se as unidades NAL VCL estiverem disponíveis (presentes na sequência de bits ou fornecidas por meios externos) para cada camada incluída no conjunto de camadas correspondente ao ponto operacional. Em alguns exemplos, um ponto operacional pode ser considerado totalmente disponível se as unidades NAL VCL estiverem disponíveis para cada camada incluída no conjunto de camadas e se o valor mais alto de um ID temporal de todas as unidades NAL VCL na sequência de bits for igual a ou superior ao OpTid de ID temporal correspondente do ponto operacional. No exemplo ilustrado na figura 3, o conjunto de camadas 3 não será considerado totalmente disponível visto que as unidades NAL VCL não estão disponíveis para a camada 3 do conjunto de camadas 1. Em alguns casos, uma exceção pode ser implementada para pontos operacionais para os quais o conjunto de camadas correspondente é o conjunto de camadas 0 (incluindo a camada de base apenas) quando a camada de base é fornecida por meios externos - caso no qual tais pontos de operação podem ser considerados não totalmente disponíveis.
[0086] Em algumas modalidades, apenas as subsequências de bits que correspondem a pontos de operação pelo menos parcialmente disponíveis (ou pontos de operação de saída) precisam ser sequências de bits em conformidade. Em tais modalidades, o dispositivo de codificação 104 pode determinar os pontos operacionais que são pelo menos parcialmente disponíveis (por exemplo, com base na informação em um conjunto de parâmetros, dados presentes em uma subsequência de bits, ou outra informação adequada disponível para o dispositivo de codificação 104). O dispositivo de codificação 104 só realizar apenas uma verificação de conformidade de sequência de bits nas subsequências de bits que correspondem a pontos operacionais pelo menos parcialmente disponíveis se unidades NAL VCL estiverem disponíveis (presentes na sequência de bits ou fornecidas por meios externos) para pelo menos uma camada incluída no conjunto de camadas correspondendo ao ponto de operação. No exemplo ilustrado na figura 3, o conjunto de camadas 3 pode ser considerado pelo menos parcialmente disponível se as unidades NAL VCL estiverem disponíveis para uma das camadas 0, 1 ou 2. Em alguns exemplos, uma exceção pode ser implementada para pontos operacionais para os quais o conjunto de camadas é o conjunto de camadas 0 (incluindo a camada de base apenas) quando a camada de base é fornecida por meios externos - caso no qual tais pontos operacionais são considerados nem pelo menos parcialmente disponíveis.
[0087] A figura 4 ilustra uma modalidade de umprocesso 400 de codificação de dados de vídeo. O processo 400 é implementado para realizar seletivamente uma verificação de conformidade de sequência de bits. Em alguns aspectos, o processo 400 pode ser realizado por um dispositivo de computação ou um aparelho, tal como o dispositivo de codificação 104 ilustrado na figura 1, ou o codificador 20 ilustrado na figura 9. Por exemplo, o dispositivo de computação ou aparelho pode incluir um codificador, ou um processador, microprocessador, microcomputador, ou outro componente de um codificador que seja configurado para realizar as etapas do processo 400.
[0088] O processo 400 é ilustrado como um fluxograma lógico, a operação do qual representa uma sequência de operações que pode ser implementada em hardware, instruções de computador ou uma combinação dos mesmos. No contexto de instruções de computador, as operações representam instruções executáveis por computador armazenadas em um ou mais meios de armazenamento legíveis por computador que, quando executados por um ou mais processadores, realizam as operações mencionadas. Geralmente, as instruções executáveis por computador incluem rotinas, programas, objetos, componentes, estruturas de dados, e similares que realizam as funções particulares ou implementam os tipos de dados particulares. A ordem na qual as operações são descritas não deve ser considerada limitadora, e qualquer número de operações descritas pode ser combinado em qualquer ordem e/ou em paralelo para implementar os processos.
[0089] Adicionalmente, o processo 400 pode ser realizado sob o controle de um ou mais sistemas de computador configurados com instruções executáveis e pode ser implementado como código (por exemplo, instruções executáveis, um ou mais programas de computador, ou um ou mais aplicativos) executando coletivamente um ou mais processadores, por hardware ou combinações dos mesmos. Como notado acima, o código pode ser armazenado em um meio de armazenamento legível por computador ou legível por máquina, por exemplo, na forma de um programa de computador compreendendo uma pluralidade de instruções executáveis por um ou mais processadores. O meio e armazenamento legível por computador ou legível por máquina pode ser não transitório.
[0090] Em 402, o processo 400 de codificação de dados de vídeo inclui a geração de uma sequência de bits de vídeo codificada compreendendo múltiplas amadas, a sequência de bits de vídeo codificada incluindo um conjunto de parâmetros definindo os parâmetros da sequência de bits de vídeo codificada. Em algumas modalidades, os dados de vídeo incluem ou são contidos em uma ou mais unidades de camada de abstração de rede de camada de codificação de vídeo (unidades NAL VCL). Em um exemplo, as unidades NAL VCL podem criar as camadas 0, 1, 2 e 3 ilustradas na figura 2. O conjunto de parâmetros pode incluir um conjunto de parâmetros de vídeo ou um conjunto de parâmetros de sequência.
[0091] Em 404, o processo 400 inclui a determinação de um ou mais parâmetros do conjunto de parâmetros que inclui a informação que descreve uma primeira subsequência de bits da sequência de bits de vídeo codificada e informação descrevendo uma segunda subsequência de bits da sequência de bits de vídeo codificada, a primeira subsequência de bits incluindo uma ou mais camadas com dados de vídeo, e a segunda subsequência de bits incluindo uma ou mais camadas sem quaisquer dados de vídeo. A primeira subsequência de bits pode corresponder a um primeiro conjunto de camadas e um primeiro ponto operacional correspondente, por exemplo, o conjunto de camadas 0, 1 ou 2 ilustrado na figura 2. A segunda subsequência de bits pode corresponder a um segundo conjunto de camadas e a um segundo ponto operacional correspondente, por exemplo, o conjunto de camadas 3 ilustrado na figura 2. Em algumas modalidades, os dados de vídeo de uma ou mais camadas da primeira subsequência de bits está presente na primeira subsequência de bits. Em algumas modalidades, os dados de vídeo de uma ou mais camadas da primeira subsequência de bits são fornecidos a partir de uma fonte externa além de um codificador utilizado para gerar a sequência de bits de vídeo codificada. Por exemplo, a primeira subsequência de bits pode corresponder ao conjunto de camadas 0, que inclui apenas uma camada de base. A camada de base, em alguns exemplos, pode ser fornecida para um decodificador a partir da fonte externa. A segunda subsequência de bits pode ser gerada a partir da sequência de bits de vídeo codificada pela remoção de pelo menos uma camada da sequência de bits de vídeo codificada. Por exemplo, um processo de extração de subsequência de bits pode ser utilizado para gerar a segunda subsequência de bits.
[0092] Em 406, o processo 400 inclui a realização de uma verificação de conformidade de sequência de bits na primeira subsequência de bits ou segunda subsequência de bits com base no fato de se pelo menos uma camada da primeira subsequência de bits ou segunda subsequência de bits inclui dados de vídeo. Por exemplo, o processo 400 pode incluir a realização da verificação de conformidade de sequência de bits na primeira subsequência de bits com base em uma ou mais camadas da primeira subsequência de bits possuindo dados de vídeo. Uma verificação de conformidade de sequência de bits não é realizada na segunda subsequência de bits com base em uma ou mais camadas da segunda subsequência de bits que não possui quaisquer dados de vídeo. De acordo, a verificação de conformidade de sequência de bits é realizada na primeira subsequência de bits visto que a uma ou mais camadas da primeira subsequência de bits não possuem quaisquer dados de vídeo, e uma verificação de desempenho de sequência de bits não é realizada na segunda subsequência de bits visto que uma ou mais camadas da segunda subsequência de bits não possuem quaisquer dados de vídeo.
[0093] Em algumas modalidades, o processo 400 inclui a realização da verificação de conformidade de sequência de bits na primeira subsequência de bits quando todas as uma ou mais camadas da primeira subsequência de bits possuem dados de vídeo. Em tais casos, a verificação de conformidade de sequência de bits só é realizada em uma subsequência de bits quando a subsequência de bits corresponde a um ponto operacional totalmente disponível, como descrito acima.
[0094] Em algumas modalidades, o processo 400 inclui a realização da verificação de conformidade de sequência de bits na primeira subsequência de bits quando pelo menos uma dentre uma ou mais das camadas da primeira subsequência de bits possui dados de vídeo. Em tais casos, a verificação de conformidade de sequência de bits é realizada apenas em uma subsequência de bits quando a subsequência de bits corresponder a pelo menos um ponto operacional parcialmente disponível, como descrito acima.
[0095] Em algumas modalidades, o processo 400 inclui a realização da verificação de conformidade de sequência de bits na primeira subsequência de bits com base no fato de se um valor mais alto de um identificador temporal de dados de vídeo na primeira subsequência de bits é igual a ou superior a um valor de um identificador temporal correspondente da primeira subsequência de bits. Em tais modalidades, o teste de conformidade de sequência de bits é realizado quando as unidades NAL VCL estão disponíveis (presentes na sequência de bits ou fornecidas por meios externos) para cada camada incluída no conjunto de camadas correspondente ao ponto operacional e também quando o valor mais alto de TemporalId de todas as unidades NAL VCL na sequência de bits é igual a ou superior ao ID temporal correspondente OpTid do ponto operacional.
[0096] Em algumas modalidades, a verificação de conformidade de sequência de bits inclui a realização de um teste normativo na primeira subsequência de bits para garantir que a primeira subsequência de bits se conforme às exigências de codificação necessárias para a primeira subsequência de bits a ser decodificada. O teste normativo pode ser realizado utilizando-se parâmetros de decodificador de referência hipotéticos, como descrito previamente.
[0097] Utilizando-se as técnicas descritas acima, uma verificação de conformidade de sequência de bits pode ser limitada às subsequências de bits que correspondem totalmente ou pelo menos parcialmente aos pontos operacionais. Tais técnicas permitem que os testes de conformidade necessários em subsequências vazias ou parcialmente vazias sejam evitados.
[0098] Em modalidades adicionais, as técnicas e sistemas são descritos para designação de um valor mínimo para uma estrutura de sintaxe em um conjunto de parâmetros. Como descrito previamente, as unidades NAL em uma sequência de bits codificada podem incluir conjuntos de parâmetros com informação de alto nível referente à sequência de bits de vídeo codificada, em adição à outra informação. Um conjunto de informações que pode ser incluído em um conjunto de parâmetros inclui parâmetros de perfil, tier e nível ou restrições dos mesmos. Os parâmetros de perfil, tier e nível podem ser incluídos em uma estrutura de sintaxe de um conjunto de parâmetros (por exemplo, um VPS ou SPS) e podem incluir uma estrutura de sintaxe de profile_tier_level(). Os perfis, tiers e níveis incluem restrições nas sequências de bits e limitam as capacidades necessárias para decodificar as sequências de bits. Os perfis, tiers e níveis também podem ser utilizados para indicar os pontos de interoperação entre implementações de decodificador individuais. Exemplos de parâmetros de perfil, tier e nível incluem restrições em ferramentas de codificação, características de sequência de bits, características de armazenador exigidas pelo dispositivo receptor para decodificar a camada de base ou outros parâmetros.
[0099] Um perfil define um subconjunto de características e limites que devem ser suportados por todos os decodificadores em conformidade com esse perfil. Os perfis definidos no padrão HEVC incluem um perfil Principal, um perfil Principal 10, um perfil Principal de Imagem Estática, perfis de extensões de faixa de Formato, e perfis de alto rendimento de extensões de faixa de Formato.
[0100] Níveis e tiers podem especificar restrições adicionais que um perfil deve seguir. Por exemplo, um nível de um tier pode especificar um conjunto de limites nos valores que podem ser obtidos pelos elementos de sintaxe de uma especificação de codificação determinada (por exemplo, HEVC). O mesmo conjunto de definições de tier e nível é utilizado com todos os perfis, mas implementações individuais podem suportar um tier diferente, e dentro de um tier, um nível diferente, para cada perfil suportado. Para qualquer perfil determinado, um nível de um tier corresponde geralmente a uma carga de processamento de decodificador em particular e capacidade de memória. Exemplos de restrições definidas por níveis e tiers podem incluir restrições no número máximo de fatias permitidas, número máximo de tiles permitidos, taxa de bit máxima, taxa de amostra máxima, tamanho de imagem máximo, razão de compressão mínima, capacidades de um armazenamento de imagens decodificadas, ou outras restrições adequadas. Tiers e níveis inferiores são mais restritos do que tiers e níveis superiores. De acordo com o padrão HEVC, dois tiers são definidos. Os tiers incluem um tier principal e um tier alto, com o tier principal sendo um tier inferior ao tier alto. O tier alto pode ser utilizado para aplicativos que exigem uma taxa de bits mais alta. Um decodificador que se conforma a um tier/nível determinado deve ser capaz de decodificar toda as sequências de bits que são codificadas para esse tier/nível e para todos os tiers/níveis inferiores. Exemplos específicos de limites de perfil tier e nível podem ser encontrados no padrão de codificação HEVC, disponível a partir de http://phenix.it- sudparis.cu/jct/docenduser/documents/17Valencia/wg11/JCT VC-Q1003-v1.zip.
[0101] Em algumas modalidades, as técnicas e sistemas são descritos para designação de um valor mínimo para uma estrutura de sintaxe de perfil, tier, nível em um conjunto de parâmetros. O valor mínimo pode ser designado quando determinadas situações ocorrem. Por exemplo, um codificador (por exemplo, dispositivo de codificação 104, codificador 20 ou similar) que codifica os dados de vídeo de acordo com um primeiro protocolo de codificação podem gerar uma sequência de bits de vídeo codificada. O codificador pode fornecer a sequência de bit de vídeo codificada para um decodificador (por exemplo, um dispositivo de decodificação 112, decodificador 30, ou similar) em um dispositivo de recepção. Em alguns exemplos, o dispositivo de recepção pode receber a sequência de bits de vídeo codificada diretamente do codificador. Em alguns exemplos, o dispositivo de recebimento pode receber a sequência de bits de vídeo codificada de uma entidade de rede, tal como um servidor, um elemento de rede ciente de mídia (MANE), um editor/mecanismo de emenda de vídeo, ou outro dispositivo similar. Uma camada de base de dados de vídeo pode ser codificada de acordo com um segundo protocolo de codificação que é diferente do primeiro protocolo de codificação. Em um exemplo, o primeiro protocolo de codificação pode ser baseado no padrão HEVC, e o segundo protocolo de codificação pode ser baseado no padrão AVC. A camada de base pode ser fornecida para o decodificador ou para outro decodificador no mesmo dispositivo de recepção por uma fonte externa além do codificador que gerou a primeira sequência de bits de vídeo codificada utilizando o primeiro protocolo de codificação. Em um exemplo, um codec de múltiplos padrões pode receber a sequência de bits codificada (codificada utilizando o primeiro protocolo de codificação) e a camada de base (codificada utilizando o segundo protocolo de codificação). Em outro exemplo, um primeiro codec pode receber e decodificar a sequência de bits codificada, e um segundo codec pode receber e decodificar a camada de base. Um codificador que codifica os dados de vídeo utilizando o segundo protocolo de codificação pode fornecer a camada de base para o dispositivo de recepção (por exemplo, enviado para o dispositivo de recepção diretamente ou através de uma entidade de rede).
[0102] Um conjunto de parâmetros (por exemplo, um VPS) pode ser fornecido com sequência de bits de vídeo codificada de acordo com o primeiro protocolo de codificação. O conjunto de parâmetros de vídeo pode incluir informação relacionada com os dados de vídeo na sequência de bits de vídeo codificada. Uma estrutura de sintaxe pode estar presente no VPS que inclui a informação referente a uma camada de base da sequência de bits de vídeo codificada, mesmo quando a camada de base é fornecida externamente por uma fonte externa (caso no qual uma camada de base codificada utilizando-se o primeiro protocolo de codificação pode não ser fornecida). A estrutura de sintaxe pode incluir o elemento de sintaxe de perfil, tier e nível descrito acima. Quando a camada de base é fornecida externamente, uma primeira estrutura de sintaxe profile_tier_level() designada para a camada de base no VPS é insignificante e é ignorada pelos decodificadores. No entanto, a remoção da estrutura de sintaxe não é uma opção visto que a sintaxe foi especificada em HEVC versão 1, e a remoção causaria problemas de compatibilidade de retrocesso. Por essas razões, a estrutura de sintaxe de perfil, tier, nível para a camada de base precisa ser mantida no VPS. De acordo, um codificador (por exemplo, o dispositivo de codificação 104, codificador 20 ou similar) pode designar um valor mínimo para a estrutura de sintaxe de perfil, tier, nível para a camada de base quando for determinado que a camada de base deve ser fornecida para o decodificador pela fonte externa além do codificador utilizado para gerar a sequência de bits de vídeo codificada. Um elemento de sintaxe no VPS pode incluir uma restrição que sinaliza para o codificador a designação do valor mínimo. Pela designação de um valor mínimo, o número de bits utilizado pela estrutura de sintaxe é minimizado. Em um exemplo, a estrutura de sintaxe pode precisar ter bits todos iguais a 0, garantindo, assim, que um número mínimo de bits seja utilizado pela estrutura de sintaxe.
[0103] A figura 5 ilustra um ambiente ilustrativo 500 no qual um valor mínimo pode ser designado para uma estrutura de sintaxe de perfil, tier, nível. O ambiente 500 inclui um dispositivo de codificação HEVC 502 e um dispositivo de codificação AVC 506 que gera sequências de bits de vídeo codificadas utilizando diferentes padrões de codificação de vídeo. Os versados na técnica apreciarão que as técnicas descritas aqui se aplicam a outros dispositivos de codificação que podem utilizar diferentes padrões de codificação de HEVC ou AVC. O dispositivo de codificação HEVC 502 pode gerar uma sequência de bits de vídeo em conformidade com HEVC que inclui uma ou mais camadas de melhoria, mas não a camada base. O dispositivo de codificação AVC 506 pode gerar uma sequência de bits de vídeo em conformidade com AVC que inclui apenas uma camada de base. Quando o dispositivo de codificação HEVC 502 gera uma ou mais camadas de melhoria, a camada de base gerada pelo dispositivo de codificação AVC 506 pode ser utilizada para referência de previsão intercamada.
[0104] Em um exemplo, o dispositivo de decodificação HEVC 504 pode receber as camadas de melhoria do dispositivo de codificação HEVC 502, e o dispositivo de decodificação AVC 508 pode receber a camada de base do dispositivo de codificação AVC 506. Em outro exemplo, uma primeira entidade de rede (por exemplo, um editor ou um mecanismo de emenda) pode emendar as camadas de melhoria do dispositivo de codificação HEVC 502 juntamente com a camada de base do dispositivo de codificação AVC 506. A primeira entidade de rede pode realizar a emenda de uma forma sincronizada temporalmente com a informação de tempo de sistema sendo adicionada (por exemplo, em um formato de arquivo de acordo com o formato de arquivo de mídia de base ISO). Uma segunda entidade de rede (por exemplo, um receptor, tal como o dispositivo de recebimento 510, um analisador de formato de arquivo, ou outra entidade de rede) pode passar a sequência de bits de uma ou mais camadas de melhoria para o dispositivo de decodificação HEVC 504 e a sequência de bits da camada de base para o dispositivo de decodificação AVC 506. Em outro exemplo, a sequência de bits da camada de base não é fornecida para o dispositivo de decodificação HEVC 504. Em vez disso, as imagens decodificadas da camada de base são fornecidas para o dispositivo de decodificação HEVC 504 (a partir do dispositivo de decodificação AVC 508) para referência de previsão intercamada. Do ponto de vista do dispositivo de decodificação HEVC 504, a camada de base é externamente fornecida por uma fonte externa. Em algumas modalidades, o dispositivo de decodificação HEVC 504 e o dispositivo de decodificação AVC 508 são decodificadores separados. Em algumas modalidades, o dispositivo de decodificação HEVC 504 e o dispositivo de decodificação AVC 508 são parte de um decodificador de múltiplos padrões que podem decodificar sequências de bits HEVC e AVC.
[0105] O dispositivo de codificação HEVC 502 pode fornecer um conjunto de parâmetros de vídeo (VPS) 512 com a sequência de bits codificada (por exemplo, em uma ou mais unidades NAL não VCL). O dispositivo de codificação HEVC 502 pode determinar que a camada de base deve ser fornecida por uma fonte externa além do dispositivo de codificação HEVC 502. Por exemplo, o dispositivo de codificação HEVC 502 pode determinar que um ou mais indicadores no VPS 512 são configurados para um valor indicando que a camada de base é fornecida pela fonte externa. Em algumas modalidades, um ou mais indicadores podem incluir um vps_base_layer_internal_flag. Em algumas modalidades, um ou mais indicadores podem incluir um vps_base_layer_available_flag. Em algumas modalidades, um ou mais indicadores incluem ambos vps_base_layer_internal_flag e vps_base_layer_available_flag. Em um exemplo, se vps_base_layer_internal_flag for igual a 1 e vps_base_layer_available_flag for igual a 1, a camada de base está presente na sequência de bits HEVC. Em outro exemplo, e vps_base_layer_internal_flag for igual a 0 e vps_base_layer_available_flag for igual a 1, a camada de base é fornecida por um meio externo não especificado na especificação HEVC. Em outro exemplo, se vps_base_layer_internal_flag for igual a 1 e vps_base_layer_available_flag for igual a 0, a camada de base não está disponível (nem presente na sequência de bits HEVC, nem fornecida por meios externos), mas VPS inclui informação da camada de base como se estivesse presente na sequência HEVC. Em outro exemplo, se vps_base_layer_internal_flag for igual a 0 e vps_base_layer_available_flag for igual a 0, a camada de base não está disponível (nem presente na sequência de bits HEVC, nem fornecida pelos meios externos), mas VPS inclui informação da camada de base como se fosse fornecida por um meio externo não especificado na especificação HEVC.
[0106] Com base na determinação de que a camada de base deve ser fornecida por uma fonte externa (por exemplo, vps_base_layer_internal_flag é igual a 0 e vps_base_layer_available_flag é igual a 1), o dispositivo de codificação HEVC 502 designa um valor mínimo para uma estrutura de sintaxe de perfil, tier, nível 514 que está presente no VPS 512. A estrutura de sintaxe de perfil, tier, nível 514 descreve um ou mais perfis, níveis e tiers para a estação base da sequência de bits HEVC. A designação do valor mínimo pode incluir a designação de todos os valores iguais a 0 para os bits da estrutura de sintaxe de perfil, tier e nível 514. O dispositivo de codificação HEVC 502 pode então enviar o VPS 512 com a sequência de bits codificada para o dispositivo de decodificação HEVC 504.
[0107] A figura 6 ilustra uma modalidade de um processo 600 de codificação de dados de vídeo. O processo 600 é implementado para designar um valor mínimo para uma estrutura de sintaxe em um conjunto de parâmetros. Em alguns aspectos, o processo 600 pode ser realizado por um dispositivo de computação ou um aparelho, tal como o dispositivo de codificação 104 ilustrado na figura 1 ou o codificador 20 ilustrado na figura 9. Por exemplo, o dispositivo de computação ou aparelho pode incluir um codificador, ou um processador, microprocessador, microcomputador, ou outro componente de um codificador que é configurado para realizar as etapas do processo 600.
[0108] O processo 600 é ilustrado como um fluxograma lógico, a operação do qual representa uma sequência de operações que pode ser implementada em hardware, instruções de computador, ou uma combinação dos mesmos. No contexto de instruções de computador, as operações representam as instruções executáveis por computador armazenadas em um ou mais meios de armazenamento legíveis por computador que, quando executadas por um ou mais processadores, realizam as operações mencionadas. Geralmente, as instruções executáveis por computador incluem rotinas, programas, objetos, componentes, estruturas de dados, e similares que realizam as funções particulares ou implementam os tipos de dados em particular. A ordem na qual as operações são descritas não deve ser considerada uma limitação e qualquer número de operações descritas pode ser combinado em qualquer ordem e/ou em paralelo para implementar os processos.
[0109] Adicionalmente, o processo 600 pode ser realizado sob o controle de um ou mais sistemas de computador configurados com instruções executáveis e pode ser implementado como um código (por exemplo, instruções executáveis, um ou mais programas de computador, ou um ou mais aplicativos) sendo executados coletivamente em um ou mais processadores, por hardware, ou combinações dos mesmos. Como notado acima, o código pode ser armazenado em um meio de armazenamento legível por computador ou legível por máquina, por exemplo, na forma de um programa de computador compreendendo uma pluralidade de instruções executáveis por um ou mais processadores. O meio de armazenamento legível por computador ou legível por máquina pode ser não transitório.
[0110] Em 602, o processo 600 de codificação de dados de vídeo inclui a geração, por um codificador, uma sequência de bits de vídeo codificada de acordo com um primeiro protocolo de codificação, a sequência de bits de vídeo codificada incluindo uma ou mais camadas de melhoria e um conjunto de parâmetros de vídeo definindo parâmetros da sequência de bits de vídeo codificada. Em algumas modalidades, um dispositivo de codificação pode gerar a sequência de bits de vídeo codificada para incluir uma camada de base e uma ou mais camadas de melhoria.
[0111] Em 604, o processo 600 inclui a determinação de que uma camada de base deve ser fornecida para um dispositivo de decodificação por uma fonte externa e não deve ser fornecida como parte da sequência de bits de vídeo codificada. A fonte externa é uma fonte além do codificador que gerou a sequência de bits de vídeo codificada de acordo com o primeiro protocolo de codificação. O dispositivo de decodificação pode operar de acordo com o primeiro protocolo de codificação. Em algumas modalidades, a camada de base fornecida pela fonte externa é codificada de acordo com um segundo protocolo de codificação que é diferente do primeiro protocolo de codificação. Por exemplo, o primeiro protocolo de codificação pode incluir um protocolo de codificação de vídeo de alta eficiência, e o segundo protocolo de codificação pode incluir um protocolo de codificação de vídeo avançado. Em um exemplo, um codificador configurado para gerar uma sequência de bits de acordo com o segundo protocolo de codificação pode gerar a camada de base que deve ser fornecida para o dispositivo de decodificação. Um dispositivo de decodificação operando de acordo com o segundo protocolo de codificação pode receber a camada de base do codificador operando de acordo com o segundo protocolo de codificação e pode fornece a camada de base para o dispositivo de decodificação operando de acordo com o primeiro protocolo de codificação. Em outro exemplo, uma primeira entidade de rede (por exemplo, um editor ou mecanismo de emenda) pode unir uma ou mais camadas de melhoria do codificador operando de acordo com o primeiro protocolo juntamente com a camada de base a partir do codificador operando de acordo com o segundo protocolo. Uma segunda entidade de rede (por exemplo, um receptor ou um analisador de formato de arquivo) pode analisar a sequência de bits de uma ou mais camadas de melhoria para um dispositivo de decodificação operando de acordo com o primeiro protocolo de codificação, e pode passar a sequência de bits da camada de base para um dispositivo de decodificação operando de acordo com o segundo protocolo de codificação. Em algumas modalidades, a determinação de que a camada de base deve ser fornecida pela fonte externa inclui a determinação de que um indicador é configurado para um valor indicando que a camada de base é fornecida pela fonte externa. Por exemplo, como descrito acima, o indicador pode incluir um vps_base_layer_internal_flag, um vps_base_layer_available_flag, ou ambos os indicadores podem ser utilizados para indicar que a camada de base deve ser fornecida pela fonte externa.
[0112] Em 606, o processo 600 inclui a designação de um valor mínimo para uma estrutura de sintaxe no conjunto de parâmetros de vídeo quando for determinado que a camada de base deve ser fornecida pela fonte externa, a estrutura de sintaxe definindo os parâmetros de perfil, tier e nível para a camada de base. Em algumas modalidades, o valor mínimo inclui um valor de 0 para todos os bits da estrutura de sintaxe. Em algumas modalidades, os parâmetros de perfil, tier e nível incluem restrições na sequência de bits de vídeo codificada e limita as capacidades necessárias para decodificar a sequência de bits de vídeo codificada. Por exemplo, os parâmetros de perfil, tier e nível podem especificar as restrições em ferramentas de codificação, características de sequência de bits ou características de armazenador necessárias pelo dispositivo de decodificação para decodificar a camada de base, ou outros parâmetros. Os parâmetros de perfil, tier e nível podem ser incluídos em uma estrutura de sintaxe de um conjunto de parâmetros (por exemplo, um VPS ou SPS), e pode incluir uma estrutura de sintaxe profile_tier_level().
[0113] Utilizando as técnicas descritas acima, a largura de banda e outra transmissão e overhead de processamento é reduzida pela exigência de um número de bits mínimo a ser designado para estruturas de sintaxe desnecessárias em determinadas situações. Tais técnicas minimizam o número de bits utilizados, por exemplo, a estrutura de sintaxe de perfil, tier e nível.
[0114] Em modalidades adicionais, as técnicas e sistemas são descritos para restringir parâmetros de formato de representação para um conjunto de parâmetros. A figura 7 ilustra um exemplo de um conjunto de parâmetros de vídeo (VPS) 706 e um conjunto de parâmetros de sequência (SPS) 702. SPS 702 pode ser SPS ativo para uma ou mais camadas em uma sequência de bits de vídeo codificada. SPS 702 inclui parâmetros de formato de representação 704. SPS 702 pode ser aplicado a mais de uma camada, e os parâmetros de formato de representação 704 são aplicados a todas as camadas às quais SPS 702 e aplica. Em algumas modalidades, um SPS se aplica a apenas uma camada e, dessa forma, pode ser constituído de múltiplos SPS ativos para múltiplas camadas em um momento particular. Um VPS pode incluir múltiplos conjuntos de parâmetros de formato de representação, e cada um desses conjuntos pode ser designado para uma ou mais camadas. Por exemplo, o VPS 706 inclui parâmetros de formato de representação 708 que são aplicados a uma camada de base com ID de camada = 0, parâmetros de formato de representação 710 que são aplicados a uma camada de melhoria com ID de camada = 1, e parâmetros de formato de representação 712 que são aplicados a uma camada de melhoria com ID de camada = n, indicando que qualquer número de camadas e parâmetros de formato de representação correspondentes podem existir na sequência de bits codificada.
[0115] Os parâmetros de formato de representação 704, 708, 710, 712 descrevem várias características de dados de vídeo (por exemplo, parâmetros de resolução, profundidade de bit, largura de imagem, formato de cores ou outros parâmetros de formato de representação). Os parâmetros de formato de representação 708, 710, 712 sinalizados no VPS 706 podem fornecer valores máximos para os parâmetros e podem ser utilizados na negociação de sessão entre um codificador e um dispositivo e um decodificador e outro dispositivo, entre outras utilizações. A negociação de sessão pode ser realizada entre um codificador e um decodificador de diferentes dispositivos para concordar em um ponto de operação (ou ponto de operação de saída) para determinar uma resolução máxima, taxa de bit ou para concordar em outra característica para incluir na sequência de bits codificada. Os parâmetros de formato de representação 704 sinalizados no SPS 706 (ou outros parâmetros de formato de representação sinalizados em outros SPSs) podem fornecer valores de parâmetros atualizados para os fornecidos em VPS.
[0116] Uma restrição pode ser fornecida indicando que quando os parâmetros de formato de representação para uma camada são atualizados em um SPS, os parâmetros de formato de representação atualizados não devem ser maiores do que os parâmetros de formato de representação correspondentes para essa camada que é designada em VPS. O objetivo da restrição acima é garantir que os valores dos parâmetros de formato de representação que são sinalizados para cada camada no VPS sejam os valores maiores desses parâmetros que um decodificador deve antecipar para essa camada. Isso informa o decodificador quanta memória deve ser alocada para manusear as imagens de cada camada, e é útil na negociação de sessão para determinar se um decodificador pode decodificar uma sequência de bits. No entanto, em algumas modalidades, a restrição se aplica apenas às camadas que possuem um ID de camada (por exemplo, nuh_layer_id) maior do que 0 (apenas camadas além da camada de base). Para a camada de base (ID de camada = 0), uma restrição pode não existir que restrinja o valor dos parâmetros de formato de representação sinalizados no SPS ativo para a camada de base. Os valores de parâmetros de formato de representação sinalizados no SPS ativo para a camada de base podem, dessa forma, ser superiores aos valores dos parâmetros de formato de representação correspondentes que são designados para a camada de base no VPS. Problemas podem surgir se a restrição não for aplicada à camada de base. Por exemplo, os parâmetros de formato de representação 708 em VPS 706 podem ser utilizados durante a negociação de sessão com um decodificador e, posteriormente, o SPS 702 pode incluir os parâmetros de formato de representação para atualizar uma resolução, taxa de bit ou outra característica maior para a camada de base. Em tais casos, o resultado da negociação anterior não se manterá e o processo de decodificação pode falhar. Isso também pode eliminar a finalidade de restrição de atualização de formato de representação para outras camadas. Adicionalmente, quando a informação de tamanho de imagem no VPS em vez de SPS é utilizado para definições de nível, permitindo uma atualização do tamanho da imagem para que seja maior do no VPS, isso resultaria em uma situação na qual os decodificadores em conformidade não têm garantia de poderem decodificar a sequência de bits.
[0117] De acordo, as técnicas e sistemas são descritos para restringir os parâmetros de formato de representação sinalizados em um conjunto de parâmetros para a camada de base. Por exemplo, uma restrição pode ser especificada exigindo que os valores dos parâmetros de formato de representação 704 sinalizados no SPS 702 (ou outros parâmetros de formato de representação sinalizados em outros SPSs) sejam inferiores a ou iguais aos valores dos parâmetros de formato de representação 708, 710 712 sinalizados no VPS 706. A restrição pode limitar um codificador a gerar valores para os parâmetros de formato de representação 704 no SPS 702 designados para a camada de base para sejam inferiores a ou iguais aos valores correspondentes nos parâmetros de formato de representação 708 que são designados para a camada de base no VPS 706. Por exemplo, o codificador pode fornecer atualizações de parâmetro em um ou mais conjuntos de parâmetros de formato de representação em um ou mais SPSs (por exemplo, os parâmetros de formato de representação 704 no SPS 702), mas pode limitar os valores dos parâmetros de acordo com a restrição. Um exemplo de restrição para os parâmetros de formato de representação de camada de base em um SPS pode incluir:
[0118] Quando um SPS com nuh_layer_id igual a0 é o SPS ativo de uma camada com nuh_layer_id igual a 0, isso é uma exigência de conformidade de sequência de bits que o valor de elementos de sintaxe chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8 ou bit_depth_chroma_minus8 presentes em SPS devam ser inferiores a ou iguais a chroma_format_vps_idc, separate_colour_plan_vps_flag, pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8, ou bit_depth_vps_chroma_minus8, respectivamente, da estrutura de sintaxe vps_rep_format_idx[0]-th rep_format() no VPS ativo.
[0119] Os elementos de sintaxe chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8, ou bit_depth_chroma_minus8 incluem vários parâmetros em um conjunto de parâmetros de formato de representação para SPS. Os elementos de sintaxe chroma_format_vps_idc, separate_colour_plane_vps_flag, pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8, ou bit_depth_vps_chroma_minus8 incluem vários parâmetros em um conjunto de parâmetros de formato de representação para VPS.
[0120] A figura 8 ilustra uma modalidade de um processo 800 de codificação de dados de vídeo. O processo 800 é implementado para restringir os parâmetros de formato de representação para um conjunto de parâmetros. Em alguns aspectos, o processo 800 pode ser realizado por um dispositivo de computação ou um aparelho, tal como o dispositivo de codificação 104 ilustrado na figura 1 ou o codificador 20 ilustrado na figura 9. Por exemplo, o dispositivo de computação ou aparelho pode incluir um codificador, ou um processador, microprocessador, microcomputador ou outro componente de um codificador que seja configurado para realizar as etapas do processo 800.
[0121] O processo 800 é ilustrado como um fluxograma lógico, a operação do qual representa uma sequência de operações que podem ser implementadas em hardware, instruções de computador, ou uma combinação dos mesmos. No contexto de instruções de computador, as operações representam instruções executáveis por computador armazenadas em um ou mais meios de armazenamento legíveis por computador que, quando executadas por um ou mais processadores, realizam as operações mencionadas. Geralmente, as instruções executáveis por computador incluem rotinas, programas, objetos, componentes, estruturas de dados, e similares que realizam funções particulares ou implementam tipos de dados particulares. A ordem na qual as operações são descritas não deve ser considerada uma limitação, e qualquer número de operações descritas pode ser combinado em qualquer ordem e/ou em paralelo para implementar os processos.
[0122] Adicionalmente, o processo 800 pode ser realizado sob o controle de um ou mais sistemas de computador configurados com instruções executáveis e podem ser implementados como código (por exemplo, instruções executáveis, um ou mais programas de computador, ou um ou mais aplicativos) executando coletivamente em um ou mais processadores, por hardware, ou combinações dos mesmos. Como notado acima, o código pode ser armazenado em um meio de armazenamento legível por computador ou legível por máquina, por exemplo, na forma de um programa de computador compreendendo uma pluralidade de instruções executáveis por um ou mais processadores. O meio de armazenamento legível por computador ou legível por máquina podem ser não transitórios.
[0123] Em 802, o processo 800 de codificação de dados de vídeo inclui a geração de uma sequência de bits de vídeo codificada compreendendo múltiplas camadas, a sequência de bits de vídeo codificada incluindo um ou mais conjuntos de parâmetros de sequência e um conjunto de parâmetros de vídeo. Em um exemplo, um ou mais conjuntos de parâmetros de sequência incluem SPS 702 ilustrado na figura 7 e o conjunto de parâmetros de vídeo inclui VPS 706.
[0124] Em 804, o processo 800 inclui a geração, de acordo com uma restrição, de um ou mais parâmetros de formato de representação para um conjunto de parâmetros de sequência designado para uma camada de base da sequência de bits de vídeo codificada, a restrição limitando os valores de um ou mais parâmetros de formato de representação no conjunto de parâmetros de sequência para ser inferior a ou igual aos valores dos parâmetros de formato de representação correspondentes que são designados para a camada de base no conjunto de parâmetros de vídeo. O um ou mais parâmetros de formato de representação no conjunto de parâmetros de sequência podem ser sinalizados em um ou mais elementos de sintaxe HEVC. Em algumas modalidades, um ou mais parâmetros de formato de representação incluem um ou mais dentre resolução, profundidade de bits, largura de imagem, formato de cor, ou outros parâmetros de formato. Em algumas modalidades, um ou mais parâmetros de formato de representação sinalizados no conjunto de parâmetros de vídeo são utilizados para negociação de sessão com um ou mais decodificadores, como descrito previamente.
[0125] Em algumas modalidades, o processo inclui a atualização de um ou mais conjuntos de parâmetros de sequência de acordo com a restrição. Por exemplo, um aparelho, tal como um codificador, pode fornecer atualizações de parâmetros de formato de representação em um conjunto de parâmetros de sequência, mas pode limitar os valores dos parâmetros de acordo com a restrição.
[0126] Utilizando-se as técnicas descritas acima, os parâmetros de formato de representação para uma camada de base sinalizada em um SPS podem ser restringidos de acordo com os parâmetros de formato de representação em um VPS. Tais técnicas permitem que os resultados das negociações de sessão sejam mantidos, resultando em processos de codificação confiáveis. Adicionalmente, quando a informação de tamanho de imagem no VPS em vez de SPS é utilizada para definições de nível, uma situação na qual os decodificadores de conformidade não podem, necessariamente, decodificar a sequência de bits é evitada visto que uma atualização de um tamanho de imagem não pode ser superior à de VPS.
[0127] Em modalidades adicionais, outras técnicas e sistemas são descritos aqui. Por exemplo, como descrito previamente, algumas camadas para as quais a informação é incluída no VPS podem estar ausentes na sequência de bits e podem não ser indicadas no VPS (por exemplo, um ID de camada para essa camada pode não estar presente no VPS). Em um exemplo, uma camada de base HEVC pode não estar disponível (por exemplo, nem em uma sequência de bits de vídeo codificada por HEVC nem fornecida por meios externos). VPS pode indicar que a camada de base não está presente utilizando, por exemplo, vps_base_layer_internal_flag, vps_base_layer_available_flag, ou ambos os indicadores. No entanto, visto que algumas camadas para as quais a informação é incluída no VPS podem estar ausentes na sequência de bits e não indicadas no VPS de forma alguma, não existe uma razão suficiente para indicar no VPS que uma camada de base não está disponível. Em algumas modalidades, vps_base_layer_available_flag e/ou vps_base_layer_internal_flag podem ser utilizados somente na especificação HEVC para indicar uma exigência para os meios externos fornecerem o valor de TargetOlsIdx. No entanto, está fora do escopo de uma especificação de codificação de vídeo a especificação de tais exigências para meios externos, e existem muitas outras exigências similares para os meios externos que não são especificadas em HEVC, SVC (ou SHVC) e MVC (ou MV-HEVC). Um indicador pode ser utilizado pelos decodificadores HEVC de legado para ignorar as sequências de bits com esse indicador igual a 0. Adicionalmente, quando a informação em um VPS é utilizada para negociação de sessão para concordar em um ponto de operação (saída), saber qual dos pontos de operação (saída) estão de fato totalmente disponíveis pode ser útil. Tal informação seria útil também para um verificador de conformidade de sequência de bits para testar apenas os pontos de operação (saída) que estão totalmente disponíveis (como descrito previamente). No entanto, um mecanismo para sinalização de tal informação não está disponível no padrão HEVC.
[0128] Em algumas modalidades, as técnicas para se solucionar os problemas acima podem incluir remoção de vps_base_layer_available_flag do VPS, designar o bit atual para vps_base_layer_available_flag para ser reservado para outro uso, e adicionar uma mensagem de informação de melhoria suplementar (SEI) para o VPS para indicar quais pontos de operação estão totalmente disponíveis (caso no qual pode ser determinado que não estão totalmente disponíveis) ou quais pontos de operação não estão totalmente disponíveis (caso no qual pode ser determinado os que estão disponíveis). A partir da mensagem SEI adicionada, pode ser determinado se a camada de base está disponível. Em outras modalidades,vps_base_layer_available_flag pode ser incluído na mensagem SEI. Em outras modalidades, a mensagem SEI pode ser fornecida na sequência de bits ou através de meios externos, de forma similar à forma para conjuntos de parâmetros e mensagens SEI relacionadas com HRD. A informação incluída na mensagem SEI pode ser utilizada na especificação dos testes de conformidade de sequência de bits para testar apenas esses pontos de operação (saída) que estiverem totalmente disponíveis. Em outras modalidades, a mensagem SEI pode indicar quais pontos de operação estão pelo menos parcialmente disponíveis ou quais pontos de operação não estão pelo menos parcialmente disponíveis.
[0129] Em modalidades adicionais, outras técnicas e sistemas são descritos aqui. Por exemplo, extensões SVC (ou SHVC) e MVC (ou MV-HEVC) de HEVC permitem que um conjunto de camadas de saída inclua uma camada que ao é nem uma camada de saída nem diretamente ou indiretamente necessária para a decodificação de uma camada de saída, e os parâmetros HRD utilizados para a definição de conformidade levam em consideração tais camadas desnecessárias. Para se garantir que a sequência de bits enviada para o decodificador esteja em conformidade, tais camadas desnecessárias precisariam ser enviadas para o decodificador, o que resulta em um grande desperdício de largura de banda. Em algumas modalidades, as técnicas para se solucionar esse problema incluem impedir que os conjuntos de camada de saída incluam uma camada que não é nem uma camada de saída do conjunto de camadas de saída, nem necessária direta ou indiretamente para a decodificação da camada de saída do conjunto de camadas de saída.
[0130] Em algumas modalidades, as modificações podem ser feitas ao padrão de codificação HEVC. Por exemplo, a sintaxe HEVC pode ser modificada para especificar o uso de um bit em general_reserved_zero_44bits para vps_base_layer_available_flag, designar o bit atual para vps_base_layer_available_flag a ser reservado ou para outro uso, e mudar a semântica de general_reserved_zero_44bits na especificação HEVC para exigir que os decodificadores ignorem a sequência de vídeo codificada quando general_reserved_zero_44bits não for igual a 0.
[0131] As técnicas de codificação discutidas aqui podem ser implementadas em um sistema de codificação e decodificação de vídeo ilustrativo (por exemplo, sistema 100). Um sistema inclui um dispositivo fonte que fornece dados de vídeo codificados para serem decodificados posteriormente por um dispositivo de destino. Em particular, o dispositivo fonte fornece dados de vídeo para o dispositivo de destino através de um meio legível por computador. O dispositivo fonte e o dispositivo de destino podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores desktop, computadores notebook (isso é, laptop), computadores tablet, caixas de decodificação, aparelhos telefônicos tal como os chamados "smartphones", os chamados "smartpads", televisões, câmeras, dispositivos de exibição, aparelhos de mídia digital, consoles de jogos, dispositivo de sequenciamento de vídeo ou similares. Em alguns casos, o dispositivo fonte e o dispositivo de destino podem ser equipados para comunicação sem fio.
[0132] O dispositivo de destino pode receber os dados de vídeo codificado a serem decodificados através do meio legível por computador. O meio legível por computador pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo fonte para o dispositivo de destino. Em um exemplo, o meio legível por computador pode compreender um meio de comunicação para permitir que o dispositivo fonte transmita os dados de vídeo codificados diretamente para o dispositivo de destino em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitido para o dispositivo de destino. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fio, tal como espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo fonte para o dispositivo de destino.
[0133] Em alguns exemplos, os dados codificados podem ser enviados a partir da interface de saída para um dispositivo de armazenamento. De forma similar, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer um dentre uma variedade de mídia de armazenamento de dados distribuída ou acessada localmente tal como disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para o armazenamento de dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo fonte. O dispositivo de destino pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento através de sequenciamento ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino. Servidores de arquivo ilustrativos incluem um servidor da rede (por exemplo, um sítio da rede), um servidor FTP, dispositivos de armazenamento anexados à rede (NAS), ou um acionador de disco local. O dispositivo de destino pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo a conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar os dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão de sequenciamento, uma transmissão de download, ou uma combinação de ambos.
[0134] As técnicas dessa descrição não são necessariamente limitadas aos aplicativos ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo para suportar qualquer um dentre uma variedade de aplicativos de multimídia, tal como difusões de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo de sequenciamento em Internet, tal como sequenciamento adaptativo dinâmico através de HTTP (DASH), 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 alguns exemplos, o sistema pode ser configurado para suportar transmissão de vídeo de via única ou duas vias para suportar os aplicativos tal como sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo, e/ou vídeo telefonia.
[0135] Em um exemplo, o dispositivo fonte inclui uma fonte de vídeo, um codificador de vídeo e uma interface de saída. O dispositivo de destino pode incluir uma interface de entrada, um decodificador de vídeo, e um dispositivo de exibição. O codificador de vídeo do dispositivo fonte pode ser configurado para aplicar as técnicas descritas aqui. Em outros exemplos, um dispositivo fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo fonte pode receber dados de vídeo de uma fonte de vídeo externa, tal como uma câmera externa. Da mesma forma, o dispositivo de destino pode interfacear com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0136] O sistema ilustrativo acima é meramente um exemplo. As técnicas de processamento de dados de vídeo em paralelo podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Apesar de geralmente as técnicas dessa descrição serem realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador/decodificador de vídeo tipicamente referido como "CODEC". Ademais, as técnicas dessa descrição também podem ser realizadas por um pré-processador de vídeo. O dispositivo fonte e o dispositivo de destino são meramente exemplos de tais dispositivos de codificação nos quis o dispositivo fonte gera os dados de vídeo codificados para transmissão para o dispositivo de destino. Em alguns exemplos, os dispositivos fonte e de destino podem operar de uma forma substancialmente simétrica de modo que cada um dos dispositivos inclua componentes de codificação e decodificação de vídeo. Dessa forma, os sistemas ilustrativos podem suportar transmissão de vídeo de via única ou duas vias entre os dispositivos de vídeo, por exemplo, para sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo, ou vídeo telefonia.
[0137] A fonte de vídeo pode incluir um dispositivo de captura de vídeo, tal como uma câmera 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 provedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo pode gerar dados com base em gráficos de computador como o vídeo fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo for uma câmera de vídeo, o dispositivo fonte e o dispositivo de destino podem formar os chamados telefones câmera ou vídeo telefones. Como mencionado acima, no entanto, as técnicas descritas nessa descrição podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicativos sem e/ou com fio. Em cada caso, o vídeo capturado, pré-capturado, ou gerado por computador pode ser codificado pelo codificador de vídeo. A informação de vídeo codificado pode então ser enviada pela interface de saída para o meio legível por computador.
[0138] Como notado o meio legível por computador pode incluir mídia transiente, tal como uma transmissão de rede com fio ou difusão sem fio, ou mídia de armazenamento (isso é, mídia de armazenamento não transitória), tal como um disco rígido, acionador flash, disco compacto, disco de vídeo digital, disco Blu-ray, ou outra mídia legível por computador. Em alguns exemplos, um servidor de rede (não ilustrado) pode receber dado de vídeo codificados do dispositivo fonte e fornecer dados de vídeo codificados para o dispositivo de destino, por exemplo, através da transmissão de rede. De forma similar, um dispositivo de computação de uma instalação de produção de meio, tal como uma instalação de estampagem de disco, pode receber os dados de vídeo codificados a partir do dispositivo fonte e produzir um disco contendo os dados de vídeo codificados. Portanto, o meio legível por computador pode ser compreendido como incluindo um ou mais meios legíveis por computador de várias formas, em vários exemplos.
[0139] A interface de entrada do dispositivo de destino recebe informação do meio legível por computador. A informação do meio legível por computador pode incluir informação de sintaxe definida pelo codificador de vídeo, que também é utilizada pelo decodificador de vídeo, que inclui elementos de sintaxe que descrevem as características e/ou processamento de blocos e outras unidades codificadas, por exemplo, grupo de imagens (GOP). Um dispositivo de exibição exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição tal como um tubo de raio catodo (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânica (OLED), ou outro tipo de dispositivo de exibição. Várias modalidades da invenção foram descritas.
[0140] Detalhes específicos do dispositivo de codificação 104 e do dispositivo de decodificação 112 são ilustrados na figura 9 e figura 10, respectivamente. A figura 9 é um diagrama em bloco ilustrando um dispositivo de codificação ilustrativo 104 que pode implementar uma ou mais técnicas descritas nessa descrição. O dispositivo de codificação 104 pode, por exemplo, gerar as estruturas de sintaxe descritas aqui (por exemplo, as estruturas de sintaxe de um VPS, SPS, PPS ou outros elementos de sintaxe). O dispositivo de codificação 104 pode realizar a codificação por intraprevisão e interprevisão de blocos de vídeo dentro de fatias de vídeo. Como descrito previamente, a intracodificação se baseia, pelo menos em parte, na previsão espacial para redução ou remoção de redundância espacial dentro de um quadro de vídeo ou imagem determinado. A intercodificação se baseia, pelo menos em parte, na previsão temporal para reduzir ou remover a redundância temporal dentro de quadros adjacentes ou circundantes de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer um dentre vários modos de compressão com base em espaço. Intermodos, tal como a previsão unidirecional (modo P) ou bidirecional (modo B), podem fazer referência a qual um dos modos de compressão com base em tempo.
[0141] O dispositivo de codificação 104 inclui uma unidade de partição 35, a unidade de processamento de previsão 41, a unidade de filtro 63, a memória de imagem 64, o somador 50, a unidade de processamento de transformação 52, a unidade de quantização 54, e a unidade de codificação por entropia 56. A unidade de processamento por previsão 41 inclui a unidade de estimativa de movimento 42, a unidade de compensação de movimento 44 e a unidade de processamento por intraprevisão 46. Para a reconstrução de bloco de vídeo, o dispositivo de codificação 104 também inclui a unidade de quantização inversa 58, a unidade de processamento por transformação inversa 60 e o somador 62. A unidade de filtro 63 deve representar um ou mais filtros de circuito tal como um filtro de desbloqueio, um filtro de circuito adaptativo (ALF) e um filtro de desvio adaptativo de amostra (SAO). Apesar de a unidade de filtro 63 ser ilustrada na figura 9 como estando em um filtro de circuito, em outras configurações, a unidade de filtro 63 pode ser implementada como um filtro pós-circuito. Um dispositivo pós-processamento 57 pode realizar o processamento adicional em dados de vídeo codificados gerados pelo dispositivo de codificação 104. As técnicas dessa descrição podem, em alguns casos, ser implementadas pelo dispositivo de codificação 104. Em outros casos, no entanto, uma ou mais das técnicas dessa descrição podem ser implementadas pelo dispositivo de pós-processamento 57.
[0142] Como ilustrado na figura 9, o dispositivo de codificação 104 recebe dados de vídeo, e a unidade de divisão 35 divide os dados em blocos de vídeo. A partição também pode incluir a partição em fatias, segmentos de fatia, tiles ou outras unidades maiores, além de partição de bloco de vídeo, por exemplo, de acordo com uma estrutura quadtree de LCUs e CUs. O dispositivo de codificação 104 geralmente ilustra os componentes que codificam blocos de vídeo dentro de uma fatia de vídeo a ser codificada. A fatia pode ser dividida em múltiplos blocos de vídeo (e possivelmente em conjuntos de blocos de vídeo referidos como tiles). A unidade de processamento por previsão 41 pode selecionar um dentre uma pluralidade de possíveis modos de codificação, tal como um dentre uma pluralidade de modos de codificação por intraprevisão ou um dentre uma pluralidade de modos de codificação por interprevisão, para o bloco de vídeo atual com base nos resultados de erro (por exemplo, taxa de codificação e nível de distorção ou similares). A unidade de processamento por previsão 41 pode fornecer o bloco intracodificado ou intercodificado resultante para o somador 50 para gerar os dados de bloco residual e para o somador 62 para reconstruir o bloco codificado para uso como uma imagem de referência.
[0143] A unidade de processamento por intraprevisão 46 dentro da unidade de processamento por previsão 41 pode realizar a codificação por intraprevisão do bloco de vídeo atual com relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco atual a ser codificado para fornecer compressão espacial. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 dentro da unidade de processamento por previsão 41 realizam a codificação de interprevisão do bloco de vídeo atual com relação a um ou mais blocos de previsão em uma ou mais imagens de referência para fornecer compressão temporal.
[0144] A unidade de estimativa de movimento 42 pode ser configurada para determinar o modo de interprevisão para uma fatia de vídeo de acordo com um padrão predeterminado para uma sequência de vídeo. O padrão predeterminado pode designar fatias de vídeo na sequência como fatias P, fatias B ou fatias GPB. 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 gerar vetores de movimento, que estimam o movimento para os blocos de vídeo. Um vetor de moivmento, por exemplo, pode indicar o deslocamento de uma unidade de previsão (PU) de um bloco de vídeo dentro de um quadro de vídeo atual ou uma imagem com relação a um bloco de previsão dentro de uma imagem de referência.
[0145] Um bloco de previsão é um bloco que é considerado mais próximo da PU do bloco de vídeo a ser codificado em termos de diferença de pixel, que podem ser determinados pela soma de diferença absoluta (SAD), soma de diferença quadrada (SSD), ou outras métricas de diferença. Em alguns exemplos, o dispositivo de codificação 104 pode calcular os valores para as posições de pixel de subinteiro de imagens de referência armazenadas na memória de imagem 64. Por exemplo, o dispositivo de codificação 104 pode interpolar os valores de posições de um quarto de pixel, posições de um oitavo de pixel, ou outras posições de pixel fracionados da imagem de referência. Portanto, a unidade de estimativa de movimento 42 pode realizar uma busca por movimento com relação às posições de pixel total e posições de pixel fracionado e envia um vetor de movimento com precisão de pixel fracionado.
[0146] A unidade de estimativa de movimento 42 calcula um vetor de movimento para um PU de um bloco de vídeo em uma fatia intercodificada pela comparação da posição da PU para a posição de um bloco de previsão 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 (Lista 1), cada uma que identifica uma ou mais imagens de referência armazenadas na memória de imagem 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e unidade de compensação de movimento 44.
[0147] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver a coleta ou geração do bloco de previsão com base no vetor de movimento determinado pela estimativa de movimento, realizando, possivelmente, as interpolações para precisão de subpixel. Depois do recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco de previsão para o qual o vetor de movimento aponta em uma lista de imagens de referência. O dispositivo de codificação 104 forma um bloco de vídeo residual pela subtração de valores de pixel do bloco de previsão a partir de valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel. Os valores de diferença de pixel formam dados residuais para o bloco, e podem incluir ambos os componentes de diferença de luminescência e crominância. O somador 50 representa o componente ou componentes que realizam essa operação de subtração. A unidade de compensação de movimento 44 também pode gerar elementos de sintaxe associados com blocos de vídeo e a fatia de vídeo para uso pelo dispositivo de decodificação 112 na decodificação de blocos de vídeo da fatia de vídeo.
[0148] A unidade de processamento por intraprevisão 46 pode intraprever um bloco atual como uma alternativa para a interprevisão realizada pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de processamento por intraprevisão 46 pode determinar um modo de intraprevisão para uso para codificar um bloco atual. Em alguns exemplos, a unidade de processamento por intraprevisão 46 pode codificar um bloco atual utilizando vários modos de intraprevisão, por exemplo, durante passagens de codificação separadas, e o processamento de unidade de intraprevisão 46 pode selecionar um modo de intraprevisão adequado para uso a partir dos modos testados. Por exemplo, a unidade de processamento por intraprevisão 46 pode calcular os valores de distorção de taxa utilizando uma análise de distorção de taxa para os vários modos de intraprevisão testados, e pode selecionar o modo de intraprevisão possuindo as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa determina geralmente uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco não codificado original que foi codificado para produzir o bloco codificado, além de uma taxa de bit (isso é, um número de bits) utilizada para produzir o bloco codificado. A unidade de processamento por intraprevisão 46 pode calcular razões de distorções e taxas para os vários blocos codificados para determinar qual modo de intraprevisão exibe o melhor valor de distorção de taxa para o bloco.
[0149] Em qualquer caso, depois da seleção de um modo de intraprevisão para um bloco, a unidade de processamento por intraprevisão 46 pode fornecer informação indicativa do modo de intraprevisão selecionado para o bloco para a unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar a informação indicando o modo de intraprevisão selecionado. O dispositivo de codificação 104 pode incluir na configuração de sequência de bits transmitidas, definições de dados de contextos de codificação para vários blocos além de indicações de um modo de intraprevisão mais provável, uma tabela de índices de modo de intraprevisão e uma tabela de índices de modo de intraprevisão modificada para uso para cada um dos contextos. Os dados de configuração de sequência de bits podem incluir uma pluralidade de tabelas de índice de modo de intraprevisão e uma pluralidade de tabelas de índice de modo de intraprevisão modificadas (também referidas como tabelas de mapeamento de palavra código).
[0150] Depois que a unidade de processamento por previsão 41 gera o bloco de previsão para o bloco de vídeo atual através de interprevisão ou intraprevisão, o dispositivo de codificação 104 forma um bloco de vídeo residual pela subtração do bloco de previsão do bloco de vídeo atual. Os dados de vídeo residuais no bloco residual podem ser incluídos em uma ou mais TUs e aplicados à unidade de processamento de transformação 52. A unidade de processamento de transformação 52 transforma os dados de vídeo residuais em coeficientes de transformação residual utilizando uma transformação, tal como uma transformação de cosseno discreto (DCT) ou uma transformação conceitualmente similar. A unidade de processamento de transformação 52 pode converter os dados de vídeo residuais a partir de um domínio de pixel em um domínio de transformação, tal como um domínio de frequência.
[0151] A unidade de processamento de transformação 52 pode enviar os coeficientes de transformação resultantes para a unidade de quantização 54.A unidade de quantização 54 quantiza os coeficientes de transformação para reduzir ainda mais a taxa de bit. 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 pelo ajuste de um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode então realizar uma digitalização da matriz incluindo os coeficientes de transformação quantizados. Alternativamente, a unidade de codificação por entropia 56 pode realizar a digitalização.
[0152] Seguindo a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformação quantizados. Por exemplo, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento variável adaptativa de contexto (CAVLC), a codificação aritmética binária adaptativa de contexto (CABAC), a codificação aritmética binária adaptativa de contexto com base em sintaxe (SBAC), a codificação por entropia de partição de intervalo de probabilidade (PIPE) ou outra técnica de codificação por entropia. Seguindo a codificação por entropia pela unidade de codificação por entropia 56, a sequência de bits codificada pode ser transmitida para o dispositivo de decodificação 112, ou alcançada para transmissão ou recuperação posterior pelo dispositivo de decodificação 112. A unidade de codificação por entropia 56 também pode codificar por entropia os vetores de movimento e os outros elementos de sintaxe para a fatia de vídeo atual sendo codificada.
[0153] A unidade de quantização inversa 58 e a unidade de processamento de transformação inversa 60 aplicam a quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel para uso futuro como um bloco de referência de uma imagem de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência pela adição do bloco residual a um bloco de previsão de uma das imagens de referência dentro de uma lista de imagens de referência. A unidade de compensação de movimento 44 pode aplicar também um ou mais filtros de interpolação para o bloco residual reconstruído para calcular os valores de pixel de subinteiro para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de previsão de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de referência para armazenamento na memória da imagem 64. O bloco de referência 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 interprever um bloco em um quadro ou imagem de vídeo subsequente.
[0154] Dessa forma, o dispositivo de codificação 104 da figura 9 representa um exemplo de um codificador de vídeo configurado para gerar sintaxe para uma sequência de bits de vídeo codificada. O dispositivo de codificação 104 pode, por exemplo, gerar conjuntos de parâmetros VPS, SPS e PPS como descrito acima. O dispositivo de codificação 104 pode realizar qualquer uma das técnicas descritas aqui, incluindo os processos descritos acima com relação às figuras 4, 6 e 8. As técnicas dessa descrição foram geralmente descritas com relação ao dispositivo de codificação 104, mas como mencionado acima, algumas das técnicas dessa descrição também podem ser implementadas pelo dispositivo de pós- processamento 57.
[0155] A figura 10 é um diagrama em bloco ilustrando um dispositivo de decodificação ilustrativo 112. O dispositivo de decodificação 112 inclui uma unidade de decodificação por entropia 80, unidade de processamento por previsão 81, unidade de quantização inversa 86, unidade de processamento de transformação inversa 88, somador 90, unidade de filtro 91 e memória de imagem 92. A unidade de processamento de previsão 81 inclui a unidade de compensação de movimento 82 e unidade de processamento por intraprevisão 84. O dispositivo de decodificação 112 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente alternada com relação à passagem de codificação com relação ao dispositivo de codificação 104 da figura 9.
[0156] Durante o processo de decodificação, o dispositivo de decodificação 112 recebe uma sequência de bits de vídeo codificada que representa os blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados enviados pelo dispositivo de codificação 104. Em algumas modalidades, o dispositivo de decodificação 112 pode receber a sequência de bits de vídeo codificada do dispositivo de codificação 104. Em algumas modalidades, o dispositivo de decodificação 112 pode receber a sequência de bits de vídeo codificada de uma entidade de rede 79, tal como um servidor, um elemento de rede ciente de mídia (MANE) um editor/mecanismo de emenda de vídeo, ou outro dispositivo similar configurado para implementar uma ou mais das técnicas descritas acima. A entidade de rede 79 pode ou não incluir o dispositivo de codificação 104. Algumas das técnicas descritas nessa descrição podem ser implementadas pela entidade de rede 79 antes de a entidade de rede 79 transmitir a sequência de bits de vídeo codificada para o dispositivo de decodificação 112. Em alguns sistemas de decodificação de vídeo, a entidade de rede 79 e o dispositivo de decodificação 112 podem ser partes de dispositivos separados, enquanto em outros casos, a funcionalidade descrita com relação à entidade de rede 79 pode ser realizada pelo mesmo dispositivo que compreende o dispositivo de decodificação 112.
[0157] A unidade de decodificação por entropia 80 do dispositivo de decodificação 112 codifica por entropia a sequência de bits para gerar os coeficientes quantizados, vetores de movimento, e outros elementos de sintaxe. A unidade de decodificação por entropia 80 envia os vetores de movimento e outros elementos de sintaxe para a unidade de processamento por previsão 81. O dispositivo de decodificação 112 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou o nível de bloco de vídeo. A unidade de decodificação por entropia 80 pode processar e analisar ambos os elementos de sintaxe de comprimento fixo e os elementos de sintaxe de comprimento variável em um ou mais conjuntos de parâmetros, tal como VPS, SPS e PPS
[0158] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de processamento por intraprevisão 84 da unidade de processamento por previsão 81 pode gerar dados de previsão para um bloco de vídeo da fatia de vídeo atual com base em um modo de intraprevisão sinalizado e dados dos blocos previamente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (isso é, B, P ou GPB), a unidade de compensação de movimento 82 da unidade de processamento por previsão 81 produz blocos de previsão para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação por entropia 80. Os blocos de previsão podem ser produzidos a partir de uma das imagens de referência dentro de uma lista de imagens de referência. O dispositivo de decodificação 112 pode construir listas de quadro de referência, Lista 0 e Lista 1, utilizando as técnicas de construção padrão com base nas imagens de referência armazenadas na memória de imagem 92.
[0159] A unidade de compensação de movimento 82 determina a informação de previsão para um bloco de vídeo da fatia de vídeo atual pela análise de vetores de movimento e outros elementos de sintaxe, e utiliza a informação de previsão para produzir os blocos de previsão para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 82 pode utilizar um ou mais elementos de sintaxe em um conjunto de parâmetros para determinar um modo de previsão (por exemplo, intraprevisão ou interprevisão) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interprevisão (por exemplo, fatia B, fatia P ou fatia GPB), informação de construção para uma ou mais listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, situação de interprevisão para cada bloco de vídeo intercodificado da fatia, e outra informação para decodificar os blocos de vídeo na fatia de vídeo atual.
[0160] A unidade de compensação de movimento 82 também pode realizar a interpolação com base nos filtros de interpolação. A unidade de compensação de movimento 82 pode utilizar os filtros de interpolação como utilizados pelo dispositivo de codificação 104 durante a codificação de blocos de vídeo para calcular os valores interpolados para pixels subinteiros dos blocos de referência. Nesse caso, a unidade de compensação de movimento 82 pode determinar os filtros de interpolação utilizados pelo dispositivo de codificação 104 a partir dos elementos de sintaxe recebidos, e pode utilizar os filtros de interpolação para produzir os blocos de previsão.
[0161] A unidade de quantização inversa 86 quantiza de forma inversa, ou desquantiza, os coeficientes de transformação quantizados fornecidos na sequência de bits e decodificados pela unidade de decodificação por entropia 80. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização calculado pelo dispositivo de codificação 104 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. A unidade de processamento de transformação inversa 88 aplica uma transformação inversa (por exemplo, uma DCT inversas ou outra transformação inversa adequada), uma transformação de inteiro inverso, ou um processo de transformação inversa conceitualmente similar, aos coeficientes de transformação, a fim de produzir blocos residuais no domínio de pixel.
[0162] Depois que a unidade de compensação de movimento 82 gera o bloco de previsão para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o dispositivo de decodificação 112 forma um bloco de vídeo decodificado pela soma dos blocos residuais a partir da unidade de processamento de transformação inversa 88 com os blocos de previsão correspondentes gerados pela unidade de compensação de movimento 82. O somador 90 representa o componente ou componentes que realizam essa operação de soma. Se desejado, filtros de circuito (no circuito de codificação ou depois do circuito de codificação) também podem ser utilizados para suavizar as transições de pixel, ou para, de outra forma, aperfeiçoar a qualidade de vídeo. A unidade de filtro 91 deve representar um ou mais filtros de circuito tal como um filtro de desbloqueio, um filtro de circuito adaptativo (ALF), e um filtro de desvio adaptativo de amostra (SAO). Apesar de a unidade de filtro 91 ser ilustrada na figura 10 como estando em um filtro de circuito, em outras configurações, a unidade de filtro 91 pode ser implementada como um filtro pós-circuito. Os blocos de vídeo decodificados em um quadro ou imagem determinado são então armazenados na memória de imagem 92, que armazena as imagens de referência utilizadas para a compensação de movimento subsequente. A memória de imagem 92 também armazena o vídeo decodificado para apresentação posterior em um dispositivo de exibição, tal como o dispositivo de destino de vídeo 122 ilustrado na figura 1.
[0163] Na descrição acima, aspectos do pedido são descritos com referência às modalidades específicas do mesmo, mas os versados na técnica reconhecerão que a invenção não está limitada a isso. Dessa forma, enquanto as modalidades ilustrativas do pedido foram descritas em detalhes aqui, deve ser compreendido que os conceitos inventivos podem, de outra forma, ser consubstanciados e empregado de formas variadas, e que as reivindicações em anexo devem ser consideradas como incluindo tais variações, exceto quando limitado pela técnica anterior. Várias características e aspectos da invenção descrita acima podem ser utilizados individualmente ou em conjunto.Adicionalmente, as modalidades podem ser utilizadas em qualquer um dentre vários ambientes e aplicativos além dos descritos aqui sem se distanciar do espírito mais amplo e escopo da especificação. A especificação e os desenhos devem, de acordo, ser considerados como ilustrativos em vez de restritivos. Para fins de ilustração, os métodos foram descritos em uma ordem em particular. Deve-se apreciar que nas modalidades alternativas, os métodos podem ser realizados em uma ordem diferente da descrita.
[0164] Onde os componentes são descritos como sendo "configurados para" realizar determinadas operações, tal configuração pode ser realizada, por exemplo, projetando-se circuitos eletrônicos ou outro hardware para realizar a operação, pela programação de circuitos eletrônicos programáveis (por exemplo, microprocessadores, ou outros circuitos eletrônicos adequados) para realizar a operação, ou qualquer combinação dos mesmos.
[0165] Os vários blocos lógicos, módulos, circuitos e etapas de algoritmo ilustrativos descritos com relação às modalidades descritas aqui podem ser implementados como hardware eletrônico, software de computador, firmware ou combinações dos mesmos. Para se ilustrar com clareza essa capacidade de intercâmbio 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 em particular e das restrições de desenho impostas ao sistema como um todo. Os versados na técnica podem implementar a funcionalidade descrita de várias formas para cada aplicativo em particular, mas tais decisões de implementação não devem ser interpretadas como responsáveis pelo distanciamento do escopo da presente invenção.
[0166] As técnicas descritas aqui também podem ser implementadas em hardware eletrônico, software de computador, firmware ou qualquer combinação dos mesmos. Tais técnicas podem ser implementadas em qualquer um dentre uma variedade de dispositivos tal como computadores de finalidade geral, aparelhos de dispositivo de comunicação sem fio, ou dispositivos de circuito integrados possuindo múltiplas utilizações incluindo aplicação em aparelhos de dispositivo de comunicação sem fio e outros dispositivos. Quaisquer características descritas como módulos ou componentes podem ser implementadas em conjunto em um dispositivo lógico integrado ou separadamente como dispositivos lógicos discretos, porém interoperacionais. Se implementada em software, as técnicas podem ser realizadas pelo menos parcialmente por um meio de armazenamento de dados legível por computador compreendendo um código de programa incluindo instruções que, quando executadas, realizam um ou mais dos métodos descritos acima. O meio de armazenamento de dados legível por computador pode formar parte de um produto de programa de computador, que pode incluir materiais de empacotamento. O meio legível por computador pode compreender memória ou mídia de armazenamento de dados, tal como memória de acesso randômico (RAM) tal como memória de acesso randômico dinâmica sincronizada (SDRAM), memória de leitura apenas (ROM), memória de acesso randômico não volátil (NVRAM), memória de leitura apenas eletricamente programável e eliminável (EEPROM), memória FLASH, mídia de armazenamento de dados magnética ou ótica e similares. As técnicas, adicionalmente, ou alternativamente, podem ser realizadas pelo menos em parte por um meio de comunicação legível por computador que porta ou comunica código de programa na forma de instruções ou estruturas de dados e que podem ser acessadas, lidas, e/ou executadas por um computador, tal como sinais ou ondas propagadas.
[0167] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, um circuito integrado específico de aplicativo (ASICs), conjuntos lógicos programáveis em campo (FPGAs), ou outro conjunto de circuito lógico integrado ou discreto equivalente. Tal processador pode ser configurado para realizar qualquer uma das técnicas descritas nessa descrição. Um processador de finalidade geral pode ser um microprocessador; mas na alternativa, o processador pode ser qualquer processador, controlador, micro controlador ou máquina de estado convencional. Um processador também pode 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 similar. De acordo, o termo "processador", como utilizado aqui pode se referir a qualquer um dentre a estrutura acima, qualquer combinação da estrutura acima, ou qualquer outra estrutura ou aparelho adequado para implementação das técnicas descritas aqui. Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro dos módulos de software dedicados ou módulos de hardware configurados para codificar e decodificar, ou incorporados em um codificador- decodificador (CODEC) de vídeo combinado.

Claims (7)

1. Método de codificação de dados de vídeo, o método caracterizado por compreender: a geração (402) de uma sequência de bits de vídeo codificada compreendendo múltiplas camadas, a sequência de bits de vídeo codificada incluindo um conjunto de parâmetros que define os parâmetros da sequência de bits de vídeo codificada; a determinação (404) de um ou mais parâmetros do conjunto de parâmetros que inclui informação que descreve uma primeira subsequência de bits da segunda sequência de bits codificada e informação descrevendo uma segunda subsequência de bits da sequência de bits de vídeo codificada, a primeira subsequência de bits incluindo uma ou mais camadas com dados de vídeo, e a segunda subsequência de bits incluindo uma ou mais camadas sem qualquer dado de vídeo; a realização de um processo de extração de subsequência de bits para gerar a segunda subsequência de bits a partir da sequência de bits de dados codificados, em que a realização do processo de extração da subsequência de bits compreende remover pelo menos uma camada a partir da sequência de bits de vídeo codificada; a realização (406) de uma verificação de conformidade de sequência de bits na primeira subsequência de bits com base na uma ou mais camadas da primeira subsequência de bits possuindo dados de vídeo, onde a verificação de conformidade de sequência de bits é realizada apenas nas subsequências de bits que incluem dados de vídeo em todas as camadas das subsequências de bits; e a determinação de que a verificação de conformidade de sequência de bits não deva ser realizada na segunda subsequência de bits, a determinação com base em uma ou mais camadas da segunda subsequência de bits não possuindo dados de vídeo; em que a verificação de conformidade de sequência de bits inclui a realização de um teste na primeira subsequência de bits para garantir que a primeira subsequência de bits seja decodificável, em que o teste compreende testar o subfluxo ou sobrefluxo do buffer de imagem codificado quando a sequência de bits é processada por um decodificador.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados de vídeo de uma ou mais camadas da primeira subsequência de bits estão presentes na primeira subsequência de bits, ou são fornecidos a partir de uma fonte externa além de um codificador usado para gerar a sequência de bits de vídeo codificada.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados de vídeo incluem uma ou mais unidades de camada de abstração de rede de camada de codificação de vídeo.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o conjunto de parâmetros inclui um conjunto de parâmetros de vídeo, VPS.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o conjunto de parâmetros inclui um conjunto de parâmetros de sequência, SPS.
6. Memória caracterizada por compreender instruções armazenadas na mesma que, quando executadas por um processador, realizam um método conforme definido em qualquer uma das reivindicações 1 a 5.
7. Aparelho, caracterizado por compreender: meios para gerar uma sequência de bits de vídeo codificada compreendendo múltiplas camadas, a sequência de bits de vídeo codificada incluindo um conjunto de parâmetros que define os parâmetros da sequência de bits de vídeo codificada; meios para determinar um ou mais parâmetros do conjunto de parâmetros que incluem informação descrevendo uma primeira subsequência de bits da sequência de bits de vídeo codificada e informação descrevendo uma segunda subsequência de bits da sequência de bits de vídeo codificada, a primeira subsequência de bits incluindo uma ou mais camadas com dados de vídeo, e a segunda subsequência de bits incluindo uma ou mais camadas sem quaisquer dados de vídeo; meios para realizar um processo de extração de subsequência de bits para gerar a segunda subsequência de bits a partir da sequência de bits de dados codificados, em que realizar o processo de extração da subsequência de bits compreende remover pelo menos uma camada a partir da sequência de bits de vídeo codificada; meios para realizar uma verificação de conformidade de sequência de bits na primeira subsequência de bits com base em uma ou mais camadas da primeira subsequência de bits possuindo dados de vídeo, onde a verificação de conformidade de sequência de bits é realizada apenas em subsequências de bits que incluem dados de vídeo em todas as camadas das subsequências de bits; e meios para determinar que a verificação de conformidade de sequência de bits não deva ser realizada na segunda subsequência de bits, a determinação com base em uma ou mais camadas da segunda subsequência de bits não possuindo dados de vídeo; em que a verificação de conformidade de sequência de bits inclui a realização de um teste na primeira subsequência de bits para garantir que a primeira subsequência de bits seja decodificável, em que o teste compreende testar o subfluxo ou sobrefluxo do buffer de imagem codificado quando a sequência de bits é processada por um decodificador.
BR112016029555-2A 2014-06-20 2015-06-18 Sistemas e métodos para a realização seletiva de uma verificação de conformidade de sequência de bits BR112016029555B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462015380P 2014-06-20 2014-06-20
US62/015,380 2014-06-20
US14/742,435 US9930340B2 (en) 2014-06-20 2015-06-17 Systems and methods for selectively performing a bitstream conformance check
US14/742,435 2015-06-17
PCT/US2015/036366 WO2015195874A1 (en) 2014-06-20 2015-06-18 Systems and methods for selectively performing a bitstream conformance check

Publications (2)

Publication Number Publication Date
BR112016029555A2 BR112016029555A2 (pt) 2017-08-22
BR112016029555B1 true BR112016029555B1 (pt) 2024-01-02

Family

ID=54870860

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112016029555-2A BR112016029555B1 (pt) 2014-06-20 2015-06-18 Sistemas e métodos para a realização seletiva de uma verificação de conformidade de sequência de bits
BR112016029871A BR112016029871A2 (pt) 2014-06-20 2015-06-18 sistemas e métodos para restrição de parâmetros de formato de representação para um conjunto de parâmetros

Family Applications After (1)

Application Number Title Priority Date Filing Date
BR112016029871A BR112016029871A2 (pt) 2014-06-20 2015-06-18 sistemas e métodos para restrição de parâmetros de formato de representação para um conjunto de parâmetros

Country Status (8)

Country Link
US (4) US9918091B2 (pt)
EP (2) EP3158767B1 (pt)
JP (2) JP6768526B2 (pt)
KR (2) KR101970869B1 (pt)
CN (2) CN106537920B (pt)
BR (2) BR112016029555B1 (pt)
CA (2) CA2951517C (pt)
WO (3) WO2015195910A1 (pt)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112016000132B1 (pt) * 2013-07-12 2023-02-28 Sony Corporation Dispositivo e método para decodificação de imagem
CN105723712B (zh) 2013-10-14 2019-06-28 韩国电子通信研究院 基于多层的图像编码/解码方法和设备
WO2015182342A1 (ja) * 2014-05-26 2015-12-03 シャープ株式会社 画像復号装置、および、画像符号化装置
US9918091B2 (en) 2014-06-20 2018-03-13 Qualcomm Incorporated Systems and methods for assigning a minimum value to a syntax structure in a parameter set
US9959097B2 (en) 2016-03-09 2018-05-01 Bank Of America Corporation SVN interface system for heterogeneous development environments
US10291923B2 (en) * 2016-05-24 2019-05-14 Qualcomm Incorporated Mapping of tile grouping and samples in HEVC and L-HEVC file formats
US10904531B2 (en) * 2017-03-23 2021-01-26 Qualcomm Incorporated Adaptive parameters for coding of 360-degree video
CN108882027B (zh) * 2018-07-17 2021-06-01 广东小天才科技有限公司 一种视频通信方法及可穿戴设备
WO2020086317A1 (en) * 2018-10-23 2020-04-30 Tencent America Llc. Method and apparatus for video coding
WO2020084556A1 (en) 2018-10-24 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block motion candidate list in video coding
CN110298038B (zh) * 2019-06-14 2022-12-06 北京奇艺世纪科技有限公司 一种文本打分方法及装置
KR20220024142A (ko) * 2019-06-24 2022-03-03 인터디지털 브이씨 홀딩스 인코포레이티드 하이 레벨 구문 요소들을 이용하여 디코딩 데이터를 시그널링하기 위한 방법 및 장치
GB2585042A (en) * 2019-06-25 2020-12-30 Sony Corp Image data encoding and decoding
EP3977746A4 (en) 2019-07-05 2022-08-03 Huawei Technologies Co., Ltd. BITSTREAM EXTRACTION FOR VIDEO CODING WITH SIGNALING IDENTIFIERS
KR20220065045A (ko) * 2019-09-24 2022-05-19 후아웨이 테크놀러지 컴퍼니 리미티드 멀티뷰 스케일러빌리티를 위한 ols
JP7391199B2 (ja) 2019-10-05 2023-12-04 北京字節跳動網絡技術有限公司 映像コーディングツールのレベルベースシグナリング
EP4032295A4 (en) * 2019-10-07 2022-11-30 Huawei Technologies Co., Ltd. AVOIDING REDUNDANT SIGNALING IN MULTILAYER VIDEO BITSTREAMS
CN114868158A (zh) 2019-12-26 2022-08-05 字节跳动有限公司 层级视频中的解码图片缓冲区参数的信令通知
JP7431330B2 (ja) 2019-12-26 2024-02-14 バイトダンス インコーポレイテッド ビデオコーディングにおけるプロファイル、層及びレイヤの指示
KR20220121804A (ko) 2019-12-27 2022-09-01 바이트댄스 아이엔씨 파라미터 세트들에서의 서브픽처 시그널링
KR20220113379A (ko) 2019-12-27 2022-08-12 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 픽처 헤더의 슬라이스 유형의 시그널링
WO2021142363A1 (en) 2020-01-09 2021-07-15 Bytedance Inc. Decoding order of different sei messages
KR20220143843A (ko) 2020-02-29 2022-10-25 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 하이 레벨 신택스 엘리먼트들에 대한 제약들
US11943429B2 (en) * 2020-03-04 2024-03-26 Qualcomm Incorporated Subpicture signaling in video coding
JP2023526375A (ja) 2020-05-22 2023-06-21 北京字節跳動網絡技術有限公司 サブピクチャサブビットストリーム抽出処理におけるスケーリングウィンドウ
WO2021237123A1 (en) 2020-05-22 2021-11-25 Bytedance Inc. Sei message handling in video sub-bitstream extraction process
WO2021233449A1 (en) * 2020-05-22 2021-11-25 Beijing Bytedance Network Technology Co., Ltd. Reserved bits in general constraint information of a video
US11523137B2 (en) 2020-06-09 2022-12-06 FG Innovation Company Limited Device and method for decoding video data using general constraints information
WO2021251752A1 (ko) * 2020-06-10 2021-12-16 엘지전자 주식회사 최대 시간 식별자에 기반하여 서브 비트스트림 추출과정을 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 컴퓨터 판독가능한 기록매체
EP4150901A4 (en) 2020-06-12 2023-10-18 ByteDance Inc. IMAGE HEADER CONSTRAINTS FOR MULTILAYER VIDEO CODING
US11601642B2 (en) * 2020-08-18 2023-03-07 Tencent America LLC String matching with a single value from reference locations
KR20240051251A (ko) * 2021-09-30 2024-04-19 바이트댄스 아이엔씨 비디오 처리를 위한 방법, 장치 및 매체

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002218009A1 (en) * 2000-11-01 2002-05-15 Webcast Technologies Inc Encoding and decoding of video signals
US7532670B2 (en) * 2002-07-02 2009-05-12 Conexant Systems, Inc. Hypothetical reference decoder with low start-up delays for compressed image and video
AU2007350974B2 (en) * 2007-04-13 2013-07-18 Nokia Technologies Oy A video coder
WO2008130528A2 (en) 2007-04-17 2008-10-30 Thomson Licensing Hypothetical reference decoder for multiview video coding
US20100142613A1 (en) 2007-04-18 2010-06-10 Lihua Zhu Method for encoding video data in a scalable manner
WO2010021665A1 (en) * 2008-08-20 2010-02-25 Thomson Licensing Hypothetical reference decoder
CN102124742B (zh) 2008-08-20 2013-09-11 汤姆逊许可公司 精制深度图
US8780999B2 (en) * 2009-06-12 2014-07-15 Qualcomm Incorporated Assembling multiview video coding sub-BITSTREAMS in MPEG-2 systems
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US9402082B2 (en) * 2012-04-13 2016-07-26 Sharp Kabushiki Kaisha Electronic devices for sending a message and buffering a bitstream
SI2697973T1 (sl) 2012-04-16 2017-11-30 Hfi Innovation Inc. Postopek in naprava za zančno filtriranje preko meja rezine ali ploščice
WO2013162454A1 (en) 2012-04-24 2013-10-31 Telefonaktiebolaget L M Ericsson (Publ) Identifying a parameter set for decoding a multi-layer video representation
EP2868092A4 (en) 2012-07-02 2016-05-04 Nokia Technologies Oy METHOD AND DEVICE FOR VIDEO CODING
US20140003534A1 (en) 2012-07-02 2014-01-02 Sony Corporation Video coding system with temporal scalability and method of operation thereof
US9241158B2 (en) 2012-09-24 2016-01-19 Qualcomm Incorporated Hypothetical reference decoder parameters in video coding
US8989508B2 (en) 2012-09-28 2015-03-24 Sharp Kabushiki Kaisha Electronic device for signaling a sub-picture buffer parameter
US9154785B2 (en) 2012-10-08 2015-10-06 Qualcomm Incorporated Sub-bitstream applicability to nested SEI messages in video coding
WO2015008464A1 (en) 2013-07-14 2015-01-22 Sharp Kabushiki Kaisha Video parameter set signaling
WO2015052935A1 (en) 2013-10-11 2015-04-16 Sharp Kabushiki Kaisha Color information and chromaticity signaling
US10264272B2 (en) 2013-10-15 2019-04-16 Qualcomm Incorporated Device and method for scalable coding of video information
EP3051820B1 (en) 2013-10-22 2020-12-02 Huawei Technologies Co. Ltd. Image decoding device and image decoding method
JP6329246B2 (ja) 2014-03-14 2018-05-23 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 画像復号装置
US9918091B2 (en) 2014-06-20 2018-03-13 Qualcomm Incorporated Systems and methods for assigning a minimum value to a syntax structure in a parameter set

Also Published As

Publication number Publication date
CN106664427A (zh) 2017-05-10
WO2015195874A1 (en) 2015-12-23
CA2950182C (en) 2023-03-28
US20150373333A1 (en) 2015-12-24
US10356415B2 (en) 2019-07-16
US10542261B2 (en) 2020-01-21
CA2951517C (en) 2023-01-24
CA2950182A1 (en) 2015-12-23
CN106664427B (zh) 2019-08-13
KR101970869B1 (ko) 2019-04-19
JP2017523678A (ja) 2017-08-17
EP3158767A1 (en) 2017-04-26
US20150373348A1 (en) 2015-12-24
EP3158767C0 (en) 2023-07-12
EP3158762A1 (en) 2017-04-26
KR102385772B1 (ko) 2022-04-11
BR112016029871A2 (pt) 2017-08-22
EP3158767B1 (en) 2023-07-12
KR20170021787A (ko) 2017-02-28
US20180184091A1 (en) 2018-06-28
JP2017523676A (ja) 2017-08-17
JP6479860B2 (ja) 2019-03-06
JP6768526B2 (ja) 2020-10-14
US20150373344A1 (en) 2015-12-24
US9918091B2 (en) 2018-03-13
WO2015195908A1 (en) 2015-12-23
US9930340B2 (en) 2018-03-27
BR112016029555A2 (pt) 2017-08-22
WO2015195910A1 (en) 2015-12-23
KR20170022994A (ko) 2017-03-02
CN106537920B (zh) 2020-01-10
CA2951517A1 (en) 2015-12-23
CN106537920A (zh) 2017-03-22

Similar Documents

Publication Publication Date Title
BR112016029555B1 (pt) Sistemas e métodos para a realização seletiva de uma verificação de conformidade de sequência de bits
KR102069416B1 (ko) 파라미터 세트에서의 계층 세트들에 대한 정보를 시그널링하기 위한 시스템들 및 방법들
ES2761865T3 (es) Procedimientos y sistemas de restricción de bipredicción en codificación de vídeo
US20170099490A1 (en) Constrained intra-prediction for block copy mode
BR112016029762B1 (pt) Método e aparelho de decodificação de dados de vídeo, e, memória legível por computador

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 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