BR112016025419B1 - Método para testar a conformidade a um padrão de codificação de vídeo e aparelho para testar a conformidade de um fluxo de bits - Google Patents

Método para testar a conformidade a um padrão de codificação de vídeo e aparelho para testar a conformidade de um fluxo de bits Download PDF

Info

Publication number
BR112016025419B1
BR112016025419B1 BR112016025419-8A BR112016025419A BR112016025419B1 BR 112016025419 B1 BR112016025419 B1 BR 112016025419B1 BR 112016025419 A BR112016025419 A BR 112016025419A BR 112016025419 B1 BR112016025419 B1 BR 112016025419B1
Authority
BR
Brazil
Prior art keywords
partition
video
layers
bitstream
hrd
Prior art date
Application number
BR112016025419-8A
Other languages
English (en)
Other versions
BR112016025419A2 (pt
Inventor
Adarsh Krishnan Ramasubramonian
Ye-Kui Wang
Fnu HENDRY
Krishnakanth RAPAKA
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 BR112016025419A2 publication Critical patent/BR112016025419A2/pt
Publication of BR112016025419B1 publication Critical patent/BR112016025419B1/pt

Links

Images

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/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/127Prioritisation of hardware or computational resources
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/29Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding involving scalability at the object level, e.g. video object layer [VOL]
    • 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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/39Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability involving multiple description coding [MDC], i.e. with separate layers being structured as independently decodable descriptions of input picture data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • H04N19/427Display on the fly, e.g. simultaneous writing to and reading from decoding memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • 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/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • H04N19/66Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience involving data partitioning, i.e. separation of data into packets or partitions according to importance
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234327Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/4508Management of client data or end-user data
    • H04N21/4516Management of client data or end-user data involving client characteristics, e.g. Set-Top-Box type, software version or amount of memory available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/816Monomedia components thereof involving special video data, e.g 3D video

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

MÉTODO E DISPOSITIVO PARA TESTE DE CONFORMIDADE DE PARÂMETROS DE DECODIFICADOR DE REFERÊNCIA HIPOTÉTICO PARA ESQUEMAS DE PARTIÇÃO EM CODIFICAÇÃO DE VÍDEO. Um dispositivo de processamento de vídeo é configurado para obter, a partir de uma sequência de bits, um ou mais elementos indicando um ou mais esquemas de partição para um conjunto de camadas de saída. Para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo especifica uma divisão do conjunto de camadas de saída em uma ou mais partições. Cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo. Adicionalmente, o dispositivo de processamento de vídeo obtém, a partir de uma mensagem de Informação de Aperfeiçoamento Suplementar (SEI) ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS), parâmetros de decodificador de referência hipotéticos (HRD) para cada um dentre o um ou mais esquemas de partição. Para cada partição respectiva do esquema de partição respectivo, o dispositivo de processamento de vídeo testa, com base nos parâmetros HRD para o esquema de partição respectivo, a partição respectiva por conformidade a um padrão de codificação de vídeo.(...).

Description

[0001] Esse pedido reivindica os benefícios do pedido de patente provisório U.S. No. 61/987.463, depositado em 1 de maio de 2014, e pedido de patente provisório U.S. No. 61/993.980, depositado em 15 de maio de 2014, da totalidade do conteúdo de cada um dos quais é incorporada aqui por referência.
Campo Técnico
[0002] Essa descrição refere-se à codificação e decodificação de vídeo.
Fundamentos
[0003] Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, leitoras de livro eletrônico, câmeras digitais, dispositivos de gravação digital, aparelhos de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones de rádio celulares ou via satélite, os chamados "smartphones", dispositivos de teleconferência de vídeo, dispositivos de sequenciamento de vídeo, e similares. Os dispositivos de vídeo digital implementam técnicas de compressão de vídeo, tal como as descritas em padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG- 4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informação de vídeo digital de forma mais eficiente pela implementação de tais técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo realizam previsão espacial (intraimagem) e/ou previsão temporal (interimagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (isso é, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em blocos de vídeo. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados utilizando a previsão espacial com relação às amostras de referência nos blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem utilizar previsão espacial com relação às amostras de referência nos blocos vizinhos na mesma imagem ou previsão temporal com relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e imagens de referência podem ser referidas como quadros de referência.
[0005] A previsão espacial ou temporal resulta em um bloco de previsão par aum bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco de previsão. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para o bloco de amostras de referência formando o bloco de previsão, e os dados residuais indicam a diferença entre o bloco codificado e o bloco de previsão. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados de domínio de pixel em domínio de transformação, resultando em coeficientes residuais, que então podem ser quantizados. Os coeficientes quantizados, inicialmente dispostos em um conjunto bidimensional, podem ser digitalizados a fim de produzir um vetor unidimensional de coeficientes, e a codificação por entropia pode ser aplicada para alcançar uma compressão ainda maior.
[0006] Uma sequência de bits de codificação de múltiplas visualizações pode ser gerada pelas visualizações de codificação, por exemplo, a partir de múltiplas perspectivas. Alguns padrões de vídeo tridimensionais (3D) foram desenvolvidos e fazem uso de aspectos de codificação de múltiplas visualizações. Por exemplo, diferentes visualizações podem transmitir vistas de olho esquerdo e direito para suportar o vídeo 3D. Alternativamente, alguns processos de codificação de vídeo 3D podem ser aplicados à chamada codificação de múltiplas visualizações mais profundidade. Na codificação de múltiplas visualizações mais profundidade, uma sequência de bits de vídeo 3D pode conter não apenas os componentes de visualização de textura, mas também os componentes de visualização de profundidade. Por exemplo, cada visualização pode compreender um componente de visualização de textura e um componente de visualização de profundidade.
Sumário
[0007] Em geral, essa descrição descreve as técnicas de descrição das propriedades de sequência de bits de vídeo utilizadas para definir a conformidade em termos de partições de sequência de bits de vídeo, e as capacidades do decodificador de vídeo necessárias para se decodificar as sequências de vídeo definidas dessa forma.
[0008] Em um exemplo, essa descrição descreve um método de teste de conformidade para um padrão de codificação de vídeo, o método compreendendo: a obtenção, a partir de uma sequência de bits que compreende uma representação codificada de dados de vídeo, de um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camada de saída, onde: a sequência de bits compreende uma pluralidade de camadas, o conjunto de camada de saída consiste de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado da pluralidade de camadas; para cada esquema de partição respectivo de um ou mais esquemas de partição: o esquema de partição respectivo específica uma divisão do conjunto de camada de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertente a exatamente uma partição no esquema de partição respectivo; e para cada esquema de partição respectivo de um ou mais esquemas de partição: obter, a partir de uma mensagem de Informação de Aperfeiçoamento Suplementar (SEI) na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros de decodificador de referência hipotético (HRD) para o esquema de partição respectivo; e para cada partição respectiva do esquema de partição respectivo, o teste, com base nos conjuntos de parâmetros HRD para os esquemas de partição respectivos, a partição respectiva para conformidade com o padrão de codificação de vídeo.
[0009] Em outro exemplo, essa descrição descreve um método de codificação de dados de vídeo, o método compreendendo: a geração de uma sequência de bits que compreende uma representação codificada de dados de vídeo, a sequência de bits compreendendo uma pluralidade de camadas, onde a geração de sequência de bits compreende: incluir, na sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camadas de saída, onde: o conjunto de camadas de saída consiste de todas as camadas da pluralidade de camadas ou um subconjunto adequado dentre a pluralidade e camadas; para cada esquema e partição respectivo dentre um ou mais esquemas de partição: o esquema de partição respectivo especifica uma divisão do conjunto de camada de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo; e para cada esquema de partição respectivo de um ou mais esquemas de partição, incluindo, em uma mensagem de Informação de Aperfeiçoamento Suplementar (SEI) na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros de decodificador de referência hipotética (HRD) para o esquema de partição respectivo; e o envio da sequência de bits.
[0010] Em outro exemplo, essa descrição descreve um dispositivo que testa a conformidade a um padrão de codificação de vídeo, o dispositivo compreendendo: um ou mais meios de armazenamento legíveis por computador configurados para armazenar uma sequência de bits que compreende uma representação codificada de dados de vídeo; e um ou mais processadores configurados para obter, a partir de uma sequência de bits que compreende uma representação codificada de dados de vídeo, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camadas de saída, onde: a sequência de bits compreende uma pluralidade de camadas, o conjunto de camadas de saída consiste de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas; para cada esquema de partição respectivo dentre um ou mais esquemas de partição: o esquema de partição respectivo especifica uma divisão do conjunto de camadas de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo; e para cada esquema de partição respectivo dentre um ou mais esquemas de partição: obter, a partir da mensagem de Informação de Aperfeiçoamento Suplementar (SEI) na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros de decodificador de referência hipotética (HRD) para o esquema de partição respectivo; e para cada partição respectiva do esquema de partição respectivo, testar, com base nos conjuntos de parâmetros HRD para os esquemas de partição respectivos, a partição respectiva para conformidade com o padrão de codificação de vídeo.
[0011] Em outro exemplo, essa descrição descreve um dispositivo para codificação de dados de vídeo, o dispositivo compreendendo: um ou mais meios de armazenamento legíveis por computador configurados para armazenar os dados de vídeo; e um ou mais processadores configurados para gerar uma sequência de bits que compreende uma representação codificada de dados de vídeo, a sequência de bits compreendendo uma pluralidade de camadas, onde um ou mais processadores são configurados de modo que, como parte da geração da sequência de bits, um ou mais processadores incluam, na sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camadas de siada, onde: o conjunto de camadas de saída consiste de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas; para cada esquema de partição respectivo dentre um ou mais esquemas de partição: o esquema de partição respectivo especifica uma divisão do conjunto de camadas de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo; e para cada esquema de partição respectivo dentre um ou mais esquemas de partição, incluindo, em uma mensagem de Informação de Aperfeiçoamento Suplementar (SEI) na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros de decodificador de referência hipotética (HRD) para o esquema de partição respectivo; e o envio da sequência de bits.
[0012] Em outro exemplo, essa descrição descreve um dispositivo que testa a conformidade a um padrão de codificação de vídeo, o dispositivo compreendendo: meios para obtenção, a partir de uma sequência de bits que compreende uma representação codificada de dados de vídeo, de um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camadas de saída, onde: a sequência de bits compreende uma pluralidade de camadas, o conjunto de camadas de saída consiste de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas; para cada esquema de partição respectivo de um ou mais esquemas de partição: o esquema de partição respectivo especifica uma divisão do conjunto de camadas de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo; e para cada esquema de partição respectivo de um ou mais esquemas de partição: meios para obtenção, a partir de uma mensagem de Informação de Aperfeiçoamento Suplementar (SEI) na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros de decodificador de referência hipotética (HRD) para o esquema de partição respectivo; e para cada partição respectiva do esquema de partição respectivo, meios para testar, com base nos conjuntos de parâmetros HRD para os esquemas de partição respectivos, a partição respectiva para conformidade com o padrão de codificação de vídeo.
[0013] Em outro exemplo, essa descrição descreve um dispositivo para codificação de dados de vídeo, o dispositivo compreendendo: meios para gerar uma sequência de bits que compreende uma representação codificada de dados de vídeo, a sequência de bits compreendendo uma pluralidade de camadas, onde os meios para a geração da sequência de bits compreende: meios para incluir, na sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camadas de saída: o conjunto de camada de saída consiste de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas; para cada esquema de partição respectivo dentre um ou mais esquemas de partição: o esquema de partição respectivo especifica uma divisão do conjunto de camada de siada em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo; e, para cada esquema de partição respectivo de um ou mais esquemas de partição, incluindo, em uma mensagem de Informação de Aperfeiçoamento Suplementar (SEI) na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros de decodificador de referência hipotética (HRD) para o esquema de partição respectivo; e meios para envio de sequência de bits.
[0014] Em outro exemplo, essa descrição descreve um meio de armazenamento legível por computador incluindo instruções armazenadas no mesmo que quando executadas fazem com que um dispositivo teste a conformidade com um padrão de codificação de vídeo, onde mediante a execução das instruções o dispositivo obtém, a partir de uma sequência de bits que compreende uma representação codificada de dados de vídeo, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camadas de saída; onde: a sequência de bits compreende uma pluralidade de camadas, o conjunto de camadas de saída consiste de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas; para cada esquema de partição respectivo dentre um ou mais esquemas de partição: o esquema de partição respectivo especifica uma divisão do conjunto de camadas de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo; e para cada esquema de partição respectivo de um ou mais esquemas de partição: obter, a partir de uma mensagem de Informação de Aperfeiçoamento Suplementar (SEI) na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros de decodificador de referência hipotética (HRD) para o esquema de partição respectivo; e para cada partição respectiva do esquema de partição respectiva, testar, com base nos conjuntos de parâmetros HRD para os esquemas de partição respectivos, a partição respectiva para conformidade com o padrão de codificação de vídeo.
[0015] Em outro exemplo, essa descrição descreve um meio de armazenamento legível por computador incluindo instruções armazenadas no mesmo que quando executadas fazem com que um dispositivo para codificação de dados de vídeo gere uma sequência de bits que compreende uma representação codificada de dados de vídeo, a sequência de bits compreendendo uma pluralidade de camadas, onde, como parte da ação de fazer com que o dispositivo gere a sequência de bits, as instruções fazem com que o dispositivo inclua, na sequência de bits, um ou mais elementos indicando um ou mais esquemas de partição para um conjunto de camadas de saída, onde: o conjunto de camada de saída consiste de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas; para cada esquema de partição respectivo dentre um ou mais esquemas de partição: o esquema de partição respectivo especifica uma divisão do conjunto de camadas de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo; e para cada esquema de partição respectivo de um ou mais esquemas de partição, inclui, em uma mensagem de Informação de Aperfeiçoamento Suplementar (SEI) na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros de decodificador de referência hipotética (HRD) para o esquema de partição respectivo; e envio da sequência de bits.
[0016] Os detalhes de um ou mais exemplos da descrição são apresentados nos desenhos em anexo e na descrição abaixo. Outras características, objetivos e vantagens serão aparentes a partir da descrição, desenhos e reivindicações.
Breve Descrição dos Desenhos
[0017] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação de vídeo ilustrativo que pode utilizar as técnicas descritas nessa descrição.
[0018] A figura 2 é um diagrama em bloco ilustrando uma implementação ilustrativa de um decodificador de vídeo compreendendo uma pluralidade de decodificadores de camada singular, de acordo com uma técnica dessa descrição.
[0019] A figura 3 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo que pode implementar as técnicas descritas nessa descrição.
[0020] A figura 4 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo que pode implementar as técnicas descritas nessa descrição.
[0021] A figura 5A é um fluxograma ilustrando uma operação ilustrativa de um codificador de vídeo, de acordo com uma técnica dessa descrição.
[0022] A figura 5B é um fluxograma ilustrando uma operação ilustrativa de um decodificador de vídeo, de acordo com uma técnica dessa descrição.
[0023] A figura 6A é um fluxograma ilustrando uma operação ilustrativa de um codificador de vídeo, de acordo com uma técnica dessa descrição.
[0024] A figura 7 é um fluxograma ilustrando uma operação ilustrativa de um decodificador de vídeo, de acordo com uma técnica dessa descrição.
Descrição Detalhada
[0026] Uma sequência de bits (isso é, uma sequência de bits de vídeo) pode compreender uma representação codificada de dados de vídeo. Mais especificamente, a sequência de bits pode compreender uma série de unidades de Camada de Abstração de Rede (NAL). Cada uma das unidades NAL pode incluir um cabeçalho de unidade NAL e uma Carga Útil de Sequência de Byte Bruto (RBSP). Na codificação de vídeo de múltiplas camadas, unidades NAL podem corresponder a várias camadas de dados de vídeo. Na codificação de vídeo escalonável, as camadas podem incluir uma camada de base e uma ou mais camadas de aperfeiçoamento. Na codificação de múltiplas visualizações, cada uma das camadas pode corresponder a diferentes vistas, tal como diferentes vistas de uma cena de vídeo.
[0027] Determinados padrões de codificação de vídeo, tal como Codificação de Vídeo de Alta Eficiência (HEVC), definem vários perfis, tiers e níveis diferentes. Em geral, um "perfil" de um padrão de codificação de vídeo é um subconjunto de características e ferramentas presentes no padrão de codificação de vídeo. Em outras palavras, um perfil define que ferramentas de codificação podem ser utilizadas. Por exemplo, para um codificador de vídeo, um perfil pode ser configurado de ferramentas de codificação que o codificador de vídeo pode utilizar para gerar sequências de bits codificadas que se conformam ao dito perfil. Para um decodificador de vídeo, um perfil pode significar o conjunto de ferramentas de codificação que o decodificador de vídeo deve ter a fim de poder decodificar as sequências de bits que se imagina estar em conformidade com o dito perfil.
[0028] Um nível é um conjunto definido de restrições nos valores que podem ser assumidos pelos elementos de sintaxe e variáveis de um padrão de codificação de vídeo. Um tier é uma categoria especificada de restrições de nível impostas aos valores dos elementos de sintaxe na sequência de bits ou valores de variáveis, onde as restrições de nível são aninhadas dentro de um tier e um decodificador em conformidade com um determinado tier e nível seria capaz de decodificar todas as sequências de bits que se conformam ao mesmo tier ou ao tier inferior desse nível ou qualquer nível abaixo desse nível. Dessa forma, um nível de um tier é um conjunto especificado de restrições impostas aos valores dos elementos de sintaxe na sequência de bits ou variáveis utilizadas na decodificação da sequência de bits.
[0029] Diferentes decodificadores de vídeo podem ter diferentes capacidades. Por exemplo, um decodificador de vídeo pode decodificar as sequências de bits em conformidade com um primeiro perfil, mas podem não ser capazes de decodificar sequências de bits em conformidade com um segundo perfil. Nesse exemplo, outro decodificador de vídeo pode ser capaz de decodificar as sequências de bits em conformidade com o primeiro perfil e o segundo perfil. Por exemplo, com camadas escalonáveis de codificação de vídeo, o nível de qualidade de vídeo que pode ser alcançado pode ser escalonado através de camadas de modo que alguns dispositivos só possam decodificar e apresentar um nível de base de qualidade de vídeo enquanto outros dispositivos podem decodificar e apresentar a qualidade de vídeo aperfeiçoada. Além disso, as camadas escalonáveis podem permitir uma recepção de dados de vídeo mais confiável quando a largura de banda de canal é limitada; por exemplo, um canal de largura de banda limitada ainda pode ser suficiente para comunicação de dados de vídeo da camada de base e canais de largura de banda mais robustos podem permitir a comunicação de dados de vídeo das camadas de base e aperfeiçoamento. Em geral, se um primeiro processador puder decodificar as sequências de bits em conformidade com os perfis, tiers e níveis que são um super conjunto de perfis, tiers e níveis que podem ser decodificados por um segundo processador, o primeiro processador é mais complexo e, portanto, tende a ser mais caro.
[0030] De forma similar, com a codificação de múltiplas visualizações, múltiplas visualizações podem ser decodificáveis por alguns dispositivos, enquanto outros dispositivos podem ter capacidades de decodificação de um número limitado de visualizações. As restrições de largura de banda de canal também podem ser mais eficientemente utilizadas pela codificação de múltiplas visualizações tal como um número limitado de visualizações que são decodificáveis quando a largura de banda é limitada, e um número maior de visualizações que pode ser descodificável quando a largura de banda permite.
[0031] Em alguns casos, um decodificador de vídeo compreende múltiplos núcleos de hardware (por exemplo, unidades de processamento ou módulos de processamento). Em outras palavras, um decodificador de vídeo pode ser construído utilizando-se uma pluralidade de núcleos de hardware. Cada um dos núcleos de hardware pode ser capaz de decodificar de forma independente pelo menos os elementos de sintaxe de baixo nível de uma sequência de bits. Os núcleos diferentes podem ser similares ou diferentes em suas capacidades de processamento, mas independentemente, a presença de múltiplos núcleos pode fornecer o processamento de vantagens através de decodificadores núcleo singulares. Em alguns exemplos, um decodificador de vídeo compreendendo múltiplos núcleos de hardware pode ser capaz de decodificar múltiplas partes de uma sequência de bits em paralelo. Por exemplo, alguns núcleos de processamento podem implementar um único decodificador de camada. Um único decodificador de camada pode ser capaz de decodificar uma única camada de uma sequência de bits, tal como uma camada base de vídeo escalonável ou uma visualização em particular em vídeo de múltiplas visualizações. Em contraste, um decodificador de múltiplas amadas pode ser capaz de decodificar as múltiplas camadas de uma sequência de bits simultaneamente (isso é, em paralelo). Em um exemplo, um núcleo de hardware singular é capaz de decodificar mais de uma camada.
[0032] Diferentes núcleos de hardware de um decodificador de vídeo podem ter diferentes capacidades. Por exemplo, um núcleo de hardware de um decodificador de vídeo pode ser capaz de decodificar as sequências de bits em conformidade com um primeiro perfil, mas não um segundo perfil, enquanto um segundo núcleo de hardware de um decodificador de vídeo pode ser capaz de decodificar as sequências de bit em conformidade com o primeiro perfil e o segundo perfil. Um decodificador de vídeo pode ter núcleos de hardware possuindo capacidades diferentes a fim de manter o custo geral do decodificador de vídeo o mais baixo possível, de acordo com a finalidade pretendida do decodificador de vídeo.
[0033] Tipicamente, em casos nos quais um decodificador de vídeo compreende múltiplos núcleos de hardware, o decodificador de vídeo determina, com base na informação de perfil, tier e nível sinalizada em uma sequência de bits, se um núcleo de hardware mais capaz do decodificador de vídeo pode decodificar a sequência de bits. Se for esse o caso, o decodificador de vídeo determina que é capaz de decodificar a sequência de bits. Esse processo não permite que o decodificador de vídeo determine se qualquer um dos núcleos de hardware menos capazes do decodificador de vídeo pode auxiliar no processo de decodificação da sequência de bits. Como resultado disso, os núcleos de hardware com menor capacidade podem estar inativos enquanto o núcleo de hardware com maior capacidade decodifica toda a sequência de bits. No entanto, os núcleos de hardware com menor capacidade do decodificador de vídeo podem, de fato, ser capazes de decodificar camadas particulares da sequência de bits em paralelo com o núcleo de hardware com maior capacidade do decodificador de vídeo. Como resultado disso, a não utilização dos núcleos de hardware com menor capacidade pode prolongar desnecessariamente os tempos de decodificação.
[0034] Algumas técnicas dessa descrição podem facilitar as reduções nos tempos de decodificação nos decodificadores de vídeo possuindo núcleos de hardware com capacidades diferentes. Por exemplo, algumas técnicas dessa descrição podem reduzir os tempos de decodificação nos decodificadores de vídeo construídos com base em múltiplos decodificadores de camada única possuindo diferentes capacidades. Essa redução nos tempos de decodificação com relação às técnicas mais convencionais pode ser realizada sem alterar os núcleos de hardware propriamente ditos (por exemplo, sem modificação das estruturas físicas dos núcleos de hardware). Adicionalmente, quando os núcleos de hardware possuem as mesmas capacidades, algumas técnicas dessa descrição podem permitir que os decodificadores de vídeo decodifiquem mais camadas em paralelo.
[0035] De acordo com uma técnica ilustrativa dessa descrição, um decodificador de vídeo pode decodificar uma sequência de bits que compreende uma representação codificada de dados de vídeo. Nesse exemplo, a sequência de bits compreende uma pluralidade de camadas. Como parte da decodificação da sequência de bits, o decodificador de vídeo pode obter, a partir da sequência de bits, um ou mais elementos de sintaxe que indicam um ou mais esquemas de partição. Para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo especifica um conjunto respectivo de partições separadas cuja união forma um conjunto de camadas de saída. Cada partição respectiva do conjunto respectivo de partições separadas contém uma ou mais das camadas. Dessa forma, uma partição pode ser um tipo particular de subsequência de bits da sequência de bits. O conjunto de camada de saída pode consistir de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas. Adicionalmente, o decodificador de vídeo pode decodificar cada uma das partições de um esquema de partição particular utilizando diferentes núcleos de processamento em uma pluralidade de núcleos de hardware, o esquema de partição em particular sendo um dentre um ou mais esquemas de partição.
[0036] Em alguns exemplos, para cada partição respectiva de cada esquema de partição respectiva de um ou mais esquemas de partição, o decodificador de vídeo obtém, a partir da sequência de bits, um elemento de sintaxe respectivo que indica a informação de perfil, tier e nível respectiva (PTL) para a partição respectiva. Em alguns casos, o decodificador de vídeo pode selecionar, com base na informação PTL para partições dos esquemas de partição, um esquema de partição a partir de um ou mais esquemas de partição. Em alguns casos, o decodificador de vídeo pode receber a sequência de bits de acordo com um esquema de partição em particular como determinado pelos recursos de rede disponíveis. O decodificador de vídeo pode decodificar cada partição respectiva dentre o esquema de partição em particular utilizando um núcleo respectivo dentre os núcleos de hardware. Cada núcleo respectivo dentre os núcleos de hardware pode implementar um decodificador de camada única respectivo. Em alguns casos, um núcleo de hardware do decodificador de vídeo pode ser capaz de decodificar mais de uma camada.
[0037] Técnicas adicionais dessa descrição podem fornecer o teste de conformidade de sequência de bits utilizando as partições de sequência de bits. Por exemplo, um dispositivo de processamento de vídeo (tal como um codificador de vídeo, decodificador de vídeo ou outro dispositivo) pode decodificar uma sequência de bits que compreende uma representação codificada de dados de vídeo. A sequência de bits pode compreender uma pluralidade de camadas. Como parte da decodificação da sequência de bits, o decodificador de vídeo pode obter, a partir da sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camada de saída. Nesses tipos de exemplos, o conjunto de camadas de saída pode consistir de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas (por exemplo, nem todas as camadas dentre a pluralidade de camadas). Adicionalmente, para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo pode especificar uma divisão do conjunto de camadas de saída em uma ou mais partições. Cada camada no conjunto de camada de saída pode pertencer a exatamente uma partição no esquema de partição respectivo. Para cada esquema de partição respectivo de um ou mais esquemas de partição, o decodificador de vídeo pode obter, a partir de uma mensagem de Informação de Aperfeiçoamento Suplementar (SEI) na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros de decodificador de referência hipotética (HRD) para o esquema de partição. Adicionalmente, para cada partição respectiva do esquema de partição, o dispositivo de processamento de vídeo pode testar, com base nos conjuntos de parâmetros HRD para o esquema de partição respectivo, a partição respectiva para conformidade com um padrão de codificação de vídeo, tal como MV-HEVC ou SHVC.
[0038] De acordo com algumas técnicas dessa descrição, um decodificador de vídeo de múltiplas camadas pode determinar, com base em uma lista de registros triplos, se o decodificador de vídeo de múltiplas camadas pode ser capaz de decodificar (isso é, é configurado para decodificar) uma sequência de bits que compreende uma representação codificada de dados de vídeo de múltiplas camadas. O número de registros triplos na lista pode ser inferior a ou igual a um número de decodificadores de camada única no decodificador de vídeo de múltiplas camadas. Cada registro triplo respectivo na lista de registros triplos indica um perfil, um tier e um nível que um decodificador de camada única respectivo no decodificador de vídeo de múltiplas camadas é capaz de decodificar (isso é, ser configurado para decodificar). Com base no decodificador de vídeo de múltiplas camadas sendo capaz de decodificar as sequências de bits, o decodificador de vídeo de múltiplas camadas pode decodificar a sequência de bits. Em alguns exemplos, o dispositivo de processamento de vídeo pode determinar que o decodificador de múltiplas camadas pode decodificar a sequência de bits pela determinação de que a sequência de bits especifica um esquema de partição onde a informação PTL de cada partição dentre o esquema de partições indica que a partição pode ser decodificada por pelo menos um dos decodificadores de camada singular. Isso pode permitir que um decodificador de vídeo de múltiplas camadas possuindo múltiplos decodificadores de camada única determine se o decodificador de vídeo de múltiplas camadas pode decodificar a sequência de bits.
[0039] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação de vídeo ilustrativo 10 que pode utilizar as técnicas dessa descrição. Como utilizado aqui, o termo "codificador de vídeo" se refere genericamente a ambos os codificadores de vídeo e decodificadores de vídeo. Nessa descrição, os termos "codificação de vídeo" ou "codificação" podem se referir genericamente à codificação de vídeo ou decodificação de vídeo.
[0040] Como ilustrado na figura 1, o sistema de codificação de vídeo 10 inclui um dispositivo fonte 12, um dispositivo de destino 14, e um elemento de rede 15. O dispositivo fonte 12 gera os dados de vídeo codificados. De acordo, o dispositivo fonte 12 pode ser referido como um dispositivo de codificação de vídeo ou um aparelho de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados gerados pelo dispositivo fonte 12. De acordo, o dispositivo de destino 14 pode ser referido a um dispositivo de decodificação de vídeo ou um aparelho de decodificação de vídeo. O dispositivo fonte 12 e o dispositivo de destino 14 podem ser exemplos de dispositivos de codificação de vídeo ou aparelhos de codificação de vídeo.
[0041] O dispositivo fonte 12 e o dispositivo de destino 14 podem compreender uma faixa ampla de dispositivos, incluindo computadores desktop, dispositivos de computação móvel, computadores tipo notebook (por exemplo, laptop), computadores tablet, caixas de decodificação, aparelhos telefônicos tal como os chamados "smartphones", televisões, câmeras, dispositivos de exibição, câmeras de mídia digital, consoles de jogos de vídeo, computadores automotivos ou similares.
[0042] O elemento de rede 15 pode receber dados de vídeo codificados e enviar dados de vídeo codificados processados. O elemento de rede 15 pode ser um elemento de rede ciente de mídia (MANE), um dispositivo de rede de distribuição de conteúdo (CDN), ou outro tipo de dispositivo (por exemplo, dispositivo de computação). O dispositivo de rede 15 pode realizar uma ou mais técnicas dessa descrição. Por exemplo, o dispositivo de rede 15 pode realizar um ou mais testes de conformidade de sequência de bit, de acordo com uma ou mais técnicas dessa descrição. O elemento de rede 15, o dispositivo fonte 12, o dispositivo de destino 14 e outros tipos de dispositivo que processam os dados de vídeo podem ser considerados dispositivos de processamento de vídeo.
[0043] O dispositivo de destino 14 pode receber dados de vídeo codificados do dispositivo fonte 12 através de um canal 16. O canal 16 pode compreender um ou mais meios ou dispositivos capazes de mover os dados de vídeo codificados do dispositivo fonte 12 para o dispositivo de destino 14. Em um exemplo, o canal 16 pode compreender um ou mais meios de comunicação que permitem que o dispositivo fonte 12 transmita os dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Nesse exemplo, o dispositivo fonte 12 pode modular os dados de vídeo codificados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e pode transmitir os dados de vídeo modulados para o dispositivo de destino 14. O um ou mais meios de comunicação podem incluir meio de comunicação com e/ou sem fio, tal como espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. O um ou mais meios de comunicação podem 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 (por exemplo, a Internet). Um ou mais meios de comunicação podem incluir roteadores, comutadores, estações base ou outro equipamento que facilite a comunicação do dispositivo fonte 12 para o dispositivo de destino 14.
[0044] Em outro exemplo, o canal 16 pode incluir um meio de armazenamento que armazena os dados de vídeo codificados gerados pelo dispositivo fonte 12. Nesse exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento, por exemplo, através de acesso com disco ou cartão. O meio de armazenamento pode incluir uma variedade de meios de armazenamento de dados acessados localmente tal como discos Blu-ray, DVDs, CD-ROMs, memória flash, ou outro meio de armazenamento digital adequado para o armazenamento de dados de vídeo codificados.
[0045] Em um exemplo adicional, o canal 16 pode incluir um servidor de arquivo ou outro dispositivo de armazenamento intermediário que armazena os dados de vídeo codificados gerados pelo dispositivo fonte 12. Nesse exemplo, o dispositivo de destino 14 pode acessar os dados de vídeo codificados armazenados no servidor de arquivo ou outro dispositivo de armazenamento intermediário através do sequenciamento ou download. O servidor de arquivo pode ser um tipo de servidor capaz de armazenar os dados de vídeo codificados e transmitir os dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo ilustrativos incluem servidores de rede (por exemplo, para um sítio de rede), servidores de protocolo de transferência de arquivo (FTP), dispositivos de armazenamento anexados à rede (NAS), e acionadores de disco local.
[0046] O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de uma conexão de dados padrão, tal como uma conexão com a Internet. Tipos ilustrativos de conexões de dados podem incluir canais sem fio (por exemplo, conexões Wi-Fi), conexões com fio (por exemplo, linha de assinante digital (DSL), modem a cabo, etc.), ou combinações de ambos que são adequadas para acessar os dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão dos dados de vídeo codificados a partir do servidor de arquivo pode ser uma transmissão de sequenciamento, uma transmissão de download, ou uma combinação de ambos.
[0047] As técnicas dessa descrição não estão limitadas aos aplicativos sem fio ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte a 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, por exemplo, através da Internet, codificação de dados de vídeo para armazenamento em um meio de armazenamento de dados, decodificação dos dados de vídeo armazenado em um meio de armazenamento de dados, ou outros aplicativos. Em alguns exemplos, o sistema de codificação de vídeo 10 pode ser configurado para suportar a 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.
[0048] A figura 1 é meramente um exemplo e as técnicas dessa descrição podem se aplicar às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados (por exemplo, dados de vídeo) são recuperados a partir de uma memória local, sequenciados através de uma rede ou similar. Um dispositivo de codificação de vídeo pode codificar e armazenar os dados (por exemplo, dados de vídeo) na memória e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar os dados (por exemplo, dados de vídeo) a partir da memória. Em muitos exemplos, a codificação e decodificação é realizada por dispositivos que não se comunicam um com o outro, mas simplesmente codificam os dados na memória e/ou recuperam e decodificam os dados (por exemplo, dados de vídeo) a partir da memória.
[0049] No exemplo da figura 1, o dispositivo fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20, e uma interface de saída 22. Em alguns exemplos, a interface de saída 22 pode incluir um modulador/demodulador (modem) e/ou um transmissor. A fonte de vídeo 18 pode incluir um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo dados de vídeo previamente capturados, uma interface de alimentação de vídeo para receber os dados de vídeo de um provedor de conteúdo de vídeo e/ou um sistema gráfico de computador para gerar dados de vídeo, ou uma combinação de tais fontes de dados de vídeo. Dessa forma, em alguns exemplos, o dispositivo fonte 12 compreende uma câmera configurada para capturar dados de vídeo.
[0050] O codificador de vídeo 20 pode codificar dados de vídeo a partir da fonte de vídeo 18. Em alguns exemplos, o dispositivo fonte 12 transmite diretamente os dados de vídeo codificados para o dispositivo de destino 14 através da interface de saída 22. Em outros exemplos, os dados de vídeo codificados também podem ser armazenados em um meio de armazenamento ou um servidor de arquivo para acesso posterior pelo dispositivo de destino 14 para decodificação e/ou reprodução.
[0051] No exemplo da figura 1, o dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns exemplos, a interface de entrada 28 inclui um receptor e/ou um modem. A interface de entrada 28 pode receber dados de vídeo codificados através do canal 16. O decodificador de vídeo 30 pode decodificar os dados de vídeo codificados. O dispositivo de exibição 32 pode exibir os dados de vídeo decodificados. O dispositivo de exibição 32 pode ser integrado com ou pode estar fora do dispositivo de destino 14. O dispositivo de exibição 32 pode compreender uma variedade de dispositivos de exibição, tal como 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.
[0052] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuitos adequados, 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, hardware ou quaisquer combinações dos mesmos. Se as técnicas forem implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento adequado, legível por computador e não transitório e pode executar as instruções em hardware utilizando um ou mais processadores para realizar as técnicas dessa descrição. Qualquer um dos acima expostos (incluindo hardware, software, uma combinação de hardware e software, etc.) pode ser considerado como sendo um ou mais processadores. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador (CODEC) combinado em um dispositivo respectivo.
[0053] Essa descrição pode se referir geralmente ao codificador de vídeo 20 "sinalizando" determinada informação para outro dispositivo, tal como o decodificador de vídeo 30. O termo "sinalizando" pode se referir geralmente à comunicação de elementos de sintaxe e/ou outros dados utilizados para decodificar os dados de vídeo comprimidos. Tal comunicação pode ocorrer durante um espaço de tempo, tal como podendo ocorrer quando do armazenamento de elementos de sintaxe em um meio de armazenamento legível por computador em uma sequência de bits codificada no momento da codificação, que então podem ser recuperados por um dispositivo de decodificação em qualquer momento depois de terem sido armazenados nesse meio.
[0054] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 operam de acordo com um padrão de compressão de vídeo, tal como ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo sua extensão de Codificação de Vídeo Escalonável (SVC), extensão de Codificação de Vídeo de Múltiplas Visualizações (MVC), e extensão 3DV com base em MVC. Em alguns casos, qualquer sequência de bit em conformidade com a extensão 3DV com base em MVC de H.264/AVC conterá sempre uma subsequência de bits que está em conformidade com a extensão MVC de H.264/AVC. O último rascunho conjunto de MVC é descrito em "Advanced video coding for generic audiovisual services," Recomendação ITU-T H.264, março de 2010. Adicionalmente, existe um esforço em andamento para se gera ruma extensão de codificação de vídeo tridimensional (3DV) para H.264/AVC, isso é, 3DV com base em AVC. Em outros exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, e ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG- 2 Visual, ITU-T H.263, e ISO/IEC MPEG-4 Visual.
[0055] Em outros exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação em Vídeo ITU-T (VCEG) e o Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). Um rascunho do padrão HEVC, referido como "especificação de rascunho HEVC" é descrito em Bross et al., "High Efficiency Video Coding (HEVC) Defect Report 3", Equipe Colaborativa Conjunta de Codificação de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 16o. Encontro, San José, US, janeiro de 2014, documento no. JCTVC-P1003_v1. A especificação de rascunho HEVC está disponível a partir de http://phenix.it- sudparis.eu/jct/doc end user/documents/16 San%20Jose/wg11JC TVV-P1003-v1.zip.
[0056] Adicionalmente, existem esforços em andamento para se produzir uma extensão de codificação de vídeo escalonável para HEVC. A extensão de codificação de vídeo escalonável de HEVC pode ser referida como SHEVC ou SHVC. Adicionalmente, uma Equipe de Colaboração Conjunta de Codificação de Vídeo 3D (JCT-3C) de VCEG e MPEG está desenvolvendo um padrão 3DV com base em HEVC. Parte dos esforços de padronização para o padrão 3DV com base em HEVC inclui a padronização de um codec de vídeo de múltiplas visualizações com base em HEVC (isso é, MV-HEVC). Outra parte dos esforços de padronização para o padrão 3DV cm base em HEVC inclui a padronização de uma codificação de Vídeo 3D com base em HEVC (isso é, 3D-HEVC). Para 3D-HEVC, novas ferramentas de codificação, incluindo as no nível de unidade de codificação (CU) ou de unidade de previsão (PU), para ambas as visualizações de textura e profundidade podem ser incluídas e suportadas.
[0057] Um Rascunho de Trabalho recente (WD) de MV- HEVC, referido como MV-HEVC WD8 doravante, está disponível a partir de http://phenix.it- sudparis.eu/jct2/doc end user/documents/8 Valencia/wg11/JCT 3V-H1002-v1.zip. A extensão escalonável de HEVC, chamada de SHVC, também está sendo desenvolvida por JCT-VC. Um Rascunho de Trabalho recente (WD) de SHVC, referido como SHVC WD6 doravante, está disponível a partir de http://phenix.it- sudparis.eu/jct/doc end user/documents/17 Valencia/wg11/JCT VC-Q1008-v1.zip.
[0058] Em HEVC e outras especificações de codificação de vídeo, uma sequência e vídeo inclui tipicamente uma série de imagens. Imagens também podem ser referidas como "quadros". Uma imagem pode incluir três conjuntos de amostras, denotados SL, SCb e SCr. SL é um conjunto bidimensional (isso é, um bloco) de amostras de luminescência. SCb é um conjunto bidimensional de amostras de crominância Cb. SCr é um conjunto bidimensional de amostras de crominância Cr. As amostras de crominância também podem ser referidas aqui como amostras "chroma". Em outros casos, uma imagem pode ser monocromática e pode incluir apenas um conjunto de amostras de luminescência.
[0059] Para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode gerar um conjunto de unidades de árvore de codificação (CTUs). Cada uma das CTUs pode compreender um bloco de árvore de codificação de amostras de luminescência, dois blocos de árvore de codificação correspondentes de amostras de crominância, e estruturas de sintaxe utilizadas para codificar as amostras dos blocos de árvore de codificação. Nas imagens monocromáticas ou imagens possuindo três planos de cor separados, uma CTU pode compreender um único bloco de árvore de codificação e estruturas de sintaxe utilizadas para codificar as amostras do bloco de árvore de codificação. Um bloco de árvore de codificação pode ser um bloco N x N de amostras. Uma CTU também pode ser referida como um "bloco de árvore" ou uma "unidade de codificação maior" (LCU). As CTUs de HEVC podem ser amplamente análogas aos macro blocos de outros padrões, tal como H.264/AVC. No entanto, uma CTU não é necessariamente limitada a um tamanho em particular e pode incluir uma ou mais unidades de codificação (CUs). Uma fatia pode incluir um número inteiro de CTUs ordenadas consecutivamente em uma ordem de digitalização raster.
[0060] Essa descrição pode utilizar o termo "unidade de vídeo" ou "bloco de vídeo" ou "bloco" para se referir a um ou mais blocos de amostra e estruturas de sintaxe utilizadas para codificar as amostras de um ou mais blocos de amostras. Tipos ilustrativos de unidades de vídeo podem incluir CTUs, CUs, PUs, unidades de transformação (TUs), macro blocos, partições de macro bloco, e assim por diante. Em alguns contextos, a discussão das PUs pode ser intercambiada com a discussão dos macro blocos ou partições de macro bloco.
[0061] Para gerar uma CTU codificada, o codificador de vídeo 20 pode realizar de forma recursiva a partição de quad-tree nos blocos árvore de codificação de uma CTU para dividir os blocos de árvore de codificação em blocos de codificação, por isso o nome "unidades de árvore de codificação". Um bloco de codificação é um bloco N x N de amostras. Uma CU pode compreender um bloco de codificação de amostras de luminescência e dois blocos de codificação correspondentes de amostras de crominância de uma imagem que possui um conjunto de amostras de luminescência, um conjunto de amostras Cb e um conjunto de amostras Cr, e estruturas de sintaxe utilizadas para codificar as amostras dos blocos de codificação. Nas imagens monocromáticas ou imagens possuindo três planos de cor separados, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe utilizadas para codificar as amostras do bloco de codificação.
[0062] O codificador de vídeo 20 pode dividir um bloco de codificação de uma CU em um ou mais blocos de previsão. Um bloco de previsão é um bloco retangular (isso é, quadrado ou não) de amostras no qual a mesma previsão é aplicada. Uma unidade de previsão (PU) de uma CU pode compreender um bloco de previsão de amostras de luminescência, dois blocos de previsão correspondentes de amostras de crominância, e estruturas de sintaxe utilizadas para prever os blocos de previsão. Em imagens monocromáticas ou imagens possuindo três planos de cor separados, uma PU pode compreender um único bloco de previsão e estruturas de sintaxe utilizadas para prever o bloco de previsão. O codificador de vídeo 20 pode gerar blocos de previsão (por exemplo, blocos de luminescência, Cb e Cr) para os blocos de previsão (por exemplo, blocos de luminescência, Cb e Cr) de cada PU da CU.
[0063] O codificador de vídeo 20 pode utilizar a intraprevisão ou interprevisão para gerar os blocos de previsão para uma PU. Se o codificador de vídeo 20 utilizar a intraprevisão para gerar os blocos de previsão de uma PU, o codificador de vídeo 20 pode gerar os blocos de previsão da PU com base em amostras decodificadas da imagem que inclui a PU.
[0064] Depois que o codificador de vídeo 20 gera blocos de previsão (por exemplo, blocos de previsão de luminescência, Cb e Cr) para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar um ou mais blocos residuais para a CU. Por exemplo, o codificador de vídeo 20 pode gerar um bloco residual de luminescência para a CU. Cada amostra no bloco residual de luminescência de CU indica uma diferença entre uma amostra de luminescência em um dos blocos de luminescência de previsão da CU e uma amostra correspondente no bloco de codificação de luminescência original da CU. Adicionalmente, o codificador de vídeo 20 pode gerar um bloco residual de Cb para a CU. Cada amostra no bloco residual de Cb da CU pode indicar uma diferença entre uma amostra Cb em um dos blocos Cb de previsão da CU e uma amostra correspondente no bloco de codificação de Cb original da CU. O codificador de vídeo 20 também pode gerar um bloco residual Cr para a CU. Cada amostra no bloco residual Cr da CU pode indicar uma diferença entre uma amostra Cr em um dos blocos Cr de previsão da CU e uma amostra correspondente no bloco de codificação Cr original da CU.
[0065] Adicionalmente, o codificador de vídeo 20 pode utilizar a partição de quad-tree para decompor os blocos residuais (por exemplo, blocos residuais de luminescência, Cb e Cr) de uma CU em um ou mais blocos de transformação (por exemplo, blocos de transformação de luminescência, Cb e Cr). Um bloco de transformação é um bloco retangular (por exemplo, quadrado ou não) de amostras no qual a mesma transformação é aplicada. Uma unidade de transformação (TU) de uma CU pode compreender um bloco de transformação de amostras de luminescência, dois blocos de transformação correspondentes de amostras de crominância, e estruturas de sintaxe utilizadas para transformar as amostras de bloco de transformação. Dessa forma, cada TU de uma CU pode ter um bloco de transformação de luminescência, um bloco de transformação Cb e um bloco de transformação Cr. O bloco de transformação de luminescência da TU pode ser um sub-bloco do bloco residual de luminescência da CU. O bloco de transformação Cb pode ser um sub-bloco do bloco residual Cb da CU. O bloco de transformação Cr pode ser um sub-bloco do bloco residual Cr da CU. Em imagens monocromáticas ou imagens possuindo três planos de cores separados, uma TU pode compreender um único bloco de transformação e estruturas de sintaxe utilizadas para transformar as amostras do bloco de transformação.
[0066] O codificador de vídeo 20 pode aplicar uma ou mais transformações a um bloco de transformação de uma TU para gerar um bloco de coeficientes para a TU. Por exemplo, o codificador de vídeo 20 pode aplicar uma ou mais transformações a um bloco de transformação de luminescência de uma TU para gerar um bloco de coeficientes de luminescência para a TU. Um bloco de coeficientes pode ser uma quantidade escalar. O codificador de vídeo 20 pode aplicar uma ou mais transformações a um bloco de transformação Cb de uma TU para gerar um bloco de coeficientes Cb para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformações a um bloco de transformação Cr de uma TU para gerar um bloco de coeficientes Cr para a TU.
[0067] Depois da geração de um bloco de coeficientes (por exemplo, um bloco de coeficientes de luminescência, um bloco de coeficientes Cb ou um bloco de coeficientes Cr), o codificador de vídeo 20 pode quantizar o bloco de coeficientes. A quantização se refere geralmente a um processo no qual os coeficientes de transformação são quantizados para reduzir possivelmente a quantidade de dados utilizada para representar os coeficientes de transformação, fornecendo compressão adicional. Depois que o codificador de vídeo 20 quantiza um bloco de coeficientes, o codificador de vídeo 20 pode codificar por entropia os elementos de sintaxe indicando os coeficientes de transformação quantizados. Por exemplo, o codificador de vídeo 20 pode realizar a Codificação Aritmética Binária Adaptativa de Contexto (CABAC) nos elementos de sintaxe indicando os coeficientes de transformação quantizados.
[0069] O codificador de vídeo 20 pode enviar uma sequência de bits que inclui uma sequência de bits que forma uma representação de imagens codificadas e dados associados. Dessa forma, a sequência de bits compreende uma representação codificada dos dados de vídeo. A sequência de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Uma unidade NAL é uma estrutura de sintaxe contendo uma indicação do tipo de dados na unidade NAL e bytes contendo esses dados na forma de uma carga útil de sequência de bytes brutos (RBSP) intercalados como necessário com bits de prevenção de emulação. Cada uma das unidades NAL inclui um cabeçalho de unidade NAL e encapsula uma RBSP. O cabeçalho de unidade NAL pode incluir um elemento de sintaxe que indica um código de tipo de unidade NAL. O código de tipo de unidade NAL especificado pelo cabeçalho de unidade NAL de uma unidade NAL indica o tipo de unidade NAL. Uma RBSP pode ser uma estrutura de sintaxe contendo um número inteiro de bytes que é encapsulado dentro de uma unidade NAL. Em alguns casos, uma RBSP inclui bits zero.
[0069] Diferentes tipos de unidades NAL podem encapsular diferentes tipos de RBSPs. Por exemplo, diferentes tipos de unidade NAL podem encapsular diferentes RBSPs para os conjuntos de parâmetros de vídeo (VPSs), conjuntos de parâmetros de sequência (SPSs), conjuntos de parâmetros de imagem (PPSs), fatias codificadas, informação de aperfeiçoamento suplementar (SEI) e assim por diante. As unidades NAL que encapsulam RBSPs para codificação por vídeo de dados (em oposição às RBSPs para conjuntos de parâmetros e mensagens SEI) podem ser referidas como unidades NAL de camada de codificação de vídeo (VCL). Em HEVC (isso é, HEVC de não múltiplas camadas), uma unidade de acesso pode ser um conjunto de unidades NAL que são consecutivas na ordem de decodificação e contêm exatamente uma imagem codificada. Em adição às unidades NAL de fatia codificada da imagem codificada, a unidade de acesso também pode conter outras unidades NAL não contendo fatias da imagem codificada. Em alguns exemplos, a decodificação de uma unidade de acesso sempre resulta em uma imagem decodificada. A Informação de Aperfeiçoamento Suplementar (SEI) contém informação que não é necessária para se decodificar as amostras das imagens codificadas a partir das unidades NAL VCL. Uma RBSP SEI contém uma ou mais mensagens SEI.
[0070] O decodificador de vídeo 30 pode receber uma sequência de bits gerada pelo codificador de vídeo 20. Adicionalmente, o decodificador de vídeo 30 pode analisar a sequência de bits para obter elementos de sintaxe da sequência de bits. O decodificador de vídeo 30 pode reconstruir as imagens de dados de vídeo com base pelo menos em parte nos elementos de sintaxe obtidos a partir da sequência de bits. O processo de reconstrução de dados de vídeo pode ser geralmente alternado com relação ao processo realizado pelo codificador de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode utilizar vetores de movimento de PUs para determinar os blocos de previsão para as PUs de uma CU atual. Adicionalmente, o decodificador de vídeo 30 pode quantizar de forma invertida os blocos de coeficiente das TUs da CU atual. O decodificador de vídeo 30 pode realizar as transformações inversas nos blocos de coeficiente para reconstruir os blocos de transformação das TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual pela adição de amostras dos blocos de previsão para as PUs da CU atual às amostras correspondentes dos blocos de transformação das TUs da CU atual. Pela reconstrução de blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.
[0071] As técnicas dessa descrição são potencialmente aplicáveis à codificação de múltiplas visualizações e/ou padrões e especificações 3DV, incluindo MV-HEVC e 3D-HEVC. Na codificação de múltiplas visualizações, tal como definido em MV-HEVC e 3D-HEVC, pode haver múltiplas visualizações da mesma cena a partir de pontos de visualização diferentes. No contexto de codificação de múltiplas visualizações e codificação de vídeo escalonável, o termo "unidade de acesso" pode ser utilizado para se referir ao conjunto de imagens que corresponde ao mesmo caso de tempo. Em alguns casos, no contexto de codificação de múltiplas visualizações e codificação de vídeo escalonável, uma unidade de acesso pode compreender um conjunto de unidades NAL que são associadas uma à outra de acordo com uma regra de classificação especificada, são consecutivas em ordem de decodificação, e contêm as unidades VCL NAL de todas as imagens codificadas associadas com o mesmo tempo de envio e suas unidades NAL não VCL associadas. Dessa forma, os dados de vídeo podem ser conceitualizados como uma série de unidades de acesso ocorrendo com o tempo.
[0072] Na codificação 3DV, tal como definido em 3D-HEVC, um "componente de visualização" pode ser uma representação codificada de uma visualização em uma única unidade de acesso. Um componente de visualização pode conter um componente de visualização de profundidade e um componente de visualização de textura. Um componente de visualização de profundidade pode ser uma representação codificada de profundidade de uma visualização em uma única unidade de acesso. Um componente de visualização de textura pode ser uma representação codificada da textura de uma visualização em uma única unidade de acesso. Nessa descrição, uma "visualização" pode se referir a uma sequência de componentes de visualização associados com o mesmo identificador de visualização.
[0073] O componente de visualização de textura e o componente de visualização de profundidade dentro de um conjunto de imagens de uma visualização podem ser considerados correspondentes um ao outro. Por exemplo, o componente de visualização de textura dentro de um conjunto de imagens de uma visualização é considerado correspondente ao componente de visualização de profundidade dentro do conjunto de imagens da visualização, e vice-versa (isso é, o componente de visualização de profundidade corresponde ao seu componente de visualização de textura no conjunto, e vice-versa). Como utilizado nessa descrição, um componente de visualização de textura que corresponde a um componente de visualização de profundidade pode ser considerado um componente de visualização de textura e o componente de visualização de profundidade sendo parte de uma mesma visualização de uma única unidade de acesso.
[0074] O componente de visualização de textura inclui o conteúdo de imagem atual que é exibido. Por exemplo, o componente de visualização de textura pode incluir componentes de luminescência (Y) e crominância (Cb e Cr). O componente de visualização de profundidade pode indicar profundidades relativas de pixels em seu componente de visualização de textura correspondente. Como um exemplo, o componente de visualização de profundidade pode compreender uma imagem de escala em cinza que inclui apenas os valores de luminescência, mas os valores de luminescência em um componente de visualização de profundidade podem representar um nível de profundidade de um pixel ou conjunto de pixels, em oposição a um nível de intensidade de pixel que seria portado por um componente de luminescência de uma visualização de textura. Em outras palavras, o componente de visualização de profundidade pode não portar qualquer conteúdo de imagem, mas, em vez disso, fornecer uma medição das profundidades relativas dos pixels no componente de visualização de textura. O componente de visualização de textura utilizando apenas os valores de luminescência (por exemplo, valores de intensidade) para identificar a profundidade é fornecido para fins de ilustração e não deve ser considerado limitador. Em outros exemplos, qualquer técnica pode ser utilizada para indicar as profundidades relativas de pixels no componente de visualização de textura.
[0075] Na codificação de múltiplas visualizações e codificação SVC, uma sequência de bits pode possuir uma pluralidade de camadas. Na codificação de múltiplas visualizações, cada uma das camadas pode corresponder a uma visualização diferente. Uma camada pode ser referida como uma "camada base" se um decodificador de vídeo (por exemplo, o decodificador de vídeo 30) puder decodificar as imagens na camada sem referência às imagens em qualquer outra camada. Uma camada pode ser referida como uma "camada não base" ou uma "camada dependente" se a decodificação da camada for dependente da decodificação das imagens em uma ou mais outras camadas. Quando a codificação de uma imagem é uma das camadas de não base, um codificador de vídeo (tal como o codificador de vídeo 20 ou o decodificador de vídeo 30) pode adicionar uma imagem a uma lista de imagens de referência se a imagem estiver em uma visualização diferente, mas dentro de um mesmo caso de tempo (isso é, unidade de acesso) que a imagem que o codificador de vídeo está codificando no momento. Como outras imagens de referência de interprevisão, o codificador de vídeo pode inserir uma imagem de referência de previsão intervisualização em qualquer posição de uma lista de imagens de referência.
[0076] Em SVC, as camadas além da camada base podem ser referidas como "camadas de aperfeiçoamento" e podem fornecer informação que aperfeiçoa a qualidade visual dos dados de vídeo decodificados a partir da sequência de bits. SVC pode melhorar a resolução espacial, a razão de sinal para ruído (isso é, qualidade) ou taxa temporal. Na codificação de vídeo escalonável (por exemplo, SHVC), uma "representação de camada" pode ser uma representação codificada de uma camada espacial em uma única unidade de acesso. Para facilitar a explicação, essa descrição pode se referir a componentes de visualização e/ou representações de camada como "componentes de visualização/representações de camada" ou simplesmente "imagens".
[0077] Para se implementar as camadas, os cabeçalhos das unidades NAL podem incluir elementos de sintaxe nuh_reserved_zero_6bit, que também podem ser referidos como elementos de sintaxe "nuh_layer_id". As unidades NAL possuem elementos de sintaxe nuh_reserved_zero_6bit que especificam valores diferentes pertencentes a camadas diferentes de uma sequência de bits. Dessa forma, na codificação de múltiplas visualizações (por exemplo, MV-HEVC), 3DV (por exemplo, 3D-HEVC) ou SVC (por exemplo, SHVC), o elemento de sintaxe nuh_reserved_zero- 6bits de uma unidade NAL especifica um identificador de camada (isso é, um ID de camada) da unidade NAL. Em alguns exemplos, o elemento de sintaxe nuh_reserved_zero_6bits de uma unidade NAL é igual a 0 se a unidade NAL se referir a uma camada de base na codificação de múltiplas visualizações (por exemplo, MV-HEVC), codificação 3DV (por exemplo, 3D- HEVC), ou SVC (por exemplo, SHVC). Dados em uma camada de base de uma sequência de bits podem ser decodificados sem referência aos dados em qualquer outra camada da sequência de bits. Se a unidade NAL não se referir a uma camada base na codificação de múltiplas visualizações, 3DV, ou SVC, o elemento de sintaxe nuh_reserved_zero-6bits do elemento de sintaxe podem ter um valor diferente de zero. Como indicado acima, na codificação de múltiplas visualizações e codificação 3DV, diferentes camadas de uma sequência de bits podem corresponder a diferentes vistas.
[0078] Adicionalmente, alguns componentes de visualização/representações de camada dentro de uma camada podem ser decodificados sem referência a outros componentes de visualização/representações de camada dentro da mesma camada. Dessa forma, as unidades NAL encapsulando dados de determinados componentes de visualização/representações de camada de uma camada podem ser removidas da sequência de bits sem afetar a capacidade de decodificação de outros componentes de visualização/representações de camada na camada. A remoção de unidades NAL encapsulando dados de tais componentes de visualização/representações de camada pode reduzir a taxa de quadro da sequência de bits. Um subconjunto de componentes de visualização/representações de camada dentro de uma camada que pode ser decodificada sem referência a outros componentes de visualização/representações de camada dentro da camada pode ser referido aqui como uma "subcamada" ou uma "subcamada temporal".
[0079] As unidades NAL podem incluir elementos de sintaxe temporal_id que especificam identificadores temporais (isso é, TemporalIds) das unidades NAL. O identificador temporal de uma unidade NAL identifica uma subcamada à qual a unidade NAL pertence. Dessa forma, cada subcamada de uma sequência de bits pode ter um identificador temporal diferente. Em geral, se o identificador temporal de uma primeira unidade NAL for inferior ao identificador temporal de uma segunda unidade NAL, os dados encapsulados pela primeira unidade NAL podem ser decodificados sem referência aos dados encapsulados pela segunda unidade NAL.
[0080] como brevemente indicado acima, as unidades NAL encapsulam RBSPs para conjuntos de parâmetros de vídeo (VPSs), conjuntos de parâmetros de sequência (SPSs), conjuntos de parâmetros de imagem (PPSs). Um VPS é uma estrutura de sintaxe compreendendo elementos de sintaxe que se aplicam a zero ou mais sequências de vídeo codificadas inteiras (CVSs). Um SPS também é uma estrutura de sintaxe compreendendo elementos de sintaxe que se aplicam a zero ou mais CVSs inteiras. Um SPS pode incluir um elemento de sintaxe que identifica um VPS que está ativa quando o SPS está ativo. Dessa forma, os elementos de sintaxe que identificam um VPS podem ser aplicáveis de forma mais geral do que os elementos de sintaxe de um SPS. Um PPS é uma estrutura de sintaxe compreendendo elementos de sintaxe que se aplicam a zero ou mais imagens codificadas. Um PPS pode incluir um elemento de sintaxe que identifica um SPS que está ativo quando o PPS está ativo. Um cabeçalho de fatia de uma fatia pode incluir um elemento de sintaxe que indica um PPS que está ativo quando a fatia está sendo codificada.
[0081] Conjuntos de parâmetros, tal como VPSs, SPSs e PPSs podem incluir estrutura de sintaxe de extensão específicas para extensões do padrão HEVC. Por exemplo, conjuntos de parâmetros podem incluir extensões específicas para o padrão HEVC. Por exemplo, os conjuntos de parâmetros podem incluir extensões específicas a SHVC, MV-HEVC, 3D-HEVC e assim por diante. As estruturas de sintaxe de extensão podem incluir elementos de sintaxe aplicáveis às extensões para o padrão HEVC. A Tabela 1, abaixo, ilustra uma parte da extensão VPS definida em SHVC WD6 e MV-HEVC WD8. Tabela 1
Figure img0001
Figure img0002
[0082] No exemplo da Tabela 1, acima, e outras tabelas de sintaxe dessa descrição, os elementos de sintaxe como o descritor de tipo ue(v) podem ser inteiros não designados de comprimento variável codificados utilizando a codificação Golomb exponencial de ordem o (Exp-Golomb) com o bit esquerdo primeiro. No exemplo da Tabela 1 e das tabelas seguintes, os elementos de sintaxe possuindo descritores da forma u(n), onde n é um inteiro não negativo, são valores não designados de comprimento n.
[0083] A parte da extensão VPS definida na Tabela 1 inclui elementos de sintaxe definindo um ou mais conjuntos de camada de saída. Um conjunto de camadas de saída é um conjunto de camadas consistindo de camadas de um dos conjuntos de camada especificados no VPS, onde uma ou mais camadas no conjunto de camadas são indicados para serem camadas de saída. Como definido em SHVC WD6, uma camada de saída é uma camada de um conjunto de camadas de saída que é enviado quando TargetOptLayerSetIdx é igual ao índice do conjunto de camada de saída. TargetOptLayerSetIdx especifica uma lista de identificador de camada de um ponto de operação em uso e um conjunto de camadas de saída alvo. Um ponto de operação pode se referir a um subconjunto (por exemplo, subconjunto adequado) de unidades NAL na sequência de bits. Adicionalmente, como definido em SHVC WD6, uma camada de saída alvo é uma camada que deve ser enviada e é uma das camadas de saída do conjunto de camadas de saída com índice olsIdx de modo que TargetOptLayerSetIdx seja igual a olsIdx. Dessa forma, em geral, o conjunto de camada de saída alvo pode ser um conjunto particular entre os conjuntos de amada de saída. Cada camada do conjunto de camada de saída alvo é enviada (por exemplo, fornecida como saída de um decodificador de vídeo). Em alguns casos, o decodificador de vídeo 30 pode decodificar uma camada particular de uma sequência de bits, mas não envia os dados de vídeo decodificados da camada particular. Em vez disso, o decodificador de vídeo 30 pode utilizar os dados de vídeo decodificados da camada particular para decodificar os dados de vídeo das camadas que estão no conjunto de camada de saída alvo.
[0084] Adicionalmente, a parte da extensão VPS definida na Tabela 1 inclui elementos de sintaxe definindo uma ou mais estruturas de sintaxe de perfil, tier e nível (PTL). Cada estrutura de sintaxe PTL especifica um perfil, tier e nível para cada sequência de vídeo codificada. Como ilustrado adicionalmente na Tabela 1, a extensão VPS inclui elementos de sintaxe profile_level_tier_idx que identificam as estruturas de sintaxe PTL aplicáveis aos respectivos conjuntos de camadas de saída. Dessa forma, a extensão VPS especifica a informação PTL para cada um dos conjuntos de camadas de saída.
[0085] Em geral, um "perfil" é um subconjunto de características e ferramentas presentes em um padrão de codificação de vídeo (por exemplo, HEVC ou uma extensão do mesmo). Dentro dos limites impostos por um perfil determinado ainda é possível se exigir uma variação muito grande no desempenho dos codificadores e decodificadores dependendo dos valores obtidos pelos elementos de sintaxe na sequência de bits tal como o tamanho especificado das imagens decodificadas. Em muitos aplicativos, pode não ser prático nem econômico se implementar um decodificador capaz de lidar com todas as utilizações hipotéticas da sintaxe dentro de um perfil em particular. A fim de se lidar com esse problema, "tiers" e "níveis" são especificados dentro de cada perfil.
[0086] Em alguns exemplos, um nível é um conjunto definido de restrições nos valores que podem ser assumidos pelos elementos de sintaxe e variáveis de um padrão de codificação de vídeo (por exemplo, HEVC ou uma extensão do mesmo). Adicionalmente, em alguns exemplos, um tier é uma categoria especificada de restrições de nível impostas aos valores dos elementos de sintaxe na sequência de bits ou valores de variáveis, onde as restrições de nível são aninhadas dentro de um tier e um decodificador em conformidade com um determinado tier e nível seria capaz de decodificar todas as sequências de bits que se conformam ao mesmo tier ou a um tier inferior desse nível ou de qualquer nível abaixo do mesmo. Dessa forma, um nível de um tier é um conjunto especificado de restrições impostas aos valores dos elementos de sintaxe na sequência de bits ou valores de variáveis. Essas restrições podem ser limites simples aos valores. Alternativamente, podem assumir a forma de restrições em combinações aritméticas de valores (por exemplo, largura de imagem multiplicada pela altura da imagem multiplicada pelo número de imagens decodificadas por segundo). Um nível especificado para um tier inferior é mais restringido do que um nível especificado para um tier superior. Em alguns contextos, o termo "nível" também pode ser utilizado para fazer referência ao valor de um coeficiente de transformação antes do escalonamento.
[0087] Como ilustrado adicionalmente na Tabela 1, acima, a extensão VPS pode incluir uma estrutura de sintaxe vps_vui(). A estrutura de sintaxe vps_vui() contém parâmetros de informação de capacidade de utilização de vídeo (VUI). O parágrafo F.7.3.2.1.4 de SHVC WD6 descreve a sintaxe de uma estrutura de sintaxe vps_vui(). Como especificado na especificação de rascunho HEVC, os parâmetros VUI não precisam ser utilizados para a construção das amostras de luminescência e crominância pelo processo de decodificação. Os decodificadores em conformidade não são necessários para se processar essa informação para envio da conformidade à ordem para essa Especificação (ver Anexo C para a especificação da conformidade à ordem de saída). Alguns parâmetros VUI são necessários para se verificar a conformidade de sequência de bits e para enviar a conformidade ao decodificador de temporização. Em alguns casos, os parâmetros VUI também podem ser especificados em SPSs.
[0088] Uma estrutura de sintaxe vps_vui() pode incluir uma estrutura de sintaxe vps_vui_bsp_hrd_parameters(). A estrutura de sintaxe vps_vui_bsp_hrd_parameters() inclui elementos de sintaxe que especificam os parâmetros de decodificador de referência hipotética (HRD) para as partições de sequência de bits. Como definido em SHVC WD6, uma partição de sequência de bits é uma sequência de bits, na forma de uma sequência de unidades NAL ou uma sequência de bytes, que é um subconjunto de uma sequência de bits de acordo com uma partição.
[0089] Pelo menos alguns padrões de codificação de vídeo especificam os modelos de armazenamento de vídeo. Em H.264/AVC e HEVC, um modelo de armazenamento é referido como um "decodificador de referência hipotética" ou "HRD". Na especificação de rascunho HEVC, HRD é descrito no Anexo C. HRD descreve como os dados devem ser armazenados para decodificar e como os dados decodificados são armazenados para envio. Por exemplo, HRD descreve a operação de um armazenador de imagem codificada ("CPB"), um armazenador de imagem decodificada ("DPB") e um processo de decodificação de vídeo. CPB é um armazenador primeiro a entrada e primeiro a sair contendo unidades de acesso em uma ordem de decodificação especificada por HRD. DPB é um armazenador mantendo as imagens decodificadas para referência, a reordenação de saída, ou retardo de saída especificado pelo HRD. Os comportamentos de CPB e DPB podem ser matematicamente especificados. HRD pode impor diretamente restrições à temporização, tamanhos de armazenador e taxas de bit. Adicionalmente, HRD pode impor indiretamente restrições a várias características e estatísticas de sequência de bits.
[0090] Em H.264/AVC e HEVC, a conformidade da sequência de bits e conformidade de decodificador são especificadas como partes da especificação HRD. Em outras palavras, o modelo HRD especifica testes para determinar se uma sequência de bits se conforma a um padrão e testes para determinar se um decodificador se conforma ao padrão. Apesar de HRD ser chamada como algum tipo de decodificador, os codificadores de vídeo utilizam tipicamente HRD para garantir a conformidade da sequência de bits, enquanto os decodificadores de vídeo tipicamente não precisam de HRD.
[0091] H.264/AVC e HEVC ambos especificam dois tipos de sequências de bit ou conformidade HRD, isso é, Tipo I e Tipo II. Uma sequência de bits Tipo I é uma sequência de unidade NAL contendo apenas as unidades VCL NAL e a unidade NAL de dados de enchimento para todas as unidades de acesso na sequência de bits. Em pelo menos alguns exemplos, uma sequência de unidades NAL é uma sequência de unidades NAL. Uma sequência de bits Tipo II é uma sequência de unidades NAL que contém, em adição às unidades VCL NAL e unidades NAL de dados de enchimento para todas as unidades de acesso na sequência de bits, pelo menos um dentre os seguintes: unidades NAL não VCL adicionais além das unidades NAL de dados de enchimento; e todos os elementos de sintaxe leading_zero_8bits, zero_byte, start_coded_prefix_one_3bytes e trailing_zero_8bits que formam uma sequência de bytes a partir da sequência de unidades NAL.
[0092] Quando um dispositivo realiza um teste de conformidade de sequência de bits que determina se uma sequência de bits se conforma a um padrão de codificação de vídeo, o dispositivo pode selecionar um ponto de operação da sequência de bits. O dispositivo pode então determinar um conjunto de parâmetros HRD aplicáveis ao ponto de operação selecionado. O dispositivo pode utilizar o conjunto de parâmetros HRD aplicáveis ao pongo de operação selecionado para configurar o comportamento de HRD. Mais particularmente, o dispositivo pode utilizar o conjunto aplicável de parâmetros HRD para configurar os comportamentos de componentes particulares de HRD, tal como um programador de sequência hipotética (HSS), CPB, um processo de decodificação, DPB e assim por diante. Subsequentemente, HSS pode injetar dados de vídeo codificados da sequência de bits em CPB de HRD de acordo com uma programação particular. Adicionalmente, o dispositivo pode invocar um processo de decodificação que decodifica os dados de vídeo codificados em CPB. O processo de decodificação pode enviar imagens decodificadas para DPB. À medida que o dispositivo move dados através de HRD, o dispositivo pode determinar se um conjunto particular de restrições permanece satisfeito. Por exemplo, o dispositivo pode determinar se uma condição de fluxo excessivo ou insuficiente ocorre em CPB ou DPB enquanto HRD está decodificando o ponto de operação do ponto de operação selecionado. O dispositivo pode selecionar e processar cada ponto de operação da sequência de bits dessa forma. Se nenhum ponto de operação da sequência de bits fizer com que as restrições sejam violadas, o dispositivo pode determinar que a sequência de bits se conforma ao padrão de codificação de vídeo.
[0093] Ambos H.264/AVC e HEVC especificam dois tipos de conformidade de decodificador, isso é, conformidade de decodificador de temporização de saída e conformidade de decodificador de ordem de saída. Um decodificador reivindicando a conformidade a um perfil específico, tier e nível é capaz de decodificar com sucesso todas as sequências de bits que se conformam às exigências de conformidade de sequência de bits de um padrão de codificação de vídeo, tal como HEVC.
[0094] Quando um dispositivo realiza um teste de conformidade de decodificador para determinar se um decodificador em teste (DUT) se conforma a um padrão de codificação de vídeo, o dispositivo pode fornecer, para ambos HRD e DUT, uma sequência de bits que se conforma ao padrão de codificação de vídeo. HRD pode processar a sequência de bits da forma descrita acima com relação ao teste de conformidade de sequência de bits. O dispositivo pode determinar que o DUT se conforma ao padrão de codificação de vídeo se a ordem das imagens decodificadas enviadas pelo DUT combinar com a ordem das imagens decodificadas enviadas pelo HRD. Ademais, o dispositivo pode determinar que DUT se conforme ao padrão de codificação de vídeo se a temporização com a qual DUT envia as imagens decodificadas combinar com a temporização com a qual HRD envia as imagens decodificadas.
[0095] Nos modelos H.264/AVC e HEVC HRD, a decodificação ou remoção CPB pode ser a baseada na unidade de acesso. Isso é, HRD é considerado responsável pela decodificação de unidades de acesso completas em um momento e pela remoção das unidades de acesso completas do CPB. Adicionalmente, em modelos H.264/AVC e HEVC HRD, considera- se que a decodificação de imagem seja instantânea. O codificador de vídeo 20 pode sinalizar, nas mensagens SEI de temporização de imagem, os tempos de decodificação para iniciar a decodificação das unidades de acesso. Em aplicações práticas, se um decodificador de vídeo em conformidade seguir estritamente os tempos de decodificação sinalizados para iniciar a decodificação das unidades de acesso, o momento mais cedo possível para se enviar uma imagem decodificada em particular é igual ao tempo de decodificação dessa imagem em particular mais o tempo necessário para a decodificação dessa imagem em particular. No entanto, no mundo real, o tempo necessário para decodificação de uma imagem não pode ser igual a zero.
[0096] Os parâmetros HRD podem controlar vários aspectos de HRD. Em outras palavras, HRD pode se basear nos parâmetros HRD. Os parâmetros HRD podem incluir um retardo de remoção CPB inicial, um tamanho CPB, uma taxa de bit, um retardo de saída DPB inicial, e um tamanho DPB. O codificador de vídeo 20 pode sinalizar esses parâmetros HRD em uma estrutura de sintaxe hrd_parameters() especificada em um conjunto de parâmetros de vídeo (VPS) e/ou um conjunto de parâmetros de sequência (SPS). VPSs e/ou SPSs individuais podem incluir múltiplas estruturas de sintaxe hrd_parameters() para diferentes conjuntos de parâmetros HRD. Em alguns exemplos, o codificador de vídeo 20 pode sinalizar os parâmetros HRD nas mensagens SEI de período de armazenamento ou mensagens SEI de temporização de imagem.
[0097] Um ponto de operação de uma sequência de bits é associado a um conjunto de identificadores de camada (isso é, um conjunto de valores nuh_reserved_zero_6bits, que também são conhecidos como valores nuh_layer_id) e um identificador temporal. Um ponto de operação pode incluir cada unidade NAL que é associada com o ponto de operação. Um ponto de operação pode ter uma taxa de quadro diferente e/ou uma taxa de bit diferente de uma sequência de bits original. Isso porque o ponto de operação pode não incluir algumas imagens e/ou alguns dos dados da sequência de bits original. Dessa forma, se o decodificador de vídeo 30 fosse remover os dados de CPB e/ou DPB em uma taxa particular quando do processamento da sequência de bits original e se o decodificador de vídeo 30 fosse remover dados de CPB e/ou DPB na mesma taxa quando do processamento de um ponto de operação, o decodificador de vídeo 30 pode remover muito ou muito pouco dado de CPB e/ou DPB. De acordo, o codificador de vídeo 20 pode sinalizar conjuntos diferentes de parâmetros HRD para diferentes pontos de operação. Por exemplo, o codificador de vídeo 20 p ode incluir, em um VPS, múltiplas estruturas de sintaxe hrd_parameters() que incluem parâmetros HRD para diferentes pontos de operação.
[0098] A Tabela 2, abaixo, é uma sintaxe ilustrativa para uma estrutura de sintaxe hrd_parameters() em HEVC. Tabela 2 -Parâmetros HRD
Figure img0003
Figure img0004
[0099] Em alguns exemplos, o decodificador de vídeo 30 compreende uma pluralidade de núcleos de processamento. Cada um dos núcleos de processamento compreende uma unidade de processamento independente, tal como um ASIC ou microprocessador. Cada um dos núcleos de processamento pode implementar um decodificador de camada única. Um decodificador de camada única é um codificador de vídeo capaz de decodificar as unidades NAL pertencentes a uma única camada de uma sequência de bits. Em tais exemplos, visto que o decodificador de vídeo 30 compreende múltiplos núcleos de processamento, e, dessa forma, múltiplos decodificadores de camada única, o decodificador de vídeo 30 pode decodificar as múltiplas camadas em paralelo. Em alguns casos, um núcleo de hardware individual do decodificador de vídeo 30 pode ser capaz de decodificar mais de uma camada.
[0100] Diferentes núcleos de processamento podem ter capacidades diferentes. Por exemplo, os núcleos de processamento diferentes podem ser capazes de decodificar dados de vídeo pertencente aos diferentes perfis, tiers ou níveis. Por exemplo, um primeiro núcleo de processamento do decodificador de vídeo 30 pode ser capaz de processar dados de vídeo pertencentes a um primeiro nível, mas não um segundo nível. Nesse exemplo, um segundo núcleo de processamento de decodificador de vídeo 30 pode ser capaz de processar dados de vídeo pertencentes ao primeiro nível e segundo nível. Em geral, os núcleos de processamento capazes de decodificar os dados de vídeo pertencentes a perfis, tiers e níveis superiores são mais complexos e, portanto, mais caros do que os núcleos de processamento capazes apenas de decodificar os dados de vídeo pertencentes a perfis, tiers e níveis inferiores. De acordo, um fabricante do decodificador de vídeo 30 pode escolher incluir no decodificador de vídeo 30 núcleos de processamento possuindo as capacidades mais baixas adequadas para manusear uma tarefa desejada.
[0101] Wang et al., "MV-HEVC/SHVC HLS: On level definition", Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11 17o. Encontro: Valencia, ES, 27 de março a 4 de abril de 2014, documento No. JCTVC-Q0145 (doravante, "JCTVC- Q0145") descreve vários problemas relacionados com as definições de níveis em SHVC.
[0102] Primeiro, se mais de uma das 4 camadas de razão de sinal para ruído (SNR) de resolução 720p (ou número equivalente de pixels de luminescência, por exemplo, mais camadas com camadas SNR e espaciais combinadas) forem necessárias, então o Nível 5 ou acima terá que ser utilizado. Consequentemente, o valor de CtbSieY deve ser igual a 32 ou 64 (por item e dos limites gerais). Para a resolução tipo 720p ou inferior, essa restrição proibe o uso de tamanhos de bloco de árvore de codificação menores tal como 16 x 16 e pode, portanto, resultar em uma eficiência de codificação aquém da ideal.
[0103] Em segundo lugar, se um decodificador SHVC for implementado de uma forma que consiste de 4 núcleos de decodificadores HEVC Nível 3.1, e puder decodificar 4 camadas SNR de 720p, por definição de nível atual, é necessário considerar em conformidade com o Nível 4 ou acima. Consequentemente, o decodificador pode precisar decodificar quaisquer sequências de bit de Nível 4. No entanto, com apenas as mudanças de sintaxe de alto nível (isso é, sem mudanças nos núcleos de hardware), tal decodificador não poderia decodificar uma sequência de bits SHVC de Nível 4 com 2 camadas SNR de resolução 1080p.
[0104] Em terceiro lugar, se um decodificador SHVC não for implementado pela reutilização dos múltiplos núcleos decodificadores HEVC existentes, mas é implementado de uma forma que pode decodificar ambas uma sequência de bits HEVC de camada singular de 1080p e uma sequência de bits SHVC de duas camadas de 720p, de acordo com a definição de nível atual seria rotulado como um Nível 3.1. No entanto, então, a expressão de outra capacidade está faltando.
[0105] Em quarto lugar, se um decodificador SHVC for implementado de uma forma que consista de 4 núcleos de decodificadores HEVC 3.1 para poder decodificar as 4 camadas SNR de 720p, por definição de nível atual, seria considerado em conformidade com o Nível 4 ou acima. Consequentemente, cada imagem de camada de aperfeiçoamento pode ter mais de 3 fileiras de tile e mais de 3 colunas de tile, por exemplo, 5 fileiras de tile e 5 colunas de tile, cada tile com a largura de 256 amostras de luminescência e altura de 144 amostras de luminescência. No entanto, isso iria além dos limites de nível 3.1 e, consequentemente, os núcleos decodificadores para decodificação de camadas de aperfeiçoamento teriam problemas.
[0106] Em quinto lugar, todos os itens na subcláusula A.4.1 da especificação de rascunho HEVC são atualmente especificados para serem aplicados a cada camada. No entanto, alguns desses itens não são diretamente aplicáveis a cada camada. Para o item d no tamanho DPB, o elemento de sintaxe SPS não é aplicável às camadas de aperfeiçoamento. Adicionalmente, o DPB em SHVC WD6 é um desenho sub-DPB compartilhado, dessa forma, o item d não pode ser aplicado diretamente a cada camada. Para itens h e i no tamanho CPB, para operações CPB específicas de sequência de bits, o parâmetro não pode ser aplicado a cada camada.
[0107] Em sexto lugar, as restrições específicas de sequência de bits no tamanho CPB (por itens h e i na subcláusula A.4.1 da especificação de rascunho HEVC) são necessárias. No entanto, os itens h e i na subcláusula A.4.1 da especificação de rascunho HEVC não podem ser aplicados diretamente ao nível de sequência de bits, visto que, se diretamente aplicados, o mesmo limite de tamanho CPB para sequências de bits de camada única seria também o limite para sequências de bits de múltiplas camadas. Isso não é escalonável com relação ao número de camadas e permitiria apenas uma baixa qualidade de imagem quando houver muitas camadas.
[0108] Em sétimo lugar, as restrições pelos itens b, c, d, g, h, i e j na subcláusula A.4.2 da especificação de rascunho HEVC são atualmente especificadas para serem específicas de camada apenas. No entanto, a restrição específica de sequência de bits por esses itens deve ser especificada, independentemente de se suas contrapartes específicas de camada foram especificadas.
[0109] JVTVC-Q0145 propõe uma abordagem para definir os níveis e capacidades de decodificador além de outras mudanças para solucionar os problemas acima. O desenho em JCTVC-Q0145 é associado com pelo menos os seguintes problemas. Primeiro, o desenho é aquém de ideal para decodificadores SHVC/MV-HEVC que são, cada um, construídos com base em múltiplos decodificadores de camada única HEVC sem alterar os núcleos de hardware (por exemplo, sem modificar as capacidades dos núcleos de hardware) onde múltiplos decodificadores de camada única HEVC apresentam capacidades diferentes, por exemplo, perfis, tiers ou níveis diferentes. Em segundo lugar, os níveis podem ser definidos em termos de restrições. MV-HEVC WD8 e SHVC WD6 definem muito dessas restrições em termos de elementos de sintaxe e variáveis possuindo ou não valores particulares quando da decodificação de uma sequência de bits. Em outras palavras, algumas restrições de nível (por exemplo, taxa de bit e taxa de amostra) são especificadas para serem específicas de sequência de bit. No entanto, para se permitir que um decodificador de camada singular HEVC seja parte de um decodificador SHVC/MV-HEVC sem alterar o núcleo de hardware e para decodificar um subconjunto de camadas (isso é, uma ou mais camadas, mas não todas as camadas de um conjunto de camadas de saída), tais restrições de nível podem precisar ser específicas para o subconjunto das camadas.
[0110] Uma visão geral de várias características de acordo com várias técnicas dessa descrição é fornecida abaixo. Algumas implementações detalhadas de acordo com um ou mais exemplos dessa descrição são fornecidos em seções posteriores dessa descrição. Algumas das características notadas abaixo podem ser aplicadas independentemente e algumas das características notadas abaixo podem ser aplicadas em combinação como seria reconhecido pelos versados na técnica.
[0111] Uma técnica ilustrativa dessa descrição fornece a sinalização de um ou mais esquemas de partição de camadas em partições para cada conjunto de camada de saída, com cada esquema de partição contendo um conjunto de partições separadas cuja união forma o conjunto de camada de saída e cada partição contendo uma ou mais camadas. Em outras palavras, cada esquema de partição de uma camada de saída especifica uma forma diferente de dividir as camadas do conjunto de camadas de saída em parições não sobrepostas. Em alguns exemplos, partições são associadas aos conjuntos de camadas de saída em vez de conjuntos de camadas.
[0112] Em alguns exemplos, um esquema de partição e uma unidade de partição são definidos como segue: Um conjunto de camada de saída pode ter um ou mais esquemas de partição. Um esquema de partição de um conjunto de camadas de saída divide as camadas no conjunto de camadas de saída em uma ou mais partições. Cada camada em um conjunto de camadas de saída deve pertencer a exatamente uma partição em um esquema de partição.
[0113] Dessa forma, em um exemplo, o codificador de vídeo 20 gera uma sequência de bits que compreende uma representação codificada de dados de vídeo. Como parte da geração de sequência de bits, o codificador de vídeo 20 inclui, na sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição. Para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo especifica um conjunto respectivo de partições separadas cuja união forma um conjunto de camadas de saída. Nesse exemplo, cada partição respectiva do conjunto respectivo das partições separadas contém uma ou mais camadas, o conjunto de camada de saída consistindo de todas as camadas dentre a pluralidade de camadas e um subconjunto adequado dentre a pluralidade de camadas. Adicionalmente, o codificador de vídeo 20 envia a sequência de bits.
[0114] Em um exemplo similar, o decodificador de vídeo 30 decodifica uma sequência de bits que compreende uma representação codificada de dados de vídeo. Nesse exemplo, a sequência de bits compreende uma pluralidade de camadas. Como parte da decodificação da sequência de bits nesse exemplo, o decodificador de vídeo 30 obtém, a partir da sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição. Em alguns exemplos, o decodificador de vídeo 30 decodifica cada uma das partições de um esquema de partição particular utilizando núcleos de processamento diferentes em uma pluralidade de núcleos de hardware, o esquema de partição particular sendo um dentre um ou mais esquemas de partição.
[0115] Adicionalmente, em alguns exemplos, o codificador de vídeo 20 pode incluir, em uma sequência de bits, elementos de sintaxe indicando uma pluralidade de conjuntos de camadas de saída. Para cada conjunto de camadas de saída respectivo dentre a pluralidade de conjuntos de camadas de saída, o codificador de vídeo 20 pode incluir, na sequência de bits, elementos de sintaxe indicando um ou mais esquemas de partição para o conjunto de camada de saída respectivo. Em um exemplo similar, o decodificador de vídeo 30 pode obter, a partir da sequência de bits, elementos de sintaxe indicando uma pluralidade de conjuntos de camadas de saída, a pluralidade de conjuntos de camadas de saída incluindo o primeiro conjunto de amadas de saída. Nesse exemplo, para cada conjunto de camadas de saída respectivo dentre a pluralidade de conjuntos de camadas de saída, o decodificador de vídeo 30 pode obter, a partir da sequência de bits, elementos de sintaxe indicando um ou mais esquemas de partição para o conjunto de camadas de saída respectivo.
[0116] De acordo com alguns exemplos dessa descrição, os termos "esquema de partição" e "unidade de partição" apresentam as seguintes definições: esquema de partição: Uma divisão de camadas em um conjunto de camadas de saída em uma ou mais partições de modo que cada camada no conjunto de camadas de saída seja incluída em exatamente uma partição do esquema de partição e cada partição do esquema de partição contenha uma ou mais camadas. unidade de partição: Um subconjunto de unidades de acesso contendo um conjunto de unidades NAL de acordo com um esquema de partição.
[0117] Como indicado acima, uma extensão VPS pode especificar informação PTL respectiva para cada conjunto de camada de saída respectivo. Por exemplo, a extensão VPS pode incluir, para cada conjunto de camada de saída respectivo, um elemento de sintaxe profile_level_tier_idx para o conjunto de camadas de saída respectivo que identifica uma estrutura de sintaxe PTL para o conjunto de camadas de saída respectivo. A estrutura de sintaxe PTL para o conjunto de camada de saída respectivo especifica a informação PTL para o conjunto de camada de saída respectivo.
[0118] Visto que o decodificador de vídeo 30 pode utilizar a informação PTL de um conjunto de camadas de saída para determinar se o decodificador de vídeo 30 pode decodificar o conjunto de camadas de saída, a informação PTL do conjunto de camadas de saída especifica tipicamente o perfil, tier e nível mais baixo necessário para se decodificar o conjunto de camadas de saída como um todo. No entanto, o perfil, tier e nível de algumas partições do conjunto de camadas de saída podem ser inferiores ao perfil, tier e nível do conjunto de camadas de saída como um todo. Em outras palavras, o perfil, tier e nível do conjunto de camadas de saída pode ser o perfil, tier e nível mais alto da partição no esquema de partição do conjunto de camada de saída, onde cada uma das camadas do conjunto de camadas de saída pertence a uma partição.
[0119] Dessa forma, quando partições diferentes de um conjunto de camadas de saída possuem informação PTL diferente, a informação PTL para o conjunto de camadas de saída pode não ser suficiente para expressar a diversidade da informação PTL das partições do conjunto de camada de saída. Uma ou mais técnicas dessa descrição podem fornecer a sinalização de um perfil, tier e nível para cada partição. Por exemplo, para cada partição respectiva de cada esquema de partição respectivo sinalizado em uma sequência de bits, o codificador de vídeo 20 pode incluir, na sequência de bits, informação de perfil, tier e nível (PTL) para a partição respectiva. De forma similar, para cada partição respectiva de cada esquema de partição respectivo sinalizado em uma sequência de bits, o decodificador de vídeo 30 pode obter, a partir da sequência de bits, um elemento de sintaxe respectivo (por exemplo, profile_level_tier_partition_idx) que indica a informação PTL respectiva para a partição respectiva.
[0120] Em alguns exemplos, o decodificador de vídeo 30 determina, com base na informação PTL para partições dos esquemas de partição, um esquema de partição a partir de um ou mais esquemas de partição. Adicionalmente, em alguns exemplos, o esquema de partição é determinado com base nas condições de rede que são utilizadas para enviar a sequência de bits para o decodificador. O decodificador de vídeo 30 pode decodificar cada partição respectiva do esquema de partição de determinação utilizando um núcleo de hardware respectivo. Cada um dos núcleos de hardware pode implementar um decodificador de camada única respectivo. Em alguns exemplos, os núcleos de hardware individuais dentre os núcleos de hardware decodificam mais de uma camada (por exemplo, implementam um decodificador de múltiplas camadas). Adicionalmente, diferentes núcleos de hardware podem ter diferentes capacidades. Por exemplo, pelo menos um primeiro núcleo de hardware dentre uma pluralidade de núcleos de hardware do decodificador de vídeo 30 pode suportar um perfil, tier ou nível diferente de um segundo núcleo de hardware dentre a pluralidade de núcleos de hardware do decodificador de vídeo 30. Dessa forma, em um exemplo, o decodificador de vídeo 30 pode compreender um primeiro núcleo de hardware e um segundo núcleo de hardware. Nesse exemplo, o primeiro núcleo de hardware pode implementar um decodificador de nível 3 (isso é, um decodificador capaz de decodificar o HEVC Nível 3 e abaixo) e o segundo núcleo de hardware pode implementar um decodificador de nível 2 (isso é, um decodificador capaz de decodificar HEVC nível 2 e abaixo). Nesse exemplo, se a informação PTL de uma primeira partição indicar que a primeira partição pode ser decodificada por um decodificador de nível 3 ou maior e se a informação PTL indicar que uma segunda partição pode ser decodificada por um decodificador de nível 2 ou maior, o decodificador de vídeo 30 pode utilizar o primeiro núcleo de hardware para decodificar a primeira partição e pode utilizar o segundo núcleo de hardware para decodificar a segunda partição. Em alguns casos, quando um decodificador de vídeo de múltiplas camadas que inclui um ou mais núcleos de hardware para decodificar as partições, e pelo menos um dentre os núcleos decodificadores está em conformidade com um dos perfis escalonáveis (por exemplo, Scalable Main ou Scalable Main 10) especificados, a capacidade para realização da nova amostragem ou amostragem ascendente das imagens pode ser incluída. Essa capacidade de nova amostragem pode ser implementada em cada núcleo que é capaz de decodificar um perfil escalonável, ou implementada como um bloco comum no decodificador de múltiplas camadas.
[0121] Como descrito de forma breve acima, o codificador de vídeo 20 pode incluir, em um VPS, elementos de sintaxe identificando os conjuntos de camadas de saída. Dessa forma, os conjuntos de camadas de saída podem ser sinalizados em um VPS. Em alguns exemplos, os conjuntos de camadas de saída também podem ser sinalizados por um meio externo. O meio externo pode ser algum mecanismo além da sequência de bits de vídeo. Dessa forma, um conjunto de camadas de saída sinalizado por um meio externo e compreendendo níveis de saída de uma sequência de bits não é necessariamente sinalizada na sequência de bits.
[0122] De acordo com uma ou mais técnicas dessa descrição, para cada esquema de partição respectivo de cada conjunto de camada de saída, uma mensagem VPS VUI ou SEI de uma sequência de bits pode identificar um conjunto de parâmetros HRD para o esquema de partição respectivo. Dessa forma, em alguns exemplos dessa descrição, os parâmetros HRD para cada esquema de partição para cada conjunto de camadas de saída sinalizado em VPS ou por meios externos são sinalizados nas mensagens VPS VUI ou SEI. Visto que os conjuntos de parâmetros HRD são identificados para cada esquema de partição, decodificador de vídeo 30 ou outro dispositivo pode ser capaz de utilizar os parâmetros HRD para o esquema de partição para testar se a sequência de bits é uma sequência de bits em conformidade quando dividida de acordo com o esquema de partição.
[0123] Em tal exemplo, o codificador de vídeo 20 gera uma sequência de bits que compreende uma representação codificada de dados de vídeo. Nesse exemplo, a sequência de bits compreende uma pluralidade de camadas. Como parte da geração de sequência de bits nesse exemplo, o codificador de vídeo 20 inclui, na sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camadas de saída. Nesse exemplo, o conjunto de camadas de saída consiste de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas. Para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo especifica uma divisão do conjunto de camadas de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo. Adicionalmente, como parte da geração de sequência de bits nesse exemplo, o codificador de vídeo 20 pode, para cada esquema de partição respectivo, inclui, em uma mensagem SEI na sequência de bits ou VUI em um VPS na sequência de bits, um conjunto respectivo de elementos de sintaxe indicando conjuntos de parâmetros HRD para o esquema de partição respectivo. O codificador de vídeo 20 pode enviar a sequência de bits.
[0124] Em um exemplo similar, um dispositivo de processamento de vídeo, tal como um codificador de vídeo 20 ou decodificador de vídeo 30, pode decodificar uma sequência de bits que compreende uma representação codificada de dados de vídeo. Nesse exemplo, a sequência de bits compreende uma pluralidade de camadas. Como parte da decodificação da sequência de bits nesse exemplo, o dispositivo de processamento de vídeo obtém, a partir da sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camada de saída. Adicionalmente, para cada esquema de partição respectivo, o decodificador de vídeo 30 pode obter, a partir de uma mensagem SEI na sequência de bits ou informação de capacidade de utilização de vídeo (VUI) em um VPS na sequência de bits, um conjunto respectivo de conjuntos de parâmetro HRD para o esquema de partição respectivo. Para cada partição respectiva do esquema de partição respectivo, o dispositivo de processamento de vídeo testa, com base nos parâmetros HRD para o esquema de partição respectivo, a partição respectiva para conformidade com um padrão de codificação de vídeo.
[0125] Em pelo menos alguns documentos padrão, tal como SHVC WD6, MV-HEVC WD8, e a especificação de rascunho HEVC, perfis, tiers e níveis são definidos em termos de limites e restrições de nível. Um limite de nível pode especificar um limite no valor de um elemento de sintaxe ou variável. Uma restrição pode especificar uma exigência ou restrição. Por exemplo, JCTV3V-H1002 define um perfil "Stereo Main" e inclui, entre várias outras restrições, uma restrição exigindo que as sequências de bit contenham uma camada com nuh_layer_id igual a i para a qual ViewScalExtLayerFlag[i] é igual a 1. Muitos dos limites de nível e restrições especificadas na especificação de rascunho SHVC WD6, MV-HEVC WD8 e HEVC são aplicáveis às sequências de bits. Por exemplo, o parágrafo G.11.1.2 de MV- HEVC WD8 descreve o perfil "Stereo Main" e especifica, com ênfase adicionada, "Sequências de bits em conformidade com o perfil Stereo Main devem obedecer às seguintes restrições..."
[0136] No entanto, em alguns exemplos dessa descrição, diferentes partições de sequência de bits podem ter diferentes informações PTL. Para suportar diferentes partições de sequência de bits possuindo diferentes informações PTL, as definições dos limites de nível e restrições podem ser expressas em termos de partições em vez de sequências de bits. Dessa forma, de acordo com algumas técnicas ilustrativas dessa descrição, todos os limites de nível e restrições, exceto pelos três na largura de imagem, altura de imagem e tamanho de armazenador de imagem subdecodificado (DPB) que são naturalmente específicos de camada, são especificados para serem específicos de partição. Por exemplo, todos os limites e restrições de nível de um perfil, tier ou nível exceto pelos limites e restrições na largura de imagem, altura de imagem e tamanho sub-DPB, são definidos como sendo específicos de partição.
[0127] Como notado acima, as restrições de tamanho sub-DPB são naturalmente específicas de camada. Para elaborar a questão, DPB pode ser virtualmente dividido em sub-DPBs. As imagens de cada camada são armazenadas em um sub-DPB separado e cada sub-DPB c ontem uma camada. Por exemplo, um conjunto de camadas de saída contendo duas camadas, o DPB pode ser dividido em dois sub-DPBs, com o primeiro sub-DPB contendo a primeira camada e o segundo sub- DPB contendo a segunda camada. Em vez de especificar o tamanho DPB como um total, o tamanho sub-DPB (que é exigido para cada camada) é especificado na sequência de bits. Em tais exemplos, os limites de nível impõem indiretamente algumas restrições ao tamanho DPB como um todo.
[0128] De acordo com uma ou mais técnicas dessa descrição, uma ou mais restrições adicionais são introduzidas. Uma possível restrição, por exemplo, é que para cada conjunto de camadas de saída, deve haver apenas um esquema de partição que contém apenas uma partição e que a partição contém todas as camadas no conjunto de camadas de saída. Cada esquema de partição está fornecendo flexibilidade de um esquema de distribuição, isso é, quais camadas podem ser distribuídas em conjunto. Quando todas as camadas estão em uma partição, a única forma que se pode ter diferentes esquemas de distribuição é tendo-se diferentes taxas de bit, por exemplo. Como resultado disso, essa restrição pode ajudar a reduzir alguma sintaxe adicional.
[0129] Em outra restrição ilustrativa, a soma dos tamanhos de imagem de uma partição é restringida a ser inferior às amostras de luminescência máximas especificadas para o nível da partição. Essa restrição pode garantir que se uma partição com múltiplas camadas for decodificada por um único núcleo, os tamanhos gerais de DPB do núcleo atual não serão excedidos. Ademais, essa restrição pode garantir que o tamanho total das imagens de todas as camadas não exceda o tamanho da imagem de uma camada que pode ter sido decodificada pelo decodificador de camada única. Essa restrição pode permitir a extensão mais fácil dos núcleos de camada singular para fins de múltiplas camadas (por exemplo, sem precisar adicionar potencialmente memória a mais).
[0130] Em outra restrição ilustrativa, os triplos sinalizados do perfil, tier e nível associados com o conjunto de camadas de saída também é associado com a partição que contém todas as camadas no conjunto de camadas de saída.
[0131] Adicionalmente, de acordo com uma técnica ilustrativa dessa descrição, uma capacidade de decodificação do decodificador é expressa como conformidade a uma lista de triplos do perfil, tier e nível. Em alguns exemplos, o número de registros na lista indica o número de decodificadores de camada singular utilizados para construir o decodificador de múltiplas camadas, e cada triplo de perfil, tier e nível indica o perfil, tier e nível de um dos decodificadores de camada singular.
[0132] Dessa forma, em um exemplo, um dispositivo de processamento de vídeo, tal como o decodificador de vídeo 30 ou outro dispositivo, pode determinar, com base em uma lista de registros triplos, se um decodificador de vídeo de múltiplas camadas (por exemplo, o decodificador de vídeo 30) é capaz de decodificar uma sequência de bits que compreende uma representação codificada de dados de vídeo de múltiplas camadas. O número de registros triplos na lista pode ser inferior a ou igual a um número de decodificadores de camada única no decodificador de vídeo de múltiplas camadas. Cada registro triplo respectivo na lista de registros triplos indica um perfil, um tier e um nível para um decodificador de camada única respectivo no decodificador de vídeo de múltiplas camadas. Em alguns exemplos, o dispositivo de processamento de vídeo pode determinar que o decodificador de múltiplas camadas é capaz de decodificar a sequência de bits pela determinação de que a sequência de bits especifica um esquema de partição onde a informação PTL de cada partição do esquema de partição indica que a partição pode ser decodificada por pelo menos um dos decodificadores de camada singular. Com base no fato de o decodificador de vídeo de múltiplas camadas ser capaz de decodificar a sequência de bits, o decodificador de vídeo de múltiplas camadas pode decodificar a sequência de bits.
[0133] Em alguns exemplos dessa descrição, um decodificador que se conforma a uma lista de triplos de perfil, tier e nível precisa poder decodificar qualquer conjunto de camada de saída em conformidade para o qual existe pelo menos um esquema de partição que satisfaz a seguinte condição: para cada partição do esquema de partição, um dos decodificadores de camada única do decodificador de múltiplas camadas pode ser designado para decodificação da partição. Quando um decodificador de camada singular recebe uma partição para decodificação, o decodificador de camada única pode decodificar a partição. Em alguns exemplos, cada uma das partições pode ser designada para um decodificador diferente dentre os decodificadores de camada única. Em outros exemplos, duas ou mais partições podem ser designadas para um único decodificador de camada singular. Adicionalmente, em alguns exemplos, o número de triplos PTL anunciados pelo decodificador e sua associação de cada triplo com um núcleo é apenas uma possibilidade. Em tais exemplos, o decodificador pode ter uma implementação interna (por exemplo, apenas um super núcleo), mas ainda anunciar múltiplos triplos PTL.
[0134] Dessa forma, em alguns exemplos, um dispositivo de processamento de vídeo, tal como o decodificador de vídeo 30 ou outro dispositivo, pode obter, a partir de uma sequência de bits, um ou mais elementos de sintaxe que indicam um ou mais esquemas de partição. Para se determinar se um decodificador de vídeo de múltiplas camadas, tal como o decodificador de vídeo 30, pode decodificar a sequência de bits, o dispositivo de processamento de vídeo pode determinar, com base em uma condição sendo satisfeita, que o decodificador de vídeo de múltiplas camadas é capaz de decodificar a sequência de bits. Nesse exemplo, a condição é satisfeita com base no fato de existir um esquema de partição adequado em um ou mais esquemas de partição. Para cada partição respectiva do esquema de partição adequado, um dos decodificadores de camada única do decodificador de vídeo de múltiplas camadas pode ser designado para decodificação da partição respectiva.
[0135] De acordo com outras técnicas ilustrativas dessa descrição, os testes de conformidade de sequência de bits são especificados para testar a conformidade de cada partição, de uma forma na qual as imagens decodificadas e outra informação necessária para todas as camadas de referência diretas ou indiretas das camadas na partição são assumidas como disponíveis de forma similar à especificação atual nas especificações SHVC/MV-HEVC recentes para a camada de base quando é fornecida externamente.
[0136] Em alguns exemplos, os testes de conformidade para uma partição de uma sequência de bits são definidos, e a conformidade da sequência de bits é definida com base na conformidade de todas as partições de cada esquema de partição especificado para a sequência de bits. Em alguns exemplos, quando uma partição é selecionada para teste, a decodificação de outras partições no esquema de partição respectivo é considerada decodificada por um HRD de acordo com os parâmetros especificados por essas partições.
[0137] A figura 2 é um diagrama em bloco ilustrando uma implementação ilustrativa do decodificador de vídeo 30 compreendendo uma pluralidade de decodificadores de camada singular, de acordo com uma técnica dessa descrição. No exemplo da figura 2, o decodificador de vídeo 30 compreende os decodificadores de camada singular 50A-50D (coletivamente "decodificadores de camada única 50"). Cada um dos decodificadores de camada única 50 pode ser implementado por um núcleo de hardware separado respectivo. Diferentes decodificadores de camada única 50 podem ter capacidades diferentes. Por exemplo, diferentes decodificadores de camada única 50 podem ser capazes de decodificar as sequências de bits em conformidade com diferentes perfis, tiers e níveis. Em alguns exemplos, o decodificador de vídeo 30 pode determinar, com base na informação PTL para partições dos esquemas de partição, um esquema de partição em particular a partir de um ou mais esquemas de partição. O decodificador de vídeo 30 pode decodificar cada partição respectiva do esquema de partição particular utilizando um decodificador respectivo dentre os decodificadores de camada singular 50.
[0138] A figura 3 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo 20 que pode implementar as técnicas dessa descrição. A figura 3 é fornecida para fins de explicação e não deve ser considerada limitadora as técnicas como exemplificação e descrito amplamente nessa descrição. Para fins de explicação, essa descrição descreve o codificador de vídeo 20 no contexto de codificação HEVC. No entanto, as técnicas dessa descrição podem ser aplicáveis a outros padrões ou métodos de codificação.
[0139] No exemplo da figura 3, o codificador de vídeo 20 inclui uma unidade de processamento de previsão 200, uma unidade geração residual 202, uma unidade de processamento de transformação 204, uma unidade de quantização 206, uma unidade de quantização inversa 208, uma unidade de processamento de transformação inversa 210, uma unidade de reconstrução 212, uma unidade de filtro 214, um armazenador de imagem decodificada 216, e uma unidade de codificação por entropia 218. A unidade de processamento de previsão 200 inclui uma unidade de processamento interprevisão 220 e uma unidade de processamento intraprevisão 226. A unidade de processamento interprevisão 220 inclui uma unidade de estimativa de movimento 222 e uma unidade de compensação de movimento 224. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos ou outros componentes funcionais.
[0140] O codificador de vídeo 20 pode receber dados de vídeo. A memória de dados de vídeo 201 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 201 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O armazenador de imagem decodificada 216 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso na codificação de dados de vídeo pelo codificador de vídeo 20, por exemplo, em modos de intra ou intercodificação. A memória de dados de vídeo 210 e o armazenador de imagem decodificada 216 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso randômico dinâmica (DRAM), incluindo DRAM sincronizada (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 201 e o armazenador de imagem decodificada 216 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 201 pode ser em chip com outros componentes do codificador de vídeo 20, ou fora de chip com relação a esses componentes.
[0141] O codificador de vídeo 20 pode codificar cada CTU em uma fatia de uma imagem de dados de vídeo. Cada uma das CTUs pode ter blocos de árvore de codificação de luminescência igualmente dimensionados (CTBs) e CTBs correspondentes da imagem. Como parte da codificação de uma CTU, a unidade de processamento de previsão 200 pode realizar a partição quad-tree para dividir CTBs da CTU em blocos progressivamente menores. Os blocos menores podem ser blocos de codificação de CUs. Por exemplo, a unidade de processamento de previsão 200 pode dividir um CTB de uma CTU em quatro sub-blocos de mesmo tamanho, dividir um ou mais dos sub-blocos em quatro sub-sub-blocos de mesmo tamanho, e assim por diante.
[0142] O codificador de vídeo 20 pode codificar CUs de uma CTU para gerar representações codificadas das CUs (isso é, CUs codificadas). Como parte da codificação de uma CU, a unidade de processamento de previsão 200 pode dividir os blocos de codificação da CU entre uma ou mais PUs da CU. Dessa forma, cada PU pode ter um bloco de previsão de luminescência e blocos de previsão de crominância correspondentes. O codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar PUs possuindo vários tamanhos. Como indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação de luminescência da CU e o tamanho de uma PU pode se referir ao tamanho de um bloco de previsão de luminescência da PU. Assumindo-se que o tamanho de uma CU em particular seja de 2N x 2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2N x 2N ou N x N para intraprevisão, e tamanhos de PU simétricos de 2N x 2N, 2N x N, N x 2N, N x N ou similares para interprevisão. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar a partição assimétrica para tamanhos de PU de 2N x nU, 2N x nD, nL x 2N e nR x 2N para interprevisão.
[0143] A unidade de processamento por intraprevisão 220 pode gerar dados de previsão para uma PU pela realização da interprevisão em cada PU de uma CU. Os dados de previsão para a PU podem incluir blocos de previsão da PU e informação e movimento para a PU. A unidade de processamento por interprevisão 220 pode realizar operações diferentes para uma PU de uma CU dependendo de se a PU está em uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intraprevistas. Dessa forma, se a PU estiver em uma fatia I, a unidade de processamento por interprevisão 220 não realiza a interprevisão na PU.
[0144] Se uma PU estiver em uma fatia P, a unidade de estimativa de movimento 222 pode buscar as imagens de referência em uma lista de imagens de referência (por exemplo, "RefPicList0") para uma região de referência para a PU. A região de referência para a PU pode ser uma região, dentro de uma imagem de referência, que contém amostras que correspondem de forma mais aproximada aos blocos de previsão da PU. A unidade de estimativa de movimento 222 pode gerar um índice de referência que indica uma posição em RefPicList0 da imagem de referência contendo a região de referência para a PU. Adicionalmente, a unidade de estimativa de movimento 222 pode gerar um vetor de movimento que indica um deslocamento espacial entre um bloco de codificação da PU e um local de referência associado com a região de referência. Por exemplo, o vetor de movimento pode ser um vetor bidimensional que fornece um desvio das coordenadas na imagem atual para coordenadas em uma imagem de referência. A unidade e estimativa de movimento 222 pode enviar o índice de referência e o vetor de movimento como informação de movimento para a PU. A unidade de compensação de movimento 224 pode gerar blocos de previsão da PU com base em amostras reais ou interpoladas no local de referência indicado pelo vetor de movimento da PU.
[0145] Se uma PU estiver em uma fatia B, a unidade de estimativa de movimento 222 pode realizar a uniprevisão ou biprevisão para a PU. Para realizar a uniprevisão para a PU, a unidade de estimativa de movimento 222 pode buscar as imagens de referência de RefPicList0 ou uma segunda lista de imagens de referência ("RefPicList1") para uma região de referência para a PU. A unidade de estimativa de movimento 222 pode enviar, como informação de movimento da PU, um índice de referência que indica uma posição em RefPicList0 ou RefPicList1 da imagem de referência que contém a região de referência, um vetor de movimento que indica um deslocamento espacial entre um bloco de previsão da PU e uma localização de referência associada com a região de referência, e um ou mais indicadores de direção de previsão que indicam se a imagem de referência está em RefPicList0 ou RefPicList1. A unidade de compensação de movimento 224 pode gerar blocos de previsão da PU com base pelo menos em parte em amostras reais ou interpoladas na localização de referência indicada pelo vetor de movimento da PU.
[0146] Para realizar a interprevisão bidirecional para uma PU, a unidade de estimativa de movimento 222 pode buscar imagens de referência em RefPicList0 para uma região de referência para a PU e também pode buscar imagens de referência em RefPicList1 para outra região de referência para a PU. A unidade de estimativa de movimento 222 pode gerar índices de referência que indicam as posições em RefPicList0 e RefPicList1 das imagens de referência que contêm as regiões de referência. Adicionalmente, a unidade de estimativa de movimento 222 pode gerar vetores de movimento que indicam deslocamentos espaciais entre as localizações de referência associadas com as regiões de referência e um bloco de previsão da PU. A informação de movimento da PU pode incluir os índices de referência e os vetores de movimento da PU. A unidade de compensação de movimento 224 pode gerar os blocos de previsão da PU com base pelo menos em parte nas amostras reais ou interpoladas nos locais de referência indicados pelos vetores de movimento da PU.
[0147] A unidade de processamento de intraprevisão 226 pode gerar dados de previsão para uma PU pela realização da intraprevisão na PU. Os dados de previsão para a PU podem incluir blocos de previsão para a PU e vários elementos de sintaxe. A unidade de processamento de intraprevisão 226 pode realizar a intraprevisão nas PUs nas fatias I, fatias P e fatias B.
[0148] Para realizar a intraprevisão em uma PU, a unidade de processamento de intraprevisão 226 pode utilizar múltiplos modos de intraprevisão para gerar múltiplos conjuntos de blocos de previsão para a PU. Quando da realização da intraprevisão utilizando um modo de intraprevisão em particular, a unidade de processamento de intraprevisão 226 pode gerar blocos de previsão para a PU utilizando um conjunto particular de amostras de blocos vizinhos. Os blocos vizinhos podem estar acima, acima e para a direita, acima e para a esquerda, ou para a esquerda dos blocos de previsão da PU, assumindo-se uma ordem de codificação da esquerda para a direita e de cima para baixo para PUs, CUs e CTUs. A unidade de processamento por intraprevisão 226 pode utilizar vários números de modos de intraprevisão, por exemplo, 33 modos de intraprevisão direcionais. Em alguns exemplos, o número de modos de intraprevisão pode depender do tamanho dos blocos de previsão da PU.
[0149] A unidade de processamento por previsão 200 pode selecionar os dados de previsão para PUs de uma CU dentre os dados de previsão gerados pela unidade de processamento de interprevisão 220 para as PUs ou os dados de previsão gerados pela unidade de processamento por intraprevisão 226 para as PUs da CU com base nas métricas de taxa/distorção dos conjuntos dos dados de previsão. Os blocos de previsão dos dados de previsão selecionados podem ser referidos aqui como blocos de previsão selecionados.
[0150] A unidade de geração residual 202 pode gerar, com base nos blocos de codificação de uma CU e blocos de previsão selecionados das PUs da CU, blocos residuais da CU. Por exemplo, a unidade de geração residual 202 pode gerar, com base no bloco de codificação de luminescência, Cb e Cr de uma CU e blocos de luminescência, Cb e Cr de previsão selecionados das PUs da CU, os blocos residuais de luminescência, Cb e Cr da CU. Em alguns exemplos, a unidade de geração residual 202 pode gerar blocos residuais da CU de modo que cada amostra nos blocos residuais tenha um valor igual a uma diferença entre uma amostra em um bloco de codificação da CU e uma amostra correspondente em um bloco de previsão selecionado correspondente de uma PU da CU.
[0151] A unidade de processamento de transformação 204 pode realizar a partição de quad-tree para dividir os blocos residuais de uma CU em blocos de transformação de TUs da CU. Dessa forma, uma TU pode ter um bloco de transformação de luminescência e dois blocos de transformação de crominância correspondente. Os tamanhos e posições dos blocos de transformação das TUs de uma CU podem ou não ser baseados em tamanhos e posições dos blocos de previsão das PUs da CU.
[0152] A unidade de processamento de transformação 204 pode gerar blocos de coeficiente de transformação para cada TU de uma CU pela aplicação de uma ou mais transformações aos blocos de transformação da TU. A unidade de processamento de transformação 204 pode aplicar várias transformações a um bloco de transformação de uma TU. Por exemplo, a unidade de processamento de transformação 204 pode aplicar uma transformação de cosseno discreto (DCT), uma transformação direcional, ou uma transformação conceitualmente similar a um bloco de transformação. Em alguns exemplos, a unidade de processamento de transformação 204 não aplica transformações a um bloco de transformação. Em tais exemplos, o bloco de transformação pode ser tratado como um bloco de coeficientes de transformação.
[0153] A unidade de quantização 206 pode quantizar os coeficientes de transformação em um bloco de coeficientes. O processo de quantização pode reduzir a profundidade de bit de alguns ou todos os coeficientes de transformação. Por exemplo, um coeficiente de transformação de bit n pode ser arredondado para baixo para um coeficiente de transformação de bit m durante a quantização, onde n é maior que m. A unidade de quantização 206 pode quantizar um bloco de coeficientes de uma TU de uma CU com base em um valor de parâmetro de quantização (QP) para a CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente de uma CU pelo ajuste do valor QP para a CU. A quantização pode introduzir perda de informação, dessa forma, coeficientes de transformação quantizados podem ter menor precisão do que os originais.
[0154] A unidade de quantização inversa 208 e a unidade de processamento de transformação inversa 210 podem aplicar transformações de quantização inversa e inversa a um bloco de coeficientes, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficientes. A unidade de reconstrução 212 pode adicionar o bloco residual reconstruído às amostras correspondentes a partir de um ou mais blocos de previsão gerados pela unidade de processamento por previsão 200 para produzir um bloco de transformação reconstruído de uma TU. Pela reconstrução dos blocos de transformação para cada TU de uma CU dessa forma, o codificador de vídeo 20 pode reconstruir os blocos de codificação da CU.
[0155] A unidade de filtro 214 pode realizar uma ou mais operações de desbloqueio para reduzir artefatos de bloqueio nos blocos de codificação de uma CU. O armazenador de imagem decodificada 216 pode armazenar os blocos de codificação reconstruídos depois que a unidade de filtro 214 realiza um ou mais operações de desbloqueio nos blocos de codificação reconstruídos. A unidade de processamento de interprevisão 220 pode utilizar uma imagem de referência que contém os blocos de codificação reconstruídos para realizar a interprevisão em PUs de outras imagens. Adicionalmente, a unidade de processamento de intraprevisão 226 pode utilizar os blocos de codificação reconstruídos no armazenador de imagem decodificada 216 para realizar a intraprevisão em outras PUs na mesma imagem que a CU.
[0156] A unidade de codificação por entropia 218 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação por entropia 218 pode receber blocos de coeficiente da unidade de quantização 206 e pode receber elementos de sintaxe da unidade de processamento por previsão 200. A unidade de codificação por entropia 218 pode realizar uma ou mais operações de codificação por entropia nos dados para gerar dado codificados por entropia. Por exemplo, a unidade de codificação por entropia 218 pode realizar uma operação de codificação de comprimento variável adaptativa de contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento de variável para variável (V2V), uma operação de codificação aritmética binária adaptativa de contexto com base em sintaxe (SBAC), uma operação de codificação de Entropia por Partição de Intervalo de Probabilidade (PIPE), uma operação de codificação Exponential-Golomb, ou qualquer outro tipo de operação de codificação por entropia em dados. O codificador de vídeo 20 pode enviar uma sequência de bits que inclui dados codificados por entropia gerados pela unidade de codificação por entropia 218.
[0157] De acordo com alguns exemplos dessa descrição, a unidade de codificação por entropia 218 pode incluir, na sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição. Para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo específica um conjunto respectivo de partições separadas cuja união forma um conjunto de camadas de saída, onde cada partição respectiva do conjunto respectivo de partições separadas contém uma ou mais camadas, o conjunto de camadas de saída consistindo de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas.
[0158] A figura 4 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo 30 que pode implementar as técnicas dessa descrição. A figura 4 é fornecida para fins de explicação e não delimitação das técnicas como amplamente exemplificado e descrito nessa descrição. Para fins de explicação, essa descrição descreve o decodificador de vídeo 30 no contexto de codificação HEVC. No entanto, as técnicas dessa descrição podem ser aplicáveis a outros padrões ou métodos de codificação.
[0159] No exemplo da figura 4, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 250, uma unidade de processamento de previsão 252, uma unidade de quantização inversa 254, uma unidade de processamento de transformação inversa 256, uma unidade de reconstrução 258, uma unidade de filtro 260, e um armazenador de imagem decodificada 262. A unidade de processamento por previsão 252 inclui uma unidade de compensação de movimento 264 e uma unidade de processamento por intraprevisão 266. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou outros componentes funcionais.
[0160] Um armazenador de imagem codificada (CPB) 251 pode receber e armazenar dados de vídeo codificados (por exemplo, unidades NAL) de uma sequência de bits. Os dados de vídeo armazenados no CPB 151 podem ser obtidos, por exemplo, a partir do meio legível por computador 16, por exemplo, a partir de uma fonte de vídeo local, tal como uma câmera, através de comunicação de rede com ou sem fio de dados de vídeo, ou pelo acesso ao meio de armazenamento de dados físicos. CPB 151 pode formar uma memória de dados de vídeo que armazena os dados de vídeo codificados a partir de uma sequência de bits de vídeo codificada. O armazenador de imagem decodificada 162 pode ser uma memória de imagem de referência que armazena os dados de vídeo de referência para uso na decodificação de dados de vídeo pelo decodificador de vídeo 30, por exemplo, em modos de intra ou intercodificação. CPB 151 e o armazenador de imagem decodificado 162 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso randômico dinâmica (DRAM), incluindo DRAM sincronizada (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. CPB 151 e o armazenador de imagem decodificada 162 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, CPB 151 pode estar em chip com outros componentes do decodificador de vídeo 30, ou fora de chip com relação a esses componentes.
[0161] A unidade de decodificação por entropia 250 pode receber unidades NAL do CPB 251 e analisar as unidades NAL para obter elementos de sintaxe da sequência de bits. A unidade de decodificação por entropia 250 pode decodificar por entropia os elementos de sintaxe codificados por entropia nas unidades NAL. A unidade de processamento por previsão 252, a unidade de quantização inversa 254, a unidade de processamento de transformação inversa 256, a unidade de reconstrução 258, e a unidade de filtro 260 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe obtidos a partir da sequência de bits.
[0162] Por exemplo, a unidade de decodificação por entropia 250 pode obter, a partir da sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição. A unidade de processamento por previsão 252, a unidade de quantização inversa 254, a unidade de processamento de transformação inversa 256, a unidade de reconstrução 258, e a unidade de filtro 260 podem decodificar as partições de um esquema de partição em particular. Em alguns exemplos, para cada esquema de partição respectivo de um ou mais esquemas de partição, a unidade de decodificação por entropia 250 obtém, a partir de uma mensagem SEI na sequência de bits ou VUI em um VPS na sequência de bits, um conjunto respectivo de conjuntos de parâmetros HRD para o esquema de partição respectivo. O decodificador de vídeo 30 pode testar, com base nos parâmetros HRD para um ou mais esquemas de partição, cada partição de cada um dos um ou mais esquemas de partição para conformidade a um padrão de codificação de vídeo.
[0163] As unidades NAL da sequência de bits podem incluir unidades NAL de fatia codificada. Como parte da decodificação da sequência de bits, a unidade de decodificação por entropia 250 pode decodificar por entropia os elementos de sintaxe das unidades NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe pertencentes a uma fatia.
[0164] Em adição à obtenção de elementos de sintaxe a partir da sequência de bits, o decodificador de vídeo 30 pode realizar uma operação de decodificação em uma CU. Pela realização da operação de decodificação em uma CU, o decodificador de vídeo 30 pode reconstruir blocos de codificação da CU.
[0165] Como parte da realização de uma operação de decodificação em uma CU, a unidade de quantização inversa 254 pode quantizar de forma inversa, isso é, desquantizar, os blocos de coeficientes das TUs da CU. A unidade de quantização inversa 254 pode utilizar um valor de QP para a CU da TU para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa para a unidade de quantização inversa 254 aplicar. Isso é, a razão de compressão, isso é, a razão do número de bits utilizado para representar a sequência original e a sequência comprimida, pode ser controlada pelo ajuste do valor de QP utilizado quando da quantização dos coeficientes de transformação. A razão de compressão também pode depender do método de codificação por entropia empregado.
[0166] Depois de a unidade de quantização inversa 254 quantizar de forma inversa um bloco de coeficientes, a unidade de processamento de transformação inversa 256 pode aplicar uma ou mais transformações inversas ao bloco de coeficientes a fim de gerar um bloco residual para a TU. Por exemplo, a unidade de processamento de transformação inversa 256 pode aplicar um DCT inverso, uma transformação de inteiro inverso, uma transformação Karhunen-Loeve inversa (KLT), uma transformação rotativa inversa, uma transformação direcional inversa, ou outra transformação inversa para o bloco de coeficiente.
[0167] Se uma PU for codificada utilizando a intraprevisão, a unidade de processamento por intraprevisão 266 pode realizar a intraprevisão para gerar os blocos de previsão para a PU. Por exemplo, a unidade de processamento por intraprevisão 266 pode realizar a intraprevisão para gerar blocos de previsão de luminescência, Cb e Cr para a PU. A unidade de processamento por intraprevisão 266 pode utilizar um modo de intraprevisão para gerar os blocos de previsão para a PU com base nos blocos de previsão de PUs espacialmente vizinhas. A unidade de processamento de intraprevisão 266 pode determinar o modo de intraprevisão para a PU com base em um ou mais elementos de sintaxe obtidos a partir da sequência de bits.
[0168] A unidade de processamento por previsão 252 pode construir uma primeira lista de imagens de referência (RefPicList0) e uma segunda lista de imagens de referência (RefPicList1) com base nos elementos de sintaxe extraídos da sequência de bits. Adicionalmente, se uma PU for codificada utilizando-se a interprevisão, a unidade de decodificação por entropia 250 pode obter informação de movimento para a PU. A unidade de compensação de movimento 264 pode determinar, com base na informação de movimento da PU, uma ou mais regiões de referência para a PU. A unidade de compensação de movimento 264 pode gerar, com base nas amostras em um ou mais blocos de referência para a PU, blocos de previsão para a PU. Por exemplo, a unidade de compensação de movimento 264 pode gerar, com base nas amostras de um ou mais blocos de referência para PU, blocos de previsão de luminescência, Cb e Cr para a PU.
[0169] A unidade de reconstrução 258 pode utilizar valores residuais a partir dos blocos de transformação das TUs de uma CU e blocos de previsão de PUs da CU para reconstruir os blocos de codificação da CU. Por exemplo, a unidade de reconstrução 258 pode utilizar os valores residuais de blocos de transformação de luminescência, Cb e Cr de TUs de uma CU e os blocos de luminescência, Cb e Cr de previsão das PUs da CU para reconstruir os blocos de codificação de luminescência, Cb e Cr da CU. Por exemplo, a unidade de reconstrução 258 pode adicionar amostras de blocos de transformação às amostras correspondentes dos blocos de previsão para reconstruir os blocos de codificação da CU.
[0170] A unidade de filtro 260 pode realizar uma operação de desbloqueio para reduzir os artefatos de bloqueio associados com os blocos de codificação da CU. O decodificador de vídeo 30 pode armazenar os blocos de codificação da CU no armazenador de imagens decodificadas 262. O armazenador de imagens decodificadas 262 pode fornecer imagens de referência para compensação de movimento subsequente, intraprevisão, e apresentação em um dispositivo de exibição, tal como um dispositivo de exibição 32 da figura 1. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos no armazenador de imagens decodificadas 262, as operações de interprevisão ou interprevisão em PUs de outras CUs. Dessa forma, o decodificador de vídeo 30 pode obter, a partir da sequência de bits, os níveis de coeficiente de transformação de um bloco de coeficientes, a quantização inversa dos níveis de coeficientes de transformação, aplicação de uma transformação aos níveis de coeficientes de transformação para gerar um bloco de transformação, a geração, com base pelo menos em parte no bloco de transformação, um bloco de codificação, um envio de bloco de codificação para exibição.
[0171] As seções a seguir dessa descrição descrevem alguns detalhes da implementação de algumas técnicas ilustrativas dessa descrição descrita acima. O texto a seguir ilustra as mudanças na implementação de uma ou mais técnicas dessa descrição. O texto sublinhado indica texto adicionado. O texto em itálico incluído entre colchetes é o texto eliminado. Nomes de elementos de sintaxe são ilustrados em negrito.
[0172] Como indicado acima, de acordo com algumas técnicas dessa descrição, o codificador de vídeo 20 pode singular um ou mais esquemas de partição. Cada um dos esquemas de partição divide as camadas em um conjunto de camadas de saída em uma ou mais partições. Cada camada em um conjunto de camadas de saída deve pertencer a exatamente uma partição em um esquema de partição.
[0173] A Tabela 2, abaixo, indica mudanças na sintaxe de extensão VPS para sinalizar os esquemas de partição definidos em SHVC WD6 e MV-HEVC WD8. Tabela 2
Figure img0005
Figure img0006
[0174] No exemplo da Tabela 2, num_partition_schemes[i] especifica o número de esquemas de partição especificados para o conjunto de camada de saída i. O valor de num_partition_schemes[i] deve estar na faixa de 0 a 15, inclusive. Adicionalmente, num_partitions_in_scheme_minus1[i][j] mais 1 especifica o número de partições no esquema de partição j do conjunto de camadas de saída i. O valor de num_partitions_in_scheme_minus[i][j] deve estar na faixa de 0 a NumLayersInIdList[LayerSetIdxForOutputLayerSet[i]]-1, inclusive.
[0175] Adicionalmente, no exemplo da Tabela 2, layer_included_in_partition_falg[i][j][k][r] igual a 1 especifica que a camada r especificada no VPS é incluída na partição k do esquema de partição j do conjunto de camada de saída i. layer_included_in_partition_flag[i][j][k][r] igual a 0 especifica que a camada r especificada em VPS não é incluída na partição k do esquema de partição j do conjunto de camadas de saída i.
[0176] Dessa forma, para cada esquema de partição respectivo, para cada partição respectiva do esquema de partição respectivo, para cada camada respetiva do conjunto de camadas de saída, o decodificador de vídeo 30 pode obter, a partir da sequência de bits, um elemento de sintaxe (isso é, layer_included_in_partition_flag) indicando se a camada respectiva está incluída na partição respectiva. Em um exemplo similar, para cada esquema de partição respectivo de um ou mais esquemas de partição, para cada partição respectiva do esquema de partição respectivo, para cada camada respectiva do conjunto de camadas de saída, o codificador de vídeo 20 pode incluir, em uma sequência de bits, um elemento de sintaxe (isso é, layer_included_in_partition_flag) indicando se a camada respectiva está incluída na partição respectiva.
[0177] No exemplo da Tabela 2, é uma exigência da conformidade de sequência de bits que para cada camada com nuh_layer_id igual a currLayerId no conjunto de camadas de saída i, exista um e apenas um valor de k na faixa de 0 a num_partitions_in_scheme_minus1[i][j], inclusive, para cada esquema de partição com índice j do conjunto de camadas de saída i, de modo que layer_included_in_partition_flag[i][j][l][LayerIdxInVps[cur rLayerId] seja igual a 1.
[0178] Como mencionado acima, de acordo com alguns exemplos dessa descrição, a sinalização de um perfil, um tier e um nível é fornecida para cada partição. Como ilustrado no exemplo da Tabela 2, profile_level_tier_partition_idx[i][j][k] especifica o índice, na lista de estruturas de sintaxe profile_tier_level() no VPS, da estrutura de sintaxe profile_tier_level() que aplica à partição k do esquema de partição j do conjunto de camadas de saída i. O comprimento do elemento de sintaxe profile_level_tier_partition_idx[i] é Ceil(Log2(vps_num_profile_tier_level_minus1 + 1)) bits. O valor de profile_level_tier_idx[0][0][0] é inferido como sendo igual a 0. O valor de profile_level_tier_partition_idx[i] deve estar na faixa de 0 a vps_num_profile_tier_level_minus1, inclusive.
[0179] Em outro exemplo, as mudanças ilustradas na Tabela 3 podem ser realizadas para a sintaxe de extensão VPS a fim de sinalizar os esquemas de partição. As mudanças ilustradas na Tabela 3 são relativas à Tabela 2, acima. Tabela 3
Figure img0007
[0180] No exemplo da Tabela 3, as mudanças a seguir podem ser feitas à semântica de elementos de sintaxe particulares da extensão VPS descritos acima com referência à Tabela 2. num partitioning_schemes_minus1[i]plusl especifica o número de esquemas de partição especificados para o conjunto de camadas de saída i. O valor de num_partitioning_schemes_minus1[i] deve estar na faixa de 0 a l5, inclusive. num partitions in scheme minus[[1]]2[i][j] mais [[1]]2 especifica o número de partições no esquema de partição j do conjunto de camadas de saída i. O valor de num_partitions_in_scheme_minus[[1]]2[i][j] deve estar na faixa de 0 a NumLayersInIdList[LayerSetIdxForOutputLayerSet[i]]-1, inclusive. O valor da variável NumPartitionInScheme[i] [j] é derivado como segue: NumPartitionsInScheme[i][j] = (j = = 0) ? 1: num partitions in scheme minus2[i][i]+2. [[É uma exigência da conformidade com sequência de bits que quando j for maior que 0, o valor de num_partitions_in_scheme_minus1[i][j] deve ser maior que 0.]] layer_included_in_partition_flag[i][j][k][r] igual a 1 especifica que a camada r especificada em VPS está incluída na partição k do esquema de partição j do conjunto de camadas de saída i. layer_included_in_partition_flag[i][j][k][r] igual a 0 especifica que a camada r especificada em VPS não está incluída na partição k do esquema de partição j do conjunto de camadas de saída i. O valor de layer_inclucded_in_partition_flag[i][0][0][r] é inferido como sendo igual ao valor de layer id included flag[LayerSetIdxForOutputLayerSet[i][r] com r na faixa de 0 a vps max layers minus1, inclusive. Nota 5 - [[É uma exigência da conformidade de sequência de bits que f]] Para cada camada com nuh_layer_id igual a currLayerId no conjunto de camada de saída i, exista um e apenas um valor de k na faixa de 0 a [[n] ]Num[ [_p] ]Partitions [ [_i] ]In [ [_s] ]Scheme [ [_minus1 ]] [i] [ j][[, inclusive]], para cada esquema de partição com índice j do conjunto de camadas de saída i, de modo que layer_included_in_partition_flag[i][j][k][LayerIdxInVps[cur rLayerId] é igual a 1. profile_level_tier_partition_idx[i][j][k] especifica o índice, na lista de estruturas de sintaxe profile_tier_level() em VPS, da estrutura de sintaxe profile_tier_level() que aplica à partição k do esquema de partição j do conjunto de camada de saída i. O comprimento do elemento de sintaxe profile_level_tier_partition_idx[i][j][k] é Ceil(Log2(vps_num_profile_tier_level_minus1 + 1)) bits. O valor de profile_level_tier_partition_idx[0] [0][0] é inferido como sendo igual a 0. O valor de profile level tier partition idx[i][0][0] é configurado para ser igual a profile level tier idx[i] com i na faixa de NumOutputLayerSets-1,inclusive. O valor de profile_level_tier_partition_idx[i]-[j][k] deve estar na faixa de 0 a vps_num_profile_tier_level_minus1, inclusive.
[0181] Em alguns exemplos, uma restrição é adicionada de modo que não mais de um esquema de partição para cada conjunto de camadas de saída contenha apenas uma partição. Adicionalmente, em alguns exemplos, o elemento de sintaxe profile_tier_level_idx[i] não é sinalizado e o elemento de sintaxe profile_tier_tier_partition_idx[i][j][k] é utilizado para sinalizar as indicações de perfil, tier e nível do esquema de partição do conjunto de camadas de saída que contém uma partição incluindo todas as camadas do conjunto de camadas de saída.
[0182] Adicionalmente, de acordo com algumas técnicas dessa descrição, os limites de nível e restrições que definem os perfis, tiers e níveis são específicos de partição. O texto a seguir indica outras mudanças para MV- HEVC WD8 a fim de implementar os limites e restrições de nível específicos de partição para perfis, tiers e níveis. G.11 Perfis, tiers e níveis G.11.1 Perfis G.11.1.2 Perfil Principal Estéreo Sequências de bits contendo conjuntos de camadas de saída com partições de camadas em conformidade com o perfil Principal Estéreo devem obedecer as seguintes restrições na subsequência de bits derivada para cada um dos conjuntos de camada de saída, com layerSetIdx sendo o índice do conjunto de camadas para o conjunto de camadas de saída, a subsequência de bits sendo derivada pela invocação do processo de extração de subsequência de bits como especificado na subcláusula F.10 com a sequência de bits, tIdTarget igual a 7, e TargetDecLayerIdList contendo os valores de nuh layer id do conjunto de camada com o índice layerSetIdx como entradas, as partições sendo derivadas pela invocação do processo de desmultiplexação para derivação de uma partição de sequência de bits como especificado na subcláusula C.6 com a subsequência de bits, a lista de amadas na partição listOfLayersInPartition, e o número de camadas na partição numLayersInPartition como entradas. Sequências de bits correspondentes às subsequências de bits para os conjuntos de camadas de saída com partições de camadas em conformidade com o perfil Principal Estéreo devem obedecer às seguintes restrições: - A subsequência de bits resultante do processo de extração de subsequência de bits com qualquer valor de tIdTarget e um valor de 0 em layerIdListTarget como entradas deve se conformar ao perfil Principal. - A sequência de bits deve conter uma camada com nuh_layer_id igual a i para a qual ViewScalExtLayerFlag[i] é igual a 1. - Quando ViewScalExtLayerFlag[i] é igual a 1, inter_view_mv_vert_constraint_flag deve ser igual a 1 na estrutura de sintaxe sps_multilayer_extension() de SPS RBSP ativo para a camada com nuh_layer_id igual a i. - Quando ViewScalExtLayerFlag[i] é igual a 1, ScalabilityId[LayerIdxInVps[i]][smIdx] deve ser igual a 0 para qualquer valor smIdx de 0 a 15, inclusive, que não é igual a 1, para qualquer imagem codificada com nuh_layer_id igual a i. - Quando ViewScalExtLayerFlag[i] é igual a 1, num_scaled_ref_layer_offsets deve ser igual a 0 em cada SPS ativo para a camada com nuh_layer_id igual a i. - Quando ViewScalExtLayerFlag[i] é igual a 1, os valores de pic_width_in_luma_samples e pic_height_in_luma_samples no SPS ativo para a camada com nuh_layer_id igual a i deve ser igual aos valores de pic_width_in_luma_samples e pic_height_in_luma_samples, respectivamente, em SPSs ativos para todas as camadas de referência direta dessa camada. - A sequência de bits deve conter uma subsequência de bits consistindo de duas camadas possuindo nuh_layer_id igual a 0 nuhLayerIdA para o qual ScalabilityId[LayerIdxInVps[nuhLayerIdA]][smIdx] deve ser igual a 0 para qualquer smIdx de 0 a 15, inclusive que não seja igual a 1. - VPSs deve ter avc_base_layer_flag igual a 0 apenas. - VPSs devem ter vps_num_rep_formats_minus1 na faixa de 0 a 15, inclusive. - SPSs devem ter sps_extension_type_flag[i] igual a 0 apenas para i igual a 0, e na faixa de 2 a 6, inclusive. - PPSs devem ter pps_extension_type_flag[i] igual a 0 apenas com i na faixa de 1 a 6 inclusive. No restante dessa subcláusula e na subcláusula G.11.3, para uma subsequência de bits de um conjunto de camada de saída,general profile idc, general profile compatibility flag[i], general tier flag, e genera level idc se referem a general profile idc, general profile compatibility flag[i], general tier flag, e general level idc, respectivamente, na estrutura de sintaxe de nível de tier de perfil () para o conjunto de camadas de saída. A conformidade de uma subsequência de bits de um conjunto de camada de saída ao perfil Principal Estéreo é indicada por general profile idc sendo igual a 5 ou general profile compatibility flag[5] sendo igual a 1. —NOTA-Quando general profile compatibility flag [ 5 ]é igual a 1, general profile compatibility flag[i] para i igual a 1 também deve ser igual a 1.
[0183] Adicionalmente, para se implementar os limites e restrições de nível específicos de partição para perfis, tiers e níveis, as mudanças a seguir podem ser par ao parágrafo G.11.2 de JCTVC-Q0145, que por si só modifica o parágrafo G.11.2 de Chen et al., "High efficiency video coding (HEVC) scalable extensions Draft 5, Equipe de Colaboração conjunta de Codificação de Vídeo (JCT-VC) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11 16o Encontro: San José, US, de 9 a 17 de janeiro de 2014, documento JCTVC- P1008_v4. G.11.2 Tiers e Níveis G.11.2.1 Limites de tier e nível gerais Para fins de comparação das capacidades de tier, o tier com general_tier_flag igual a 0 é considerado um tier inferior ao tier com general_tier_flag igual a 1. Para fins de comparação das capacidades de nível, um nível em particular de um tier específico é considerado um nível inferior a alguns outros níveis do mesmo tier quando o valor de general_level_idc do nível em particular é inferior ao de outro nível. A seguir é especificada para expressar as restrições nessa subcláusula, a subcláusula G.11.2.2 e a subcláusula G.11.3: - Deixe a unidade de acesso n ser a unidade de acesso n na ordem de decodificação, com a primeira unidade de acesso sendo a unidade de acesso 0 (isso é, unidade de acesso 0). - Deixe a variável fR ser configurada igual a 1 / 300. - Deixe a variável optLsIdx ser o índice de conjunto de camadas de saída de um conjunto de camadas de saída contido em uma sequência de bits, e a subsequência de bits do conjunto de camadas de saída ser derivado pela invocação do processo de extração de subsequência de bits como especificado na subcláusula F.10 com a sequência de bits, tIdTarget igual a 7, e TargetDecLayerIdList contendo os valores nuh_layer_id do conjunto de camadas de saída como entradas. - Deixe a variável partitionIdx ser o índice para qualquer partição em particular do conjunto de camadas de saída com índice optLsIdx, e a partição é derivada pela invocação do processo de desmultiplexação como especificado na subcláusula C.6 com a subsequência de bits, a lista de camadas na partição listOfLayersInPartition, e o número de camadas na partição numLayersinPartition como entradas. - Deixe as variáveis numLayersInOptLayerSet e numLayersInSubBitstream serem derivadas como segue: numLayersInOptLayerSet= NumLayersInIdList[LayerSetIdxForOutputLayerSet[opt LsIdx]] se (a camada de base no conjunto de camadas de saída for fornecida por meios externos) numLayersInSubBitstream = numLayersInOptLayerSet - 1 (H-63) ou numLayersInSubBitstream = numLayersInOptLayerSet - Deixe a variável partitionSizeInSamplesY ser derivada como segue: partitionSizeInSamplesY = 0 com (i = 0; i < numLayersInPartition; i ++) partitionSizeInSamplesY + = PicSizeInSamplesY da camada i na partição - Deixe a variável scaleFactor ser igual a Ceil(partitionSizeInSamplesY/MaxLumaPs) , onde MaxLumaPs é especificada na Tabela A-1 para o nível de partição. - Deixe a variável maxPartitionSliceSegs ser configurada igual a scaleFactor * MaxSliceSegmentsPerPicture, onde MaxSliceSegmentsPerPicture é especificado na Tabela 1-1 para o tier e nível da partição Cada partição em conformidade com um perfil em um tier e nível deve obedecer às seguintes restrições para cada teste de conformidade de sequência de bits como especificado no Anexo C: a) Para cada camada na partição, PicSizeInSamplesY deve ser inferior a ou igual a MaxLumaPs, onde MaxLumaPs é especificado na Tabela A-1 para tier e nível da partição. b) Para cada camada na partição, o valor de pic_width_in_luma_samples deve ser inferior a ou igual a Sqrt (MaxLumaPs*8). c) Para cada camada na partição, o valor de pic_height_in_luma_samples deve ser inferior a ou igual a Sqrt (MaxLumaPs*8). d) Para cada camada com nuh_layer_id igual a currLayerId na partição, o valor de max_vp s_de c_p i c_buffe ring minus1[optLsIdx][LayerIdxInVps[currLayerId]][HighestTid] deve ser inferior a ou igual a MaxDpbSize como derivado pela Equação A-2, com PicSizeInSamplesY sendo substituído por partitionSizeInSamplesY, para o tier e o nível da partição. e) Para o nível 5 e níveis superiores, o valor de CtbSizeY para cada camada na partição deve ser igual a 32 ou 64. f) O valor de NumPicTotalCurr para cada imagem na partição deve ser inferior a ou igual a 8. g) Quando da decodificação de cada imagem codificada na partição, o valor de num_tile_columns_minus1 deve ser inferior a MaxTileCols e num_tile_rows_minus1 deve ser inferior a MaxTileRows onde MaxTileCols e MaxTileRows são especificados na Tabela A-1 para tier e nível de partição. h) Para os parâmetros VCL HRD da partição, CpbSize[i] deve ser inferior a ou igual a 1000 * MaxCPB para pelo menos um valor de i na faixa de 0 a cpb_cnt_minus1[HighestTid], inclusive, onde CpbSize[i] é especificado na subcláusula E.3.3 com base nos parâmetros selecionados como especificado na subcláusula C.1 e MaxCPB é especificado na Tabela A-1 para tier e nível da partição, em unidades de 1000 bits. i) para os parâmetros NAL HRD da partição, CpbSize[i] deve ser inferior a ou igual a 1100 * MaxCPB para pelo menos um valor de i na faixa de 0 a cpb_cnt_minus1[HighestTid], inclusive, onde CpbSize[i] é especificado na subcláusula E.3.3 com base nos parâmetros selecionados como especificado na subcláusula C.1 e MaxCPB é especificado na Tabela A-1 para tier e nível da partição em unidades de 1100 bits. A Tabela A-1 especifica os limites para cada nível de cada partição. Uma partição e nível ao qual uma partição se conforma são indicados pelos elementos de sintaxe general_tier_flag e general_level_idc como segue: - general_tier_flag igual a 0 indica a conformidade ao tier Principal, e general_tier_flag igual a 1 indica a conformidade ao tier Alto, de acordo com as restrições de tier especificadas na Tabela A-1, general_tier_flag deve ser igual a 0 para níveis abaixo do nível 4 (correspondendo aos registros na Tabela A-1 marcados com "-"). - general_level_idc deve ser configurado igual a um valor de 30 vezes o número de nível especificado na Tabela A-1.
[0184] JCTVC-Q0145 inclui um anexo (JCTVC- Q0145_MvHevcText) que descreve mudanças a Tech et al., "MV- HEVC Draft Text 7," Equipe de Colaboração Conjunta em Desenvolvimento de Extensão de Codificação de Vídeo 3D de ITU-T SG 16 /WP3 e ISO/IEC JTC1/SC 29/WG 11, 7o. Encontro: San José, US, de 11 a 17 de janeiro de 2014, JCT3V-G1004-v7. O texto a seguir indica mudanças em JCTVC-Q0145_MvHevcText a fim de implementar os limites e restrições de nível específicos de partição para perfis, tiers e níveis. Por motivos de concisão, o texto eliminado de JCTVC- Q0145_MvHevcText será omitido abaixo. G.11.2.2 Limites de nível específicos de perfil para perfis Principal, Principal 10, e Principal Estéreo Cada partição em conformidade com o perfil Principal Estéreo em um tier e nível especificados deve obedecer às seguintes restrições para cada teste de conformidade de sequência de bits como especificado no Anexo C, onde "unidade de acesso" é utilizado para denotar o conjunto de imagens contidas na partição, juntamente com suas unidades NAL não VCL associadas, das camadas contidas na partição e que possuem o mesmo tempo de envio e o CPB é compreendido como sendo BPB: a) O tempo de remoção nominal da unidade de acesso n (com n sendo superior a 0) do CPB, como especificado na subcláusula C.2.3, deve satisfazer a restrição de que AuNominalRemovalTime[n] - AuCpbRemovalTime[n-1] seja maior do que ou igual a Max(partitionSizeInSamplesY / MaxLumaSr, fR) , onde partitionSizeInSamplesY é o valor de partitionSizeInSamplesY para a unidade de acesso n - 1 e MaxLumaSr é o valor especificado na Tabela A-2 que se aplica à unidade de acesso n - 1 para tier e nível de partição. b) A diferença entre os temos de envio consecutivos de imagens do DPB, como especificado na subcláusula C.3.3, deve satisfazer a restrição de que DpbOutputInterval[n] é superior a ou igual a Max(partitionSizeInSamplesY / MaxLumaSr, fR) , onde partitionSizeInSamplesY é o valor de partitionSizeInSamplesY da unidade de acesso n e MaxLumaSr é o valor especificado na Tabela A-2 para a unidade de acesso n para o tier e nível da partição, desde que o a unidade de acesso n seja uma unidade de acesso que possui uma imagem que é enviada e não é a última das unidades de acesso. c) O tempo de remoção da unidade de acesso 0 deve satisfazer a restrição de que o número de segmentos de fatia codificados na unidade de acesso 0 seja inferior ou igual a Min(Max(numLayersInPartition, MaxSliceSegmentsPerpicture * MaxLumaSr / MaxLumaPs * (AuCpbRemovalTime[0] - AuNominalRemovalTime[0]) + MaxSliceSegmentsPerPicture * partitionSizeInSamplesY / MaxLumaPs), MaxSliceSegmentsPerPicture), onde MaxSliceSegmentsPerPicture, MaxLumaPs e MaxLumaSr são os valores especificados na Tabela A-1 e Tabela A-2 para tier e nível de partição. d) A diferença entre tempos de remoção CPB consecutivos de unidades de acesso n e n-1 (com n sendo superior a 0) deve satisfazer a restrição de que o número de segmentos de fatia codificados na unidade de acesso n seja inferior a ou igual a Min ((Max(numLayersInPartition, MaxSliceSegmentsPerPicture * MaxLumaSr/ MaxLumaPs * (AuCpbRemovalTime[n] - AuCpbRemovalTime[n - 1])), MaxSliceSegmentsPerPicture), onde numLayersInPartition é o valor para a unidade de acesso n, e MaxSliceSegmentsPerPicture, MaxLumaPs e MaxLumaSr são os valores especificados na Tabela A-1 e Tabela A-2 que se aplicam à unidade de acesso n para o tier e o nível de partição. e) Para os parâmetros VCL HRD para a partição, BitRate[i] deve ser inferior a ou igual a CpbBrVclFactor * MaxBr para pelo menos um valor de i na faixa de 0 a cpb_cnt_minus1[HighestTid], inclusive, onde BitRate[i] é especificado na subcláusula E.3.3 com base nos parâmetros selecionados como especificado na subcláusula C.1 e MaxBr é especificado na Tabela A-2 em unidades de CpbBrVclFactor bits/s, onde CpbBrVclFactor é especificado na Tabela A-3 para tier e nível de partição. f) Para os parâmetros NAL HRD para a partição, BitRate[i] deve ser inferior a ou igual a CpbBrNalFactor * MaxBR para pelo menos um valor de i na faixa de 0 a cpb_cnt_minus1[HighestTid], inclusive, onde BitRate[i] é especificado na subcláusula E.3.3 com base nos parâmetros selecionados como especificado na subcláusula C.1 e MaxBR é especificado na Tabela A-2 em unidades de CpbBrNalFactor bits/s, onde CpbBrNalFactor é especificado na Tabela A-3 para tier e nível de partição. g) A soma das variáveis NumBytesInNalUnit para a unidade de acesso 0 deve ser inferior a ou igual a FormatCapabilityFactor * (Max(partitionSizeInSamplesY, fR * MaxLumaSr) + MaxLumaSr * (AuCpbRemovalTime[0] - AuNominalRemovalTime[0])) / MinCr, onde MaxLumaSr e MinCr são os valores especificados na Tabela A-2 e FormatCapabilityFactor é o valor especificado na Tabela A-3 que se aplica à imagem 0 para tier e nível de partição. h) A soma das variáveis NumBytesInNalUnit para a unidade de acesso n (com n sendo superior a 0) deve ser inferior a ou igual a FormatCapabilityFactor * MaxLumaSr* (AuCpbRemovalTime[n] - AuCpbRemovalTime [n - 1]) / MinCr, onde MaxLumaSr e MinCr são os valores especificados na Tabela A-2 e FormatCapabilityFactor é o valor especificado na Tabela A-3 que se aplicam à imagem n para tier e nível de partição. i) O tempo de remoção da unidade de acesso 0 deve satisfazer a restrição de que o número de tiles nas imagens codificadas na unidade de acesso 0 seja inferior a ou igual a Min(Max(numLayersInPartition, MaxTileCols * MaxTileRows * 120 * (AuCpbRemovalTime[0] - AuNominalRemovalTime [0]) + MaxTileCols * MaxTileRows), MaxTileCols * MaxTileRows), onde MaxTileCols e MaxTileRows são os valores especificados na Tabela A-1 para tier e nível de partição. j) A diferença entre tempos de remoção CPB consecutivos de unidades de acesso n e n - 1 (com n sendo superior a 0) deve satisfazer a restrição de que o número de tiles nas imagens codificadas na unidade de acesso n é inferior a ou igual a Min(Max(numLayersInPartition, MaxTileCols * MaxTileRows * 120 * (AuCpbRemovalTime[n] - AuCpbRemovalTime [ n - 1)), MaxTileCols * MaxTileRows), onde numLayersInPartition são os valores para a unidade de aceso n, e MaxTileCols e MaxTileRows são os valores especificados na Tabela A-1 que se aplicam à unidade de acesso n para tier e nível de partição.
[0185] Adicionalmente, de acordo com alguns exemplos dessa descrição, as mudanças a seguir podem ser feitas ao parágrafo G.11.1.2 Perfil Principal Estéreo de MV- HEVC WD8. No texto abaixo, as mudanças são ilustradas com relação à versão ilustrativa do parágrafo G.11.1.2 descrito acima nessa descrição. G.11.1.2 Perfil Principal Estéreo Para uma sequência de bits contendo conjuntos de camada de saída com partições em conformidade com o perfil Principal Estéreo, deixemos - olsIdx ser o índice de conjunto de camadas de saída de um conjunto de camadas de saída. layersetIdx ser o índice de conjunto de camada para o conjunto de camada de saída. - a subsequência de bits do conjunto de camadas de saída ser derivada pela invocação do processo de extração de subsequência de bits como especificado na subcláusula F.10 com os seguintes registros: a sequência de bits, tIdTarget igual a 6, e layerIdListTarget contendo os valores nuh layer id das camadas que são incluídas no conjunto de camadas com o índice layersSetIdx e são camadas de imagens primárias. - a sequência de bits de camada de base ser derivada pela invocação do processo de extração de subsequência de bits como especificado na subcláusula F.10 com a sequência de bits, tIdTarget igual a 6, e layerIdListTarget contendo apenas um valor nuh layer id é igual a 0 como entradas. A[[Sequências de bits contendo conjuntos de camadas de saída com partições de camadas em conformidade com o perfil Principal Estéreo devem obedecer as restrições a seguir na subsequência de bits derivada para cada um dos conjuntos de camadas de saída, com layerSetIdx sendo o índice do conjunto de camadas para o conjunto de camadas de saída, a subsequência e bits sendo derivada pela invocação do processo de extração de subsequência de bits como especificado na subcláusula F.10 com a sequência de bits, tIdTarget igual a 7 e TargetDecLayerIdList contendo os valores nuh_layer_id do conjunto de camadas com o índice layerSetIdx como entrada, as partições sendo derivadas pela invocação do processo de desmultiplexação para derivação de uma partição de sequência de bits como especificado na subcláusula C.6 com a subsequência de bits, a lista de camadas na partição listOfLayersInPartition, e o número de camadas na partição numLayersInPartition como entradas B]] sequências de bits [[correspondendo a subsequências de bits para]] conter conjuntos de camadas de saída com partições [[de camadas]] em conformidade com o perfil Principal Estéreo devem obedecer as seguintes restrições: - Todos os VPSs ativos devem ter vps_base_layer_internal_flag igual a 1 apenas. - Todos os VPSs ativos devem ter vps_num_rep_formats_minus1 na faixa de 0 a 15, inclusive. - [[Sequências de bits contendo conjuntos de camadas de saída em conformidade com o perfil Principal Estéreo devem obedecer às seguintes restrições na subsequência de bits derivada para cada um dos conjuntos de camadas de saída, com o índice de conjunto de camadas de saída olsIdx e layerSetIdx sendo o conjunto de camadas para o conjunto de camadas de saída, e a subsequência de bits sendo derivada pela invocação do processo de extração de subsequências de bits como especificado na subcláusula F.10 com os seguintes registros: a sequência de bits, tIdTarget igual a 6, e layerIdListTarget contendo os valores de nuh_layer_id das camadas que são incluídas no conjunto de camadas com o índice layerSetIdx e são camadas de imagens primárias.]] [[Sequências de bits contendo os conjuntos de camadas de saída em conformidade com o perfil Principal Estéreo também devem obedecer às restrições a seguir na sequência de bits de camada de base derivada pela invocação do processo de extração de subsequência de bits como especificado na subcláusula F.10 com a sequência de bis, tIdTarget igual a 6, e com layerIdListTarget contendo apenas um valor nuh_layer_id que é igual a 0 como entradas.]] A sequência de bits de camada de base [[derivada das sequências de bits em conformidade com o perfil Principal Estéreo]] deve obedecer às seguintes restrições: - A sequência de bits de camada de base deve obedecer a todas as restrições do perfil Principal especificado na subcláusula A.3.2. - Todos os SPSs ativos '[[da] ] para a camada de base [[sequência de bits]] deve ter general_profile_idc igual a 1 e general_profile_compatibility_flag [1] igual a 1. A subsequência de bits [[derivada]] de cada [[para um]] conjunto de camada de saída [[em conformidade com o perfil Principal Estéreo]] deve obedecer à seguinte restrição: - Todos os SPSs ativos para a subsequência de bits devem ter chroma_format_idc igual a 1 apenas. - CtbLog2SizeY derivado de qualquer SPS ativo [[da]] para a subsequência de bits deve estar na faixa de 4 a 6, inclusive. - ScalabilityId[j][smIdx] deve ser igual a 0 para qualquer valor smIdx não igual a 1 e para qualquer valor de j para a subsequência de bits. ... No restante dessa subcláusula e da subcláusula G.11.3, para uma subsequência de bits de um conjunto de camadas de saída, general_profile_idc, general_profile_compatibility_flag[i], general_tier_flag, e general_level_idc se referem a general_profile_idc, general_profile_compatibility_flag[i], general_tier_flag, e general_level_idc, respectivamente, na estrutura de sintaxe profile_tier_level() para a partição [[conjunto de camada de saída]]. A conformidade com uma subsequência de bits de uma partição [[conjunto de camada de saída]] para o perfil Principal Estéreo é indicada por general_profile_idc sendo igual a 6 [[5]] ou general_profile_compatibility_flag [6[[5]]] sendo igual a 1. - NOTA - Quando general_profile_compatibility_flag [6[[5]] é igual a 1, general_profile_compatibility_flag [1[[i]]] [[com i igual a 1]] também deve ser igual a 1.
[0186] Adicionalmente, em alguns exemplos dessa descrição, as mudanças a seguir podem ser realizadas ao parágrafo G.11.2.1 de MV-HEVC WD8. O texto abaixo indica mudanças em uma parte da versão ilustrativa do parágrafo G.11.2.1 descrito acima nessa descrição. G.11.2.1 Limites Gerais de Tier e Nível A condição (a) é alterada como segue: j) [[Para cada tier na]] O valor da partição [[,]] PicSizeInSamplesY deve ser inferior a ou igual a MaxLumaPs, onde MaxLumaPs é especificado na Tabela A-1 para tier e nível de partição.
[0187] Adicionalmente, em alguns exemplos dessa descrição, as mudanças a seguir são realizadas ao parágrafo G.11.2.2 de MV-HEVC WD8. O texto abaixo indica as mudanças em uma parte da versão ilustrativa do parágrafo G.11.2.1 descrito acima nessa descrição. G.11.2.2 Limites de nível específicos de perfil para perfis Principal, Principal 10 e Principal Estéreo Cada partição em conformidade com o perfil Principal Estéreo em um tier e nível especificados deve obedecer às seguintes restrições para [[cada sequência de bits]] o teste de conformidade como especificado no Anexo C, onde "unidade de acesso" é utilizado para denotar o conjunto de imagens contidas na partição, juntamente com suas unidades NAL não VCL associadas, das camadas contidas na partição e que possuem o mesmo tempo de saída e o CPB é compreendido como sendo BPB:
[0188] Adicionalmente, como descrito em outro local de acordo com uma ou mais técnicas dessa descrição, para cada esquema de partição respectivo de cada conjunto de camadas de saída, uma mensagem VPS VUI ou SEI de uma sequência de bits pode identificar um conjunto de parâmetros HRD para o esquema de partição respectivo. As mudanças ilustradas na Tabela 4 podem ser realizadas na estrutura de sintaxe de parâmetros HRD da partição de sequência de bits VPS VUI definida no Parágrafo F.7.3.2.1.6 de MV-HEVC WD8 e SHVC WD6 para implementar tais exemplos. Tabela 4
Figure img0008
Figure img0009
[0189] De acordo com o exemplo da Tabela 4, as mudanças a seguir podem ser feitas à semântica dos parâmetros HRD de partição de sequência de bits VPS VUI como definido nos parágrafos F.7.4.3.1.6 de MV-HEVC WD8 e SHVC WD6. [[num_bitsream_partitions[h] especifica o número de partições de sequência de bits para as quais os parâmetros HRD são especificados para o conjunto de camadas com índice h. layer_in_bsp_flag[h][i][j] especifica que a camada com índice j é uma parte da partição de sequência de bits com índice i dentro do conjunto de camadas com índice h.]] num_bsp_sched_combinations_minus1[h][i] mais 1 especifica o número de combinações das programações de distribuição e hrd_parameters() especificado para partições de sequência de bits para o esquema de partição i do conjunto de camada de saída h [[com índice h]]. A variável SchedCombCnt[h][i] é configurada igual a num_bsp_sched_combinations_minus1[h][i] + 1. bsp_comb_hrd_idx[h][i][j][k] especifica o índice hrd_parameters() dentro da estrutura de sintaxe vps_vui_bsp_hrd_parameters() utilizada na combinação [[i]] j de uma programação de distribuição e hrd_parameters() especificados para [sequência de bits]] a partição k [[com índice j e]] do esquema de partição i para o conjunto de camada de saída h [[com índice h]]. bsp_comb_sched_idx[h][i][j][k] especifica o índice de uma programação de distribuição dentro da estrutura de sintaxe hrd_parameters() com o índice bsp_comb_hrd_idx[h][i][j][k] que é utilizado na combinação [[i]]j de uma programação de distribuição e hrd_parameters() especificados para [[i] a combinação j de uma programação de distribuição e o hrd_parameters() especificado para [[sequência de bits]] a partição k [[com índice j]] do esquema de partição i [[e]]para o conjunto de camadas de saída h [[com índice h]].
[0190] Adicionalmente, de acordo com uma ou mais técnicas dessa descrição, as mudanças ilustradas na Tabela 5, abaixo, podem ser realizadas à sintaxe de mensagem SEI dos parâmetros HRD de partição de sequências de bits como definido no parágrafo F.14.1.5 de MV-HEVC WD8 e SHVC WD6. Tabela 5
Figure img0010
Figure img0011
[0191] Adicionalmente, no exemplo da Tabela 5, a mensagem SEI de inclusão de partição de sequência de bits fornece um mecanismo para associar as mensagens SEI a uma partição de sequência de bits de um conjunto de camadas de saída. No exemplo da Tabela 5, as mudanças a seguir à semântica de mensagem SEI de parâmetros HRD de partição de sequência de bits podem ser realizadas ao parágrafo F.14.2.5 de MV-HEVC WD8 e SHVC WD6. num sei partitioning schemes minus1[olsIdx] mais 1 especifica o número de esquemas de partição especificados para o conjunto de camadas de saída com índice olsIdx. O valor de num sei partitioning schemes minus1[olsIdx] deve estar na faixa de 0 a 15, inclusive. num sei bitstream partitions minus2[[1]][olsIdx][i ]mais[[1]]2 especifica o número de partições de sequência de bits para as quais os parâmetros HRD são especificados para o esquema de partição i do conjunto de camadas de saída com o índice olsIdx. O valor de num sei bitstream partitions minus1[olsIdx][i] deve estar na faixa de 0 a. NumLayersInIdList[LayerSetIdxForOutputLayerSet[olsIdx]] - 1, inclusive . O valor de num sei bitstream partitions minus1[olsIdx][0] é inferido para que seja igual a 0. O valor da variável NumPartitionInScheme[i] [j] é derivado como segue: NumSeiBitstreamPartitions[olsIdx][i]=(i = = 0)? 1: num sei bitstream partitions minus2[i][j]+2. sei_layer_in_bsp_flag[olsIdx][i][j][k] especifica que a camada com índice [[j]] k é uma parte da partição de sequência de bits com índice [[i]]j dentro do esquema de partição com índice i do conjunto de camadas com índice o l sIdx. O valor de layer included in partition flag[olsIdx] [0] [0] [k]é inferido como sendo igual a o valor de layer id included flag[LayerSetIdxForOutputLayerSet[olsIdx] [k] com k na faixa de 0 a vps max layers minus1, inclusive. É uma exigência da conformidade de sequência de bits que a partição de sequência de bits com índice [[j]]n deva não incluir camadas de referência diretas ou indiretas de quaisquer camadas na partição de sequência de bits com índice [[i]] m para quaisquer valores de [[i]]m e [[j]] n na faixa de 0 a N[[n]]um[[_s]]Sei[[_b]]Bitstream[[_p]]Partitions[[_minus1]] [olsIdx] [i] [[, inclusive]], de modo que [[i]] m seja inferior a [[i]]n. sei_num_bsp_sched_combinations_minus1[olsIdx][i] plus 1 especifica o número de combinações das programações de distribuição e hrd_parameters() especificado para partições de sequência de bits para esquema de partição com índice i do conjunto de camada de saída com olsIdx de índice. A variável SchedCombCnt[olsIdx] [i] é configurada igual a sei_num_bps_sched_combinations_minus1[olsIdx][i] + 1. sei_bsp_comb_hrd_idx[olsIdx][i][k] especifica o índice de hrd_parameters() dentro dessa mensagem SEI utilizada na combinação [[i]] j de uma programação de distribuição e hrd_parameters()especificados para a partição de sequência de bits com índice [[i]] k do esquema de partição com índice i [[e]] para o conjunto de camada de saída com índice olsIdx. sei_bsp_comb_sched_idx [olsIdx] [i] [j] [k] especifica o índice de uma programação de distribuição dentro da estrutura de sintaxe hrd_parameters() com o índice sei_bsp_comb_hrd_idx [olsIdx] [i] [j] [k] que é utilizado na combinação [[i]]j de uma programação de distribuição e hrd_parameters() especificados para a partição de sequência de bits com índice [[j]] k do esquema de partição com índice i [[e]] para o conjunto de camada de saída com índice olsIdx.
[0192] O anexo C em MV-HEVC WD8 e SHVC WD6 descreve HRD. Mais particularmente, o parágrafo C.1 de MV-HEVC WD8 e SHVC WD6 indica que múltiplos testes podem ser necessários para se verificar a conformidade de uma sequência de bits, que é referido como sequência de bits sob teste. Adicionalmente, o parágrafo C.1 de MV-HEVC WD8 e SHVC WD6 indica uma série de etapas a serem aplicadas a fim se verificar a conformidade de uma sequência de bits.
[0193] Em alguns exemplos dessa descrição, a série de etapas descritas no parágrafo C.1 de MV-HEVC WD8 e SHVC WD6 é modificada a fim de suportar o esquema de partição descrito em outro local nessa descrição. Por exemplo, as modificações a seguir podem ser feitas ao parágrafo C.1 de MV-HEVC WD8 e SHVC WD6. Para cada teste, as etapas a seguir são aplicadas na ordem listada: 1. Um ponto de operação em teste, denotado como TargetOp, é selecionado pela seleção de um valor para TargetOutputLayerSetIdx identificando um conjunto de camadas de saída alvo e selecionando o mais alto valor de TemporalId alvo, HighestTid. O valor de TargetOutputLayerSetIdx deve estar na faixa de 0 a NumOutputLayerSets - 1, inclusive. O valor de HighestTid deve estar na faixa de o a MaxSubLayersInLayerSetMinus1[LayerSetIdxForOutputLayerSet[T argetOutputLayerSetIdx]], inclusive. As variáveis TargetDecLayerSetIdx, TargetOptLayerIdList e TargetDecLayerIdList são então derivados como especificado pela equação 8-1. O ponto de operação sob teste possui OpLayerIdList igual a TargetOptLayerIdList, OpLayerIdList é igual a TargetDecLayerIdList e OpTid igual a HighestTid. 2. O processo de extração de subsequência de bit como especificado na cláusula 10 é invocado com a sequência de bits sob teste, HighestTid, e TargetDecLayerIdList como entradas, e a saída é designada para BitstreamToDecode. Um esquema de partição é selecionado a partir da lista de esquemas de partição sinalizados no VPS ativo para o conjunto de camadas de saída selecionado. Depois disso, para o esquema de partição selecionado, uma partição é selecionada a partir da lista de partições sinalizadas em VPS para o conjunto de camadas de saída selecionado. 3. Se a partição selecionada contiver todas as camadas do conjunto de camadas de saída selecionado, a operação CPB específica de sequência de bits é selecionada. Do contrário, a operação CPB específica de partição de sequência de bits é selecionada. As etapas subsequentes se aplicam à subsequência de bits da partição selecionada, referida como partição de sequência de bits sob teste, [[Quando ambas a estrutura de sintaxe vps_vui_bsp_hrd_parameters() estão presentes no VPS ativo, um esquema de partição, denotado como TargetPartitioningScheme, é selecionado pela seleção de um valor para TargetPartitioningSchemeIdx que está na faixa de 1 a num_partitioning_schemes_minus1[TargetOutputLayerSetIdx], inclusive. Quando num_bitstream_partitionsnNum_pPartitions_iln_sScheme_minus1 [TargetDecOutputLayerSetIdx][TargetPartitioningSchemeIdx] é superior a 1 01 onde TargetPartitioningSchemeIdx é o índice de TargetPartitioningScheme selecionado que está na faixa de 1 a num_partitioning_schemes_minus1[TargetOutputLayerSetIdx/ ou ambas uma mensagem SEI de parâmetros HRD de partição de sequência de bits estão presentes e a mensagem SEI contém o elemento de sintaxe num_sei_bitstream_partitions_in_schemebitstream_partitions_ minus1[TargetDecOutputLayerSetIdx/[TargetPartitioningScheme Ids/ superior a 0, qualquer operação CPB específica de sequência de bits ou operação CPB específica de partição de sequência de bits é selecionada para um teste de conformidade, e ambas as operações CPB devem ser testadas para verificar a conformidade de uma sequência de bits. Quando a operação CPB específica de sequência de bits é testada, as etapas subsequentes se aplicam à sequência de bits sob teste. Quando a operação CPB específica de partição de sequência de bits é testada, as etapas subsequentes se aplicam a cada partição da sequência de bits da sequência de bits sob teste, referida como partição de sequência de bits sob teste. Quando a operação CPB específica de partição de sequência de bits é testada e a entrada para HRD é uma sequência de bits, as partições de sequência de bit são]] derivadas com o processo de desmultiplexação para derivação de uma partição de sequência de bits na subcláusula C.6. Quando a operação CPB específica de partição de sequência de bits é selecionada, as partições de sequência de bits de outras partições do mesmo esquema de partição do conjunto de camadas de saída selecionado são consideradas decodificadas pelas capacidades de decodificação além de HRD, mas disponíveis para HRD como programado de acordo com os parâmetros HRD dessas partições. 4. A estrutura de sintaxe hrd_parameters() e a estrutura de sintaxe sub_layer_hrd_parameters() aplicáveis a TargetOp são selecionadas como segue: - Se a operação CPB específica de sequência de bits for testada, o seguinte se aplica: - Se TargetDecLayerIdList contiver todos os valores nuh_layer_id presentes na sequência de bits sob teste, a estrutura de sintaxe hrd_parameters() no SPS ativo para a camada de base (ou fornecido através de um dispositivo externo não especificado nessa Especificação) é selecionado. - Do contrário, a estrutura de sintaxe hrd_parameters() no VPS ativo (ou fornecida através de algum dispositivo externo não especificado nessa Especificação) que se aplica a TargetOp é selecionada. - Do contrário, a estrutura de sintaxe hrd_parameters() é selecionada como segue: - Qualquer uma das estruturas de sintaxe hrd_parameters() nas condições a seguir pode ser selecionada, se ambas as condições a seguir forem verdadeiras: - A estrutura de sintaxe vps_vui_bsp_hrd_parameter() está presente no VPS ativo (ou está disponível através de algum dispositivo externo não especificado nessa Especificação) e contém a estrutura de sintaxe hrd_parameters() que se aplica a TargetOp, a TargetPartitioningScheme e à partição de sequência de bits sob teste. - Uma mensagem SEI de parâmetros HRD de partição de sequência de bits que é incluída em uma mensagem SEI de inclusão escalonável que se aplica a TargetOp e contém uma estrutura de sintaxe hrd_parameters() que se aplica a TargetOP, a TargetPartitioningScheme e à partição de sequência de bits sob teste está presente (ou está disponível através de alguns dispositivos externos não especificados nessa Especificação). - Do contrário, se a estrutura de sintaxe vps_vui_bsp_hrd_parameters() estiver presente no VPS ativo (ou estiver disponível através de algum dispositivo externo não especificado nessa Especificação) e contiver a estrutura de sintaxe hrd_parameters() que se aplica a TargetOp, a TargetPartitioningScheme e à partição de sequência de bits sob teste, essa estrutura de sintaxe hrd_parameters() é selecionada. - Do contrário, uma estrutura de sintaxe hrd_parameters() que se aplica à partição de sequência de bits sob teste na mensagem SEI de parâmetros HRD de partição de sequência de bits que é incluída em uma mensagem SEI de inclusão escalonável que se aplica a TargetOp e a TargetPartitioningScheme deve estar presente (ou deve estar disponível através de algum dispositivo externo não especificado nessa Especificação) e é selecionada. Dentro da estrutura de sintaxe hrd_parameters() selecionada, se BitstreamToDecode é uma sequência de bits Tipo I, a estrutura de sintaxe sub_layer_hrd_parameters(HighestTid) que segue imediatamente a condição "se (vcl_hrd_parameters_present_flag)" é selecionada e a variável NalHrdModeFlag é configurada para 0; do contrário (BitstreamToDecode é uma sequência de bits Tipo II), a estrutura de sintaxe sub_layer_hrd_parameters(HighestTid) que segue imediatamente a condição "se (vcl_hrd_parameters_present_flag)" (nesse caso a variável NalHrdModeFlag é configurada igual a 0) ou a condição "se (nal_hrd_parameters_present_flag)" (nesse caso a variável NalHrdModeFlag é configurada igual a 1) é selecionada. Quando BitstreamToDecode é uma sequência de bits Tipo II e NalHrdModeFlag é igual a 0, todas as unidades NAL não VCL exceto as unidades NAL de dados de enchimento, e todos os elementos de sintaxe leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes, e trailing_zero_8bits que formam uma sequência de bytes a partir da sequência de unidade NAL (como especificado no Anexo B), quando presente, são descartados de BitstreamToDecode, e a sequência de bits restante é designada para BitstreamToDecode. 5. Uma unidade de acesso associada com uma mensagem SEI de período de armazenamento (presente em BitstreamToDecode ou disponível através de dispositivo externo não especificado nessa Especificação) aplicável a TargetOp é selecionada como ponto de inicialização HRD e referido com uma unidade de acesso 0. Uma mensagem SEI de período de armazenamento aplicável está disponível através dos meios externos não especificados nessa Especificação ou é selecionada a partir da unidade de acesso 0 como segue: - Se a operação CPB específica de sequência de bits for testada, o seguinte se aplica: - Se TargetDecLayerIdList contiver todos os valores nuh_layer_id presentes na sequência de bits em teste, uma mensagem SEI de período de armazenamento não aninhada é selecionada. - Do contrário, uma mensagem SEI de período de armazenamento incluída na mensagem SEI de inclusão escalonável com bitstream_subset_flag igual a 1 e aplicável a TargetOP é selecionada. - Do contrário, uma mensagem SEI de período de armazenamento incluída na mensagem SEI de inclusão de partição de sequência de bit aplicável à partição de sequência de bit sob teste é selecionada. A variável MultiLayerCpbOperationFlag é derivada como segue: - Se a mensagem SEI do período de armazenamento selecionada não for incluída ou for incluída em uma mensagem SEI de inclusão escalonável que se aplica apenas à subsequência de bits que contém apenas a camada de base, MultiLayerCpbOperationFlag é configurada como sendo igual a 0. - Do contrário, MultiLayerCpbOperationFlag é configurada como sendo igual a 1. 6. Para cada unidade de acesso em BitstreamToDecode começando a partir da unidade de acesso 0, a mensagem SEI do período de armazenamento (presente em BitstreamToDecode ou disponível através de dispositivo externo não especificado nessa Especificação) que é associada à unidade de acesso e se aplica a TargetOP é selecionada, a mensagem SEI de temporização de imagem (presente em BitstreamToDecode ou disponível através do dispositivo externo não especificado nessa Especificação) que é associada à unidade de acesso e se aplica a TargetOp é selecionada, e quando SubPicHrdFlag é igual a 1 e sub_pic_cpb_params_in_pic_timing_sei_flag é igual a 0, as mensagens SEI de informação de unidade de decodificação (presentes em BitstramToDecode ou disponíveis através do dispositivo externo não especificado nessa Especificação), que são associadas às unidades de decodificação na unidade de acesso e se aplicam a TargetOp são selecionadas como segue: - Se a operação CPB específica de sequência de bits for testada, o seguinte se aplica: - Se TargetDecLayerIdList contiver todos os valores nuh_layer_id presentes na sequência de bits sob teste, o período de armazenamento não testado, a temporização da imagem e as mensagens SEI de informação de unidade de decodificação são selecionadas. - Do contrário, as mensagens SEI de período de armazenamento, temporização de imagem e informação de unidade de decodificação incluídas na mensagem SEI de inclusão escalonável com bitstream_subset_flag igual a 1 e aplicável a TargetOp são selecionadas. - Do contrário, as mensagens SEI de informação de período de armazenamento, temporização de imagem e unidade de decodificação incluídas na mensagem SEI de inclusão de partição de sequência de bits e aplicável à partição de sequência de bits sob teste são selecionadas. 7. Um valor de SchedSelIdx é selecionado como segue: - Se a operação CPB específica de sequência de bits for testada, SchedSelIdx selecionada deve estar na faixa de 0 a cpb_cnt_minus1[HighestTid], inclusive, onde cpb_cnt_minus1[HighestTid] é encontrada na estrutura de sintaxe sub_layer_hrd_parameters (HighestTid) como selecionado acima. - Do contrário (a operação CPB específica de partição de sequência de bits é testada), e SchedSelCombIdx é selecionada para a sequência de bits sob teste e utilizada para cada partição de sequência de bits sob teste. O seguinte se aplica: - Se a estrutura de sintaxe vps_vui_bsp_hrd_parameters() estiver presente no VPS ativo (ou disponibilizada através do dispositivo externo não especificado nessa Especificação) e contiver a estrutura de sintaxe hrd_parameters() selecionada que se aplica a TargetOp e à partição de sequência de bit sob teste, SchedSelCombIdx selecionada deve estar na faixa de 0 a num_bsp_sched_combinations_minus1[TargetOutput[[Dec]] LayerSetIdx][TargetPartitioningSchemeldx], inclusive, e SchedSelIdx selecionado deve ser igual a bsp_comb_sched_idx[Targetoutput[[Dec]]LayerSetIdx] [TargetPartitioningSchemeldx][SchedSelCombIdx][j] onde j é o índice da partição de sequência de bits sob teste, onde TargetPartitioningSchemeIdx é o índice de TargetPartitioningScheme selecionado que está na faixa de 1 a num partitioning schemes minus1[TargetOutputLayerSetIdx] - Do contrário, SchedSelCombIdx selecionado deve estar na faixa de 0 a sei_num_bsp_sched_combinations_minus1[TargetOutput[[Dec]]La yerSetIdx][TargetPartitioningSchemeldx], inclusive, e SchedSelIdx selecionado deve ser igual a sei_bsp_comb_sched_idx[TargetOutput[[Dec]]LayerSetIdx][Targ etPartitioningSchemeldx][SchedSelCombIdx][j] da mensagem SEI de parâmetros HRD de partição de sequência de bits aplicável a TargetOp onde j é o índice da partição de sequência de bits sob teste. O HRD opera como segue: - O HRD é inicializado na unidade de decodificação 0, com CPB, cada sub-DPB de DPB e cada BPB sendo configurado para estar vazio (a plenitude de sub-DPB para cada sub-DPB é configurada como sendo igual a 0). NOTA 6 - Depois da inicialização, HRD não é inicializado novamente pelas mensagens SEI de período de armazenamento subsequentes. - Para a operação CPB específica de sequência de bits, os dados associados com unidades de decodificação que fluem par dentro de CPB de acordo com uma programação de chegada especificada são distribuídos por HSS. Para a operação CPB específica de partição de sequência de bits, os dados associados com as unidades de decodificação que fluem para dentro de BPB de acordo com uma programação de chegada especificada são distribuídos por um HBPS. - Quando a operação CPB específica de partição de sequência de bits é utilizada, cada partição de sequência de bits com índice j é processada como especificado na cláusula C.2 com HSS substituído por HPBS e com SchedSelIdx igual a bsp_comb_sched_idx[TargetOutput[[Dec]]LayerSetIdx][Targetpa rtitioningSchemeIdx][SchedSelCombIdx][j], se a estrutura de sintaxe vps_vui_bsp_hrd_parameters() estiver presente em VPS ativo ou estiver disponível através de algum dispositivo externo ao especificado nessa Especificação), ou igual a sei_bsp_comb_sched_idx[TargetOutput[[Dec]]LayerSetIdx][Targ etPartitioningSchemeldx][SchedSelCombIdx][j] da mensagem SEI de parâmetros HRD de partição de sequência de bits aplicável a TargetOp, do contrário. - Os dados associados com cada unidade de decodificação são removidos e decodificados instantaneamente pelo processo de decodificação instantâneo no momento de remoção de CPB da unidade de decodificação. - Cada imagem decodifica é localizada no DPB. - Uma imagem decodificada é removida de DPB quando se torna desnecessária para fins de referência de interprevisão e não precisa mais ser enviada.
[0194] Como notado acima, quando um HRD testa cada partição de cada esquema de partição, com base em uma partição selecionada de um esquema de partição em particular de um ou mais esquemas de partição não contendo todas as camadas do conjunto de camadas de saída, o HRD pode se aplicar, uma operação de armazenador de imagem codificada específica de partição (CPB). Por exemplo, HRD pode obter, a partir de uma estrutura de sintaxe de parâmetros de programação de sequência de bits dentro de VUI, um ou mais conjuntos de parâmetros HRD. Em um exemplo similar, HRD pode obter a partir de uma estrutura de sintaxe BSP dentro da mensagem SEI, um ou mais conjuntos de parâmetros HRD. Para cada esquema de partição respectivo de um ou mais dos esquemas de partição do conjunto de camada de saída, para cada combinação respectiva em um conjunto de uma ou mais combinações de programação para o esquema de partição respectivo, para cada partição respectiva do esquema de partição respectivo, HRD pode obter, a partir da estrutura de sintaxe BSP, um elemento de sintaxe respectivo (por exemplo, bsp_comb_hrd_idx) especificando um conjunto de parâmetros HRD para a partição respectiva na estrutura de sintaxe BSP e um elemento de sintaxe respectivo especificando uma programação de distribuição (por exemplo, sei_bsp_comb_sched_idx).
[0195] Em exemplos correspondentes, o codificador de vídeo 20 inclui, em uma estrutura de sintaxe BSP dentro de VUI, um ou mais conjuntos de parâmetros HRD. Para cada combinação respectiva em um conjunto de uma ou mais combinações de programação para um esquema de partição respectivo, para cada partição respectiva do esquema de partição respectivo, o codificador de vídeo 20 pode incluir, na estrutura de sintaxe BSP, um elemento de sintaxe respectivo especificando um conjunto de parâmetros HRD para a partição respectiva na estrutura de sintaxe BSP e um elemento de sintaxe respectivo especificando uma programação de distribuição. Em outro exemplo, o codificador de vídeo 20 inclui, em uma estrutura de sintaxe BSP dentro da mensagem SEI, um ou mais conjuntos de parâmetros HRD. Para cada combinação respectiva em um conjunto de uma ou mais combinações de programação para um esquema de partição respectivo, para cada partição respectiva do esquema de partição respectivo, o codificador de vídeo 20 inclui, na estrutura de sintaxe BSP, um elemento de sintaxe respectivo especificando um conjunto de parâmetros HRD para a partição respectiva na estrutura de sintaxe BSP e um elemento de sintaxe respectivo especificando uma programação de distribuição.
[0196] Adicionalmente, em alguns exemplos, o parágrafo C. de MV-HEVC WD8 e SHVC WD6 é modificado como segue: A frase a seguir é removida: A sequência de bits é testada pelo HRD por conformidade como especificado na subcláusula C.1. A frase a seguir é adicionada: A subsequência de bits de cada partição de cada esquema de partição é testada pelo HRD por conformidade como especificado na subcláusula C.1.
[0197] Como indicado acima, um dispositivo de processamento de vídeo pode ser capaz de determinar se um decodificador de vídeo de múltiplas camadas é capaz de decodificar uma sequência de bits com base em uma lista de triplos de perfil, tier e nível especificada para o decodificador de múltiplas camadas. O texto a seguir é um exemplo de como isso pode ser implementado. G.11.3 Capacidades de Decodificadores Os decodificadores em conformidade com um conjunto de triplos de perfil, tier e nível denotado por (P±,T±, Li) com i na faixa de 0 a 1-1, inclusive, onde 1 é um inteiro positivo, deve ser capaz de decodificar todas as subsequências de bits dos conjuntos de camadas de saída com pelo menos um esquema de partição com p partições para as quais todas as condições a seguir se aplicam: - Deixe a variável Partition[j] com j na faixa de 0 a p-1, inclusive, onde p é inferior a ou igual a q, denotar a partição j no esquema de partição. - A união de camadas que são contidas nas partições a partir da Partição[0] para a Partição [p-1], inclusive, representa todas as camadas no conjunto de camada de saída. - Deixe a variável PartitionAssignment[j] com j na faixa de 0 a p-1, inclusive, ser utilizada para indicar a designação de decodificação dos triplos de perfil, tier e nível (PPartitionAssignment[j], TPartitionAssignment[j], LPartitionAssignment[j ]) para Partition[j]. O valor de PartitionAssignment[j] é derivado como segue: - Deixe UnassignedProfileTierLevelTriples ser um conjunto de triplos de perfil, tier e nível com UnassignedProfileTierLevelTriples[i] igual a (Pi, Ti, Li) com i na faixa de 0 a q-1, inclusive. - O seguinte se aplica: com (j = 0; j < p; j++) PartitionAssignment[j] = -1 se(houver um UnassignedProfileTierLevelTriples[x] não vazio de modo que general profile idc de Partition[j] seja igual a Px, ou general profile compatibility flag[Px] é igual a 1 para Partition[j] e general tier flag of Partition[j] representa um tier inferior a ou igual a Tx e general level idc de Partition[j] representa um nível inferior a ou igual a Lx) { PartitionAssignment[j] = x UnassignedProfileTierLevelTriples[x] Vazio } - Não deve haver qualquer registro em PartitionAssignment [j] que seja igual a -1 j na faixa de 0 a p-1, inclusive.
[0198] A figura 5A é um fluxograma ilustrando uma operação ilustrativa de codificador de vídeo 20, de acordo com uma técnica dessa descrição. No exemplo da figura 5A, o codificador de vídeo 20 gera uma sequência de bits que compreende uma representação codificada de dados de vídeo (300). A sequência de bits compreende uma pluralidade de camadas. Como parte da geração de sequência de bits, o codificador de vídeo 20 inclui, na sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição (302). Para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo especifica um conjunto respectivo de partições separadas cuja união forma um conjunto de camadas de saída, onde cada partição respectiva do conjunto respectivo de partições separadas contém uma ou mais camadas, o conjunto de camadas de saída consistindo de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas.
[0199] Em alguns exemplos, como parte da geração de sequência de bits, para cada partição respectiva de cada esquema de partição respectiva de um ou mais esquemas de partição, o codificador de vídeo 20 pode indicar, na sequência de bits, um elemento de sintaxe respectivo indicando um perfil, um tier e um nível para a partição respectiva.
[0200] Adicionalmente, em alguns exemplos, o codificador de vídeo 20 pode incluir, na sequência de bits, elementos de sintaxe indicando uma pluralidade de conjuntos de camadas de saída, a pluralidade de conjuntos de camadas de saída incluindo o primeiro conjunto de camadas de saída. Para cada conjunto de camadas de saída respectivo dentre a pluralidade de conjuntos de camadas de saída, o codificador de vídeo 20 pode incluir, na sequência de bits, os elementos de sintaxe indicando um ou mais esquemas de partição para o conjunto de camadas de saída respectivo.
[0201] Em alguns exemplos, como parte da sinalização de um ou mais elementos de sintaxe indicando um ou mais esquemas de partição, para cada esquema de partição respectivo dentre um ou mais esquemas de partição, para cada partição respectiva do esquema de partição respectivo, para cada camada respectiva do conjunto de camada de saída, o codificador de vídeo 20 pode incluir, na sequência de bits, um elemento de sintaxe indicando se a camada respectiva é incluída na partição respectiva.
[0202] Adicionalmente, no exemplo da figura 5A, o codificador de vídeo 20 envia a sequência de bits (304). Por exemplo, o codificador de vídeo 20 pode enviar a sequência de bits para uma interface de saída, tal como a interface de saída 22. Em alguns exemplos, o codificador de vídeo 20 pode enviar a sequência de bits para um ou mais meios de armazenamento de dados legível por computador para armazenamento.
[0203] A figura 5B é um fluxograma ilustrando uma operação ilustrativa do decodificador de vídeo 30, de acordo com uma técnica dessa descrição. No exemplo da figura 5B, o decodificador de vídeo 30 decodifica uma sequência de bits que compreende uma representação codificada dos dados de vídeo, a sequência de bits compreendendo uma pluralidade de camadas (320). Como parte da decodificação da sequência de bits, o decodificador de vídeo 30 obtém, a partir da sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição (322). Para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo especifica um conjunto respetivo de partições separadas cuja união forma um conjunto de camadas de saída. Cada partição respectiva do conjunto respectivo de partições separadas contém uma ou mais das camadas. O conjunto de camada de saída pode consistir de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas. Em alguns exemplos, como parte da obtenção de um ou mais elementos de sintaxe, para cada esquema de partição respectivo de um ou mais esquemas de partição, para cada partição respectiva do esquema de partição respectivo, para cada camada respectiva do conjunto de camada de saída, o decodificador de vídeo 30 pode obter, a partir da sequência de bits, um elemento de sintaxe indicando se a camada respectiva é incluída na partição respectiva.
[0204] Adicionalmente, como parte da decodificação da sequência de bits, o decodificador de vídeo 30 decodifica cada uma das partições de um esquema de partição particular utilizando núcleos de processamento diferentes em uma pluralidade de núcleos de hardware, o esquema de partição em particular sendo um dentre um ou mais esquemas de partição (324). Em alguns exemplos, como parte da decodificação da sequência de bits, o decodificador de vídeo 30 pode, para cada partição respectiva de cada esquema de partição respectivo de um ou mais esquemas de partição, obter a partir da sequência de bits, um elemento de sintaxe respectivo que indica a informação de perfil, tier e nível (PTL) respectiva para a partição respectiva.
[0205] Em alguns exemplos, o decodificador de vídeo 30 pode determinar, com base na informação PTL para partições dos esquemas de partição, o esquema de partição em particular a partir de um ou mais esquemas de partição. Adicionalmente, em tais exemplos, o decodificador de vídeo 30 pode decodificar cada partição respectiva do esquema de partição em particular utilizando um núcleo respectivo dentre os núcleos de hardware, onde cada núcleo respectivo dentre os núcleos de hardware implementa um decodificador de camada única respectivo. Em alguns exemplos, pelo menos um primeiro núcleo de hardware dentre a pluralidade de núcleos de hardware suporta um perfil, tier ou nível diferente de um segundo núcleo de hardware dentre a pluralidade de núcleos de hardware. Em outros exemplos, pelo menos um primeiro núcleo de hardware dentre a pluralidade de núcleos de hardware e um segundo núcleo de hardware diferente dentre a pluralidade de núcleos de hardware suportam o mesmo conjunto de perfis, tiers e níveis.
[0206] Em alguns exemplos, quando o decodificador de vídeo 30 decodifica a sequência de bits, o decodificador de vídeo 30 obtém, a partir da sequência de bits, elementos de sintaxe indicando uma pluralidade de conjuntos de camada de saída, a pluralidade de conjuntos de camadas de saída incluindo o primeiro conjunto de camadas de saída. Em tais exemplos, para cada conjunto de camadas de saída respectivo dentre a pluralidade de conjuntos de camadas de saída, o decodificador de vídeo 30 pode obter, a partir da sequência de bits, elementos de sintaxe indicando um ou mais esquemas de partição para o conjunto de camadas de saída respectivo.
[0207] A figura 6A é um fluxograma ilustrando uma operação ilustrativa do codificador de vídeo 20, de acordo com uma técnica dessa descrição. No exemplo da figura 6A, o codificador de vídeo 20 gera uma sequência de bits que compreende uma representação codificada de dados de vídeo (350). A sequência de bits compreende uma pluralidade de camadas. Como parte da geração de sequência de bits, o codificador de vídeo 20 inclui, na sequência de bits, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camada de saída (352). No exemplo da figura 6A, o conjunto de camada de saída consiste de todas as camadas da pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas. Adicionalmente, para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo especifica uma divisão do conjunto de camada de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertence a exatamente uma partição no esquema de partição respectivo. Adicionalmente, como parte da geração da sequência de bits, para cada esquema de partição respectivo de um ou mais esquemas de partição, o codificador de vídeo 20 inclui, em uma mensagem SEI na sequência de bits ou VUI em um VPS na sequência de bits, um conjunto respectivo de elementos de sintaxe (por exemplo, elementos de sintaxe bsp_comb_hrd_idx) indicando os conjuntos de parâmetros HRD para o esquema de partição respectivo (354). O codificador de vídeo 20 envia a sequência de bits (356). Por exemplo, o codificador de vídeo 20 pode enviar a sequência de bits para uma interface de saída, tal como a interface de saída 22. Em alguns exemplos, o codificador de vídeo 20 pode enviar a sequência de bits para um ou mais meios de armazenamento de dados legível por computador para armazenamento.
[0208] Em alguns exemplos, como parte da inclusão do conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros HRD para cada um dos um ou mais esquemas de partição, o codificador de vídeo 20 pode incluir em uma estrutura de sintaxe de parâmetros de programação de sequência de bits (BSP) dentro de VUI, um ou mais conjuntos de parâmetros HRD. Adicionalmente, em tais exemplos, para cada combinação respectiva em um conjunto de uma ou mais combinações de programação para o esquema de partição respectivo, para cada partição respectiva do esquema de partição respectivo, o codificador de vídeo 20 pode incluir, na estrutura de sintaxe BSP, um elemento de sintaxe respectivo especificando um conjunto de parâmetros HRD para a partição respectiva na estrutura de sintaxe BSP e um elemento de sintaxe respectivo especificando uma programação de distribuição.
[0209] Em alguns exemplos, como parte da inclusão do conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros HRD para cada um dos um ou mais esquemas de partição, o codificador de vídeo 20 pode incluir, em uma estrutura de sintaxe de parâmetros de programação de sequência de bits (BSP) dentro da mensagem SEI, um ou mais conjuntos de parâmetros HRD. Adicionalmente, em tais exemplos, para cada combinação respectiva em um conjunto de uma ou mais combinações de programação para o esquema de partição respectivo, para cada partição respectiva do esquema de partição respectivo, o codificador de vídeo 20 pode incluir, na estrutura de sintaxe BSP, um elemento de sintaxe respectivo especificando um conjunto de parâmetros HRD para a partição respectiva na estrutura de sintaxe BSP e um elemento de sintaxe respectivo especificando uma programação de distribuição.
[0210] A figura 6B é um fluxograma ilustrando uma operação ilustrativa do decodificador de vídeo 30, de acordo com uma técnica dessa descrição. No exemplo da figura 6B, o decodificador de vídeo 30 obtém, a partir de uma sequência de bits que compreende uma representação codificada de dados de vídeo, um ou mais elementos de sintaxe indicando um ou mais esquemas de partição para um conjunto de camada de saída (370). No exemplo da figura 6B, o conjunto de camada de saída consiste de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas. Para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo especifica uma divisão do conjunto de camadas de saída em uma ou mais partições, onde cada camada no conjunto de camadas de saída pertente a exatamente uma partição no esquema de partição respectivo.
[0211] Adicionalmente, no exemplo da figura 6B, para cada esquema de partição respectivo dentre um ou mais esquemas de partição, o decodificador de vídeo 30 obtém, a partir de uma mensagem SEI na sequência de bits ou VUI em um VPS na sequência de bits, um conjunto respectivo de elementos de sintaxe (por exemplo, elementos de sintaxe bsp_comb_hrd_idx) indicando os conjuntos de parâmetros HRD para o esquema de partição respectivo (372).
[0212] Em alguns exemplos, como parte da obtenção de um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros HRD para o esquema de partição respectivo, o decodificador de vídeo 30 obtém, a partir de uma estrutura de sintaxe de parâmetros de programação de sequência de bits (BSP) dentro de VUI, um ou mais conjuntos de parâmetros HRD. Em tais exemplos, para cada combinação respectiva em um conjunto de uma ou mais combinações de programação para o esquema de partição respectivo, para cada partição respectiva do esquema de partição respectivo, o decodificador de vídeo 30 pode obter, a partir da estrutura de sintaxe BSP, um elemento de sintaxe respetivo especificando um conjunto de parâmetros HRD para a partição respectiva na estrutura de sintaxe BSP e um elemento de sintaxe respectivo especificando uma programação de distribuição.
[0213] Em alguns exemplos, como parte da obtenção de um conjunto respectivo de elementos de sintaxe indicando os conjuntos de parâmetros HRD para o esquema de partição respectivo, o decodificador de vídeo 30 obtém, a partir de uma estrutura de sintaxe de parâmetros de programação de sequência de bits (BSP) dentro da mensagem SEI, um ou mais conjuntos de parâmetros HRD. Em tais exemplos, cada para combinação respectiva em um conjunto de uma ou mais combinações de programação para o esquema de partição respectivo, para cada partição respectiva do esquema de partição respectivo, o decodificador de vídeo 30 pode obter, a partir da estrutura de sintaxe BSP, um elemento de sintaxe respectivo especificando um conjunto de parâmetros HRD ara a partição respectiva na estrutura de sintaxe BSP e um elemento de sintaxe respectivo especificando uma programação de distribuição.
[0214] Para cada partição respectiva do esquema de partição respectivo, o decodificador de vídeo 30 testa, com base nos parâmetros HRD para o esquema de partição respectivo, a partição respectiva para conformidade (374). Em alguns exemplos, como parte do teste das subsequências de bits, o decodificador de vídeo 30 aplica, com base em uma partição selecionada de um esquema de partição em particular de um ou mais esquemas de partição que não contêm todas as camadas do conjunto de camadas de saída, uma operação CPB específica de partição. Em alguns exemplos, o teste de conformidade de uma partição em particular assume que as imagens decodificadas e outras informações necessárias de camadas de referência diretas ou indiretas das camadas na partição, e que não são contidas na partição em particular, estão disponíveis no momento da decodificação das imagens das camadas na partição em particular.
[0215] A figura 7 é um fluxograma ilustrando uma operação ilustrativa de decodificador de vídeo 30, de acordo com uma técnica dessa descrição. No exemplo da figura 7, o decodificador de vídeo 30 determina, com base em uma lista de registros triplos, se o decodificador de vídeo 30 (isso é, um decodificador de vídeo de múltiplas camadas) pode decodificar uma sequência de bits que compreende uma representação codificada de dados de vídeo de múltiplas camadas (400). Em alguns exemplos, o número de registros triplos na lista é inferior a ou igual a um número de decodificadores de camada singular nos dados de vídeo de múltiplas camadas. Em alguns exemplos, um núcleo de hardware singular do decodificador de vídeo 30 pode decodificar múltiplas camadas. Cada registro triplo respectivo na lista de registros triplos indica um perfil, um tier e um nível para um decodificador de camada singular respectivo no decodificador de vídeo de múltiplas camadas. Com base no decodificador de vídeo de múltiplas camadas ser capaz de decodificar a sequência de bits, o decodificador de vídeo 30 decodifica a sequência de bits (402).
[0216] Em alguns exemplos, o decodificador de vídeo 30 obtém, a partir da sequência de bits, um ou mais elementos de sintaxe que indicam um ou mais esquemas de partição. Para cada esquema de partição respectivo de um ou mais esquemas de partição, o esquema de partição respectivo especifica um conjunto respectivo de partições separadas cuja união forma um conjunto de camadas de saída. Cada partição respectiva do conjunto respetivo de partições separadas contém uma ou mais das camadas, o conjunto de camadas de saída consistindo de todas as camadas dentre a pluralidade de camadas ou um subconjunto adequado dentre a pluralidade de camadas. Como parte da determinação de se o decodificador de vídeo de múltiplas camadas pode decodificar a sequência de bits, o decodificador de vídeo 30 pode determinar, com base em uma condição sendo satisfeita, que o decodificador de vídeo de múltiplas camadas pode decodificar a sequência de bits. Em tis exemplos, a condição é satisfeita com base no fato de existir um esquema de partição adequado em um ou mais esquemas de partição. Adicionalmente, em tais exemplos, para cada partição respectiva do esquema de partição adequado, um dos decodificadores de camada singular pode ser designado para decodificação da partição respectiva. Em alguns exemplos, como parte da determinação de que o decodificador de vídeo de múltiplas camadas pode decodificar a sequência de bits, para cada partição respectiva do esquema de partição adequado, com base nas condições a seguir sendo correspondidas, o decodificador de vídeo de múltiplas camadas pode determinar que a partição respectiva pode ser designada para um dos decodificadores de camada singular: um nível associado com o decodificador de camada singular é superior a ou igual a um nível sinalizado para partição respectiva, um tier associado com o decodificador de camada singular é maior do que ou igual a um tier sinalizado para a partição respectiva, e um perfil associado com a partição respectiva é tal que o decodificador de camada singular suporta a decodificação do perfil.
[0217] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento com base em hardware. O meio legível por computador pode incluir meio de armazenamento legível por computador, que corresponde a um meio tangível tal como meio de armazenamento de dados, ou meio de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa forma, o meio legível por computador pode corresponder geralmente a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0218] Por meio de exemplo, e não de limitação, tal meio de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente chamada de meio legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um sítio da rede, servidor, ou outra fonte remota utilizando um cabo coaxial, um cabo de fibra ótica, um par torcido, linha de assinante digital (DSL), ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par torcido, DSL, ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas são incluídos na definição de meio. Deve-se compreender, no entanto, que o meio de armazenamento legível por computador e o meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outra mídia transiente, mas são, em vez disso, direcionados a meio de armazenamento tangível não transiente. Disquete e disco, como utilizados aqui, incluem disco compacto (CD), disco a laser, disco ótico, disco versátil digital (DVD), disquete, e disco Blu-ray, onde disquetes normalmente reproduzem os dados magneticamente, enquanto discos reproduzem os dados oticamente com lasers. As combinações do acima também devem ser incluídas no escopo de meio legível por computador.
[0219] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, circuitos integrados específicos de aplicativo (ASICs), conjuntos lógicos programáveis em campo (FPGAs), ou outro conjunto de circuito lógico discreto ou integrado equivalente. De acordo, o termo "processador", como utilizado aqui pode se referir a qualquer uma dentre a estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de hardware dedicado e/ou módulos de software configurados para codificar e decodificar, ou incorporados em um codec combinado. Além disso, as técnicas devem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0220] As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nessa descrição para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas não exigem necessariamente a realização por unidades de hardware diferentes. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequado.
[0221] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (12)

1. Método para testar a conformidade a um padrão de codificação de vídeo, o método caracterizado pelo fato de que compreende: obter, de um fluxo de bits que compreende uma representação codificada de dados de vídeo, um ou mais elementos de sintaxe que indicam uma série de esquemas de particionamento diferentes para um conjunto de camadas de saída, no qual: o fluxo de bits compreende uma série de camadas, o conjunto de camadas de saída consiste em todas as camadas da série de camadas ou em um subconjunto apropriado da série de camadas; para cada respectivo esquema de particionamento da série de esquemas de particionamento diferentes: o respectivo esquema de particionamento especifica uma divisão do conjunto de camadas de saída em uma ou mais partições, em que cada camada no conjunto de camadas de saída pertence a exatamente uma partição do esquema do respectivo esquema de particionamento; e para cada respectivo esquema de particionamento da série de esquemas de particionamento diferentes: obter, de uma mensagem de Informações de Aperfeiçoamento Suplementares (SEI) no fluxo de bits ou informações sobre capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) no fluxo de bits, um respectivo conjunto de elementos de sintaxe que indicam conjuntos de parâmetros de decodificador de referência hipotético (HRD) para o respectivo esquema de particionamento; e para cada respectiva partição do respectivo esquema de particionamento, testar, com base nos conjuntos de parâmetros HRD para os respectivos esquemas de particionamento, a conformidade da respectiva partição ao padrão de codificação de vídeo.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que testar o particionamento respectivo compreende: com base na partição respectiva não contendo todas as camadas do conjunto de camadas de saída, aplicar uma operação de armazenador de imagens codificadas (CPB) específicas de partição.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que obter o respectivo conjunto de elementos de sintaxe que indicam os conjuntos de parâmetros HRD para o respectivo esquema de particionamento compreende: obter, de um conjunto de uma estrutura de sintaxe de parâmetros de programação de fluxo de bits (BSP) dentro das VUI, um ou mais conjuntos de parâmetros HRD; e para cada respectiva combinação em um conjunto de uma ou mais combinações de programação para o respectivo esquema de particionamento: para cada respectiva partição do respectivo esquema de particionamento: obter da estrutura de sintaxe BSP, um respectivo elemento de sintaxe que especifica um conjunto de parâmetros HRD para respectiva partição na estrutura de sintaxe BSP e um respectivo elemento de sintaxe que especifica um programa de entrega.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de obter o respectivo conjunto de elementos de sintaxe que indicam os conjuntos de parâmetros HRD para o respectivo esquema de particionamento compreende: obter, de uma estrutura de sintaxe de parâmetros de programação de fluxo de bits (BSP) dentro da mensagem SEI, um ou mais conjuntos de parâmetros HRD; e para cada respectiva combinação em um conjunto de combinações de programa para o respectivo esquema de particionamento: para cada respectiva partição do respectivo esquema de particionamento: obter, da estrutura de sintaxe BSP, um respectivo elemento de sintaxe que especifica um conjunto de parâmetros HRD para respectiva partição na estrutura de sintaxe BSP e um respectivo elemento de sintaxe que especifica um programa de entrega.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a conformidade do fluxo de bits é definida com base na conformidade de todas as partições de cada um ou mais esquemas de particionamento.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a verificação da respectiva conformidade de uma partição supõe que imagens decodificadas e outras informações necessárias das camadas de referência direta e indireta das camadas na respectiva partição, e que não estão contidas na respectiva partição, estejam disponíveis no momento da decodificação das imagens das camadas na respectiva partição.
7. Aparelho para testar a conformidade de um fluxo de bits, o aparelho caracterizado pelo fato de que compreende: um dispositivo para obter, de um fluxo de bits que compreende uma representação codificada de dados de vídeo, um ou mais elementos de sintaxe que indicam uma séria de esquemas de particionamento diferentes para um conjunto de camadas de saída, no qual: o fluxo de bits compreende uma série de camadas, o conjunto de camadas de saída consiste em todas as camadas da série de camadas ou em um subconjunto apropriado da série de camadas; para cada respectivo esquema de particionamento da séria de esquemas de particionamento diferentes o respectivo esquema de particionamento especifica uma divisão do conjunto de camadas de saída em uma ou mais partições, em que cada camada do conjunto de camadas de saída pertence a exatamente uma partição no esquema do respectivo esquema de particionamento; e um dispositivo para obter, para cada respectivo esquema de particionamento da séria de esquemas de particionamento diferente, de uma mensagem de Informações de Aperfeiçoamento Suplementares (SEI) no fluxo de bits ou informações sobre capacidade de utilização de vídeo (VUI) em um conjunto de parâmetros de vídeo (VPS) no fluxo de bits, um respectivo conjunto de elementos de sintaxe que indicam conjuntos de parâmetros de decodificador de referência hipotético (HRD) para o respectivo esquema de particionamento; e um dispositivo para testar, com base nos conjuntos de parâmetros HRD, para os respectivos esquemas de particionamento, respectiva partição para a conformidade a um padrão de codificação de vídeo.
8. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo para testar a respectiva partição compreende: um dispositivo para aplicar, com base na respectiva partição não contêm todas as camadas do conjunto de camadas de saída, uma operação de armazenador de imagens codificadas (CPB) específicas de partição.
9. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo para obter o respectivo conjunto de elementos de sintaxe que indicam os conjuntos de parâmetros HRD para o respectivo esquema de particionamento compreende: um dispositivo para obter, de uma estrutura de sintaxe de parâmetros de programação de fluxo de bits (BSP) dentro das VUI, um ou mais conjuntos de parâmetros HRD; e para cada respectiva combinação em um conjunto de uma ou mais combinações de programação para o respectivo esquema de particionamento: para cada respectiva partição do respectivo esquema de particionamento: um dispositivo para obter da estrutura de sintaxe BSP, um respectivo elemento de sintaxe que especifica um conjunto de parâmetros HRD para respectiva partição na estrutura de sintaxe BSP e um respectivo elemento de sintaxe que especifica um programa de entrega.
10. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo para obter o respectivo conjunto de elementos de sintaxe que indicam o conjunto de parâmetros HRD para o respectivo esquema de particionamento compreende: um dispositivo para obter, de uma estrutura de sintaxe de parâmetros de programação de fluxo de bits (BSP) dentro da mensagem SEI, um ou mais conjuntos de parâmetros HRD; e para cada respectiva combinação em um conjunto de combinações de programa para o respectivo esquema de particionamento para cada respectiva partição do respectivo esquema de particionamento um dispositivo para obter, da estrutura de sintaxe BSP, um respectivo elemento de sintaxe que especifica um conjunto de parâmetros HRD para respectiva partição da estrutura de sintaxe BSP e um respectivo elemento de sintaxe que especifica um programa de entrega.
11. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que a conformidade do fluxo de bits é definida com base na conformidade de todas as partições de cada um da série de esquemas de particionamento diferentes.
12. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo para a teste da conformidade da respectiva partição supõe que as imagens decodificadas e outras informações necessárias das camadas de referência direta e indireta das camadas na respectiva partição estejam disponíveis no momento da decodificação das imagens das camadas da respectiva partição.
BR112016025419-8A 2014-05-01 2015-05-01 Método para testar a conformidade a um padrão de codificação de vídeo e aparelho para testar a conformidade de um fluxo de bits BR112016025419B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201461987463P 2014-05-01 2014-05-01
US61/987,463 2014-05-01
US201461993980P 2014-05-15 2014-05-15
US61/993,980 2014-05-15
US14/700,953 US10390087B2 (en) 2014-05-01 2015-04-30 Hypothetical reference decoder parameters for partitioning schemes in video coding
US14/700,953 2015-04-30
PCT/US2015/028795 WO2015168553A1 (en) 2014-05-01 2015-05-01 Method and device for testing conformance of hypothetical reference decoder parameters for partitioning schemes in video coding

Publications (2)

Publication Number Publication Date
BR112016025419A2 BR112016025419A2 (pt) 2017-08-15
BR112016025419B1 true BR112016025419B1 (pt) 2022-12-06

Family

ID=54356175

Family Applications (3)

Application Number Title Priority Date Filing Date
BR112016025107-5A BR112016025107B1 (pt) 2014-05-01 2015-05-01 Dispositivo e método para codificar dados de vídeo e memória legível por computador
BR112016025100-8A BR112016025100B1 (pt) 2014-05-01 2015-05-01 Método e dispositivo para decodificar dados de vídeo de várias camadas, assim como memória legível por computador
BR112016025419-8A BR112016025419B1 (pt) 2014-05-01 2015-05-01 Método para testar a conformidade a um padrão de codificação de vídeo e aparelho para testar a conformidade de um fluxo de bits

Family Applications Before (2)

Application Number Title Priority Date Filing Date
BR112016025107-5A BR112016025107B1 (pt) 2014-05-01 2015-05-01 Dispositivo e método para codificar dados de vídeo e memória legível por computador
BR112016025100-8A BR112016025100B1 (pt) 2014-05-01 2015-05-01 Método e dispositivo para decodificar dados de vídeo de várias camadas, assim como memória legível por computador

Country Status (10)

Country Link
US (3) US9794626B2 (pt)
EP (3) EP3138290B1 (pt)
JP (3) JP6530425B2 (pt)
KR (3) KR102384092B1 (pt)
CN (3) CN106464934B (pt)
BR (3) BR112016025107B1 (pt)
ES (2) ES2686699T3 (pt)
HU (2) HUE040132T2 (pt)
MX (2) MX363421B (pt)
WO (3) WO2015168585A1 (pt)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9794626B2 (en) 2014-05-01 2017-10-17 Qualcomm Incorporated Partitioning schemes in multi-layer video coding
US9699480B2 (en) * 2014-06-13 2017-07-04 Sharp Laboratories Of America, Inc. Level limits
US10264286B2 (en) 2014-06-26 2019-04-16 Qualcomm Incorporated Bitstream conformance constraints in scalable video coding
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization
CN116156163A (zh) * 2016-03-30 2023-05-23 韩国电子通信研究院 使用画面划分信息对视频进行编码和解码的方法和设备
WO2017204109A1 (en) * 2016-05-24 2017-11-30 Sharp Kabushiki Kaisha Systems and methods for signaling scalable video in a media application format
US11166027B2 (en) * 2016-06-10 2021-11-02 Apple Inc. Content adaptation for streaming
KR102390384B1 (ko) * 2017-03-13 2022-04-22 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법
US11049219B2 (en) 2017-06-06 2021-06-29 Gopro, Inc. Methods and apparatus for multi-encoder processing of high resolution content
CN110868594B (zh) 2018-08-28 2023-04-07 北京字节跳动网络技术有限公司 分割方法的冗余移除
US11758164B2 (en) * 2018-10-23 2023-09-12 Tencent America LLC Method and apparatus for video coding
WO2020190715A1 (en) * 2019-03-15 2020-09-24 Beijing Dajia Internet Information Technology Co., Ltd. Signaling of lossless coding in video coding
CN113940084A (zh) * 2019-06-03 2022-01-14 诺基亚技术有限公司 用于视频编码和解码的装置、方法和计算机程序
US11109067B2 (en) * 2019-06-26 2021-08-31 Gopro, Inc. Methods and apparatus for maximizing codec bandwidth in video applications
US11228781B2 (en) 2019-06-26 2022-01-18 Gopro, Inc. Methods and apparatus for maximizing codec bandwidth in video applications
WO2021061489A1 (en) * 2019-09-24 2021-04-01 Futurewei Technologies, Inc. Signaling of dpb parameters for multi-layer video bitstreams
WO2021061390A1 (en) * 2019-09-24 2021-04-01 Futurewei Technologies, Inc. Sei message for single layer ols
BR112022005394A2 (pt) * 2019-09-24 2022-06-21 Huawei Tech Co Ltd Simplificação de dependência de mensagem sei em codificação de vídeo
EP4022930A4 (en) * 2019-09-24 2022-11-02 Huawei Technologies Co., Ltd. OLS FOR SPATIAL AND SNR Scalability
MX2022003765A (es) * 2019-10-02 2022-04-20 Beijing Bytedance Network Tech Co Ltd Sintaxis para la se?alizacion de subimagen en un flujo de bits de video.
BR112022006453A2 (pt) 2019-10-05 2022-09-27 Beijing Bytedance Network Tech Co Ltd Método de processamento de dados de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador e meio de gravação não transitório legível por computador
MX2022004141A (es) * 2019-10-07 2022-04-26 Huawei Tech Co Ltd Evitación de señalización redundante en flujos de bits de video multicapa.
US11265567B2 (en) * 2019-10-08 2022-03-01 Tencent America LLC Method for output layer set signaling in scalable video stream
CN110677699B (zh) * 2019-10-10 2022-03-08 上海依图网络科技有限公司 视频流和/或图片流数据的共享方法、装置及电子设备
US11481863B2 (en) 2019-10-23 2022-10-25 Gopro, Inc. Methods and apparatus for hardware accelerated image processing for spherical projections
WO2021134018A1 (en) 2019-12-26 2021-07-01 Bytedance Inc. Signaling of decoded picture buffer parameters in layered video
KR20220113395A (ko) 2019-12-26 2022-08-12 바이트댄스 아이엔씨 비디오 코딩에서의 프로필 티어 레벨 파라미터 세트
KR20220115958A (ko) * 2019-12-26 2022-08-19 바이트댄스 아이엔씨 코딩된 비트스트림들에서의 비디오 계층들의 시그널링에 대한 제약들
JP2023508680A (ja) 2019-12-27 2023-03-03 バイトダンス インコーポレイテッド ビデオコーディングにおけるサブピクチャシグナリング
WO2021142369A1 (en) 2020-01-09 2021-07-15 Bytedance Inc. Signalling of the wavefront parallel processing
WO2021185311A1 (en) * 2020-03-20 2021-09-23 Mediatek Inc. Method and apparatus for signaling tile and slice partition information in image and video coding
US11228776B1 (en) * 2020-03-27 2022-01-18 Tencent America LLC Method for output layer set mode in multilayered video stream
EP4131969A4 (en) * 2020-03-30 2024-03-13 Lg Electronics Inc IMAGE CODING/DECODING METHOD AND APPARATUS FOR SIGNALING PTL RELATED INFORMATION AND COMPUTER READABLE RECORDING MEDIUM HAVING BIT STREAM STORED THEREIN
US11470357B2 (en) * 2020-04-03 2022-10-11 Sharp Kabushiki Kaisha Systems and methods for signaling decoding capability information in video coding
KR20230023708A (ko) 2020-06-03 2023-02-17 엘지전자 주식회사 영상/비디오 코딩 시스템에서 상위 레벨 신택스를 처리하는 방법 및 장치
KR20230023709A (ko) * 2020-06-03 2023-02-17 엘지전자 주식회사 영상/비디오 코딩 시스템에서 일반 제한 정보를 처리하는 방법 및 장치
CN115943627A (zh) * 2020-06-08 2023-04-07 字节跳动有限公司 对编解码视频图片中条带计数的约束
US11962936B2 (en) 2020-09-29 2024-04-16 Lemon Inc. Syntax for dependent random access point indication in video bitstreams
CN118077200A (zh) * 2021-10-08 2024-05-24 字节跳动有限公司 用于视频处理的方法、装置和介质
WO2024049269A1 (ko) * 2022-09-03 2024-03-07 엘지전자 주식회사 Hrd 파라미터를 시그널링하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 컴퓨터 판독 가능한 기록 매체

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8615038B2 (en) * 2004-12-06 2013-12-24 Nokia Corporation Video coding, decoding and hypothetical reference decoder
US20070230564A1 (en) * 2006-03-29 2007-10-04 Qualcomm Incorporated Video processing with scalability
SI3264780T1 (sl) 2007-04-18 2020-08-31 Dolby International Ab Kodirni sistemi, pri katerih se uporablja dodatni niz sekvenčnih parametrov za skalabilno kodiranje videa ali večpogledno kodiranje
JP5131101B2 (ja) * 2008-09-09 2013-01-30 富士通株式会社 動画像編集装置および動画像編集プログラム
JP5332773B2 (ja) * 2009-03-18 2013-11-06 ソニー株式会社 画像処理装置および方法
US8341168B1 (en) * 2009-06-04 2012-12-25 Workday, Inc. System for displaying hierarchical data
WO2011084913A2 (en) 2010-01-06 2011-07-14 Dolby Laboratories Licensing Corporation Complexity-adaptive scalable decoding and streaming for multi-layered video systems
CN106101719B (zh) 2010-01-12 2020-06-30 Lg电子株式会社 视频信号的处理方法和设备
CN101795344B (zh) 2010-03-02 2013-03-27 北京大学 数字全息图像压缩、解码方法及系统、传输方法及系统
KR101829515B1 (ko) * 2011-01-13 2018-02-14 닛본 덴끼 가부시끼가이샤 영상 복호 장치, 영상 복호 방법 및 기록 매체
WO2012096146A1 (ja) * 2011-01-13 2012-07-19 日本電気株式会社 映像符号化装置、映像復号装置、映像符号化方法、映像復号方法及びプログラム
EP3021587A3 (en) 2011-04-15 2016-12-28 SK Planet Co., Ltd. High speed scalable video coding device and method using multi-track video
KR20130058584A (ko) * 2011-11-25 2013-06-04 삼성전자주식회사 복호화기의 버퍼 관리를 위한 영상 부호화 방법 및 장치, 그 영상 복호화 방법 및 장치
CN102769747A (zh) 2012-06-29 2012-11-07 中山大学 一种基于并行迭代的分级分布式视频编解码方法及系统
US9351005B2 (en) * 2012-09-24 2016-05-24 Qualcomm Incorporated Bitstream conformance test in video coding
US9161039B2 (en) * 2012-09-24 2015-10-13 Qualcomm Incorporated Bitstream properties in video coding
EP2934011A4 (en) * 2012-12-11 2016-05-11 Sony Corp ENCLOSURE DEVICE AND ENCLOSURE METHOD AND DECOMPOSITION DEVICE AND DECOMPOSITION METHOD
EP2941891B1 (en) * 2013-01-04 2020-09-16 GE Video Compression, LLC Efficient scalable coding concept
JP6360154B2 (ja) 2013-04-05 2018-07-18 ヴィド スケール インコーポレイテッド 多重レイヤビデオコーディングに対するインターレイヤ基準画像エンハンスメント
US20160065980A1 (en) 2013-04-05 2016-03-03 Samsung Electronics Co., Ltd. Video stream encoding method according to a layer identifier expansion and an apparatus thereof, and a video stream decoding method according to a layer identifier expansion and an apparatus thereof
US20140301463A1 (en) 2013-04-05 2014-10-09 Nokia Corporation Method and apparatus for video coding and decoding
US9532067B2 (en) 2013-04-05 2016-12-27 Sharp Kabushiki Kaisha Decoding of inter-layer reference picture set and reference picture list construction
CN117956143A (zh) 2013-04-08 2024-04-30 Ge视频压缩有限责任公司 多视图解码器
CN103338369A (zh) 2013-06-03 2013-10-02 江苏省电力公司信息通信分公司 基于avs和神经网络的立体视频编码方法
WO2015015058A1 (en) * 2013-07-31 2015-02-05 Nokia Corporation Method and apparatus for video coding and decoding
US10554990B2 (en) 2013-10-14 2020-02-04 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
US9712837B2 (en) 2014-03-17 2017-07-18 Qualcomm Incorporated Level definitions for multi-layer video codecs
US9794626B2 (en) 2014-05-01 2017-10-17 Qualcomm Incorporated Partitioning schemes in multi-layer video coding

Also Published As

Publication number Publication date
BR112016025419A2 (pt) 2017-08-15
CN106464935A (zh) 2017-02-22
JP6858562B2 (ja) 2021-04-14
JP6464193B2 (ja) 2019-02-06
MX364115B (es) 2019-04-12
EP3138291A1 (en) 2017-03-08
BR112016025107A2 (pt) 2017-08-15
MX2016013943A (es) 2017-01-09
ES2686699T3 (es) 2018-10-19
KR20160149217A (ko) 2016-12-27
KR102384092B1 (ko) 2022-04-06
MX363421B (es) 2019-03-22
KR102078896B1 (ko) 2020-02-19
ES2711535T3 (es) 2019-05-06
HUE041371T2 (hu) 2019-05-28
CN106464934A (zh) 2017-02-22
BR112016025100B1 (pt) 2022-12-06
EP3138290B1 (en) 2018-06-13
US10390087B2 (en) 2019-08-20
EP3138292A1 (en) 2017-03-08
HUE040132T2 (hu) 2019-02-28
KR20170019344A (ko) 2017-02-21
BR112016025100A2 (pt) 2017-08-15
US9712871B2 (en) 2017-07-18
CN106464935B (zh) 2019-06-21
EP3138290A1 (en) 2017-03-08
JP6530425B2 (ja) 2019-06-12
JP2017517195A (ja) 2017-06-22
WO2015168553A1 (en) 2015-11-05
KR101984368B1 (ko) 2019-05-30
JP2017517194A (ja) 2017-06-22
US20150319449A1 (en) 2015-11-05
MX2016013623A (es) 2017-02-28
CN106464936A (zh) 2017-02-22
US20150319462A1 (en) 2015-11-05
KR20170018819A (ko) 2017-02-20
EP3138291B1 (en) 2018-11-14
BR112016025107B1 (pt) 2022-12-06
JP2017517196A (ja) 2017-06-22
US20150319448A1 (en) 2015-11-05
CN106464934B (zh) 2019-06-14
US9794626B2 (en) 2017-10-17
CN106464936B (zh) 2019-06-14
WO2015168591A1 (en) 2015-11-05
EP3138292B1 (en) 2019-09-18
WO2015168585A1 (en) 2015-11-05

Similar Documents

Publication Publication Date Title
BR112016025419B1 (pt) Método para testar a conformidade a um padrão de codificação de vídeo e aparelho para testar a conformidade de um fluxo de bits
ES2727814T3 (es) Estructura sintáctica de parámetros de descodificador hipotético de referencia
JP6092397B2 (ja) ビデオコーディングにおけるビットストリーム適合試験
BR112015015802B1 (pt) Mensagens sei não aninhadas em codificação de vídeo
BR112016008374B1 (pt) Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas
BR112018007529B1 (pt) Alinhamento de grupo de amostra de ponto de operação em formato de arquivo de fluxos de bits de multicamada
BR112015007502B1 (pt) Método e dispositivo de processamento de dados de vídeo, método e dispositivo para gerar um arquivo que possui um formato para conteúdo hevc contendo dados de vídeo codificado, assim como meio de armazenamento não transitório legível por computador
WO2017066075A1 (en) Support of random access and switching of layers and sub-layers in multi-layer video files
JP2017525276A (ja) ビデオコーディング拡張の搬送のためのトランスポートストリーム
BR112016030188B1 (pt) Avanços de conformidade e inoperabilidade em codificação de vídeo de múltiplas camadas
BR112017007798B1 (pt) Design de descritor hrd e modelo de buffer de fluxo de dados para transporte de extensões hevc
BR112016015903B1 (pt) Método e dispositivo 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]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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