BR112016021489B1 - Método e equipamento para codificação de informação de vídeo, e,memória legível por computador - Google Patents

Método e equipamento para codificação de informação de vídeo, e,memória legível por computador Download PDF

Info

Publication number
BR112016021489B1
BR112016021489B1 BR112016021489-7A BR112016021489A BR112016021489B1 BR 112016021489 B1 BR112016021489 B1 BR 112016021489B1 BR 112016021489 A BR112016021489 A BR 112016021489A BR 112016021489 B1 BR112016021489 B1 BR 112016021489B1
Authority
BR
Brazil
Prior art keywords
image
images
layer
video
dpb
Prior art date
Application number
BR112016021489-7A
Other languages
English (en)
Other versions
BR112016021489A2 (pt
BR112016021489A8 (pt
Inventor
Adarsh Krishnan Ramasubramonian
Ye-Kui Wang
Fnu HENDRY
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 BR112016021489A2 publication Critical patent/BR112016021489A2/pt
Publication of BR112016021489A8 publication Critical patent/BR112016021489A8/pt
Publication of BR112016021489B1 publication Critical patent/BR112016021489B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • 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/18Methods 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 set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • 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/46Embedding additional information in the video signal during the compression process
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Landscapes

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

Abstract

flushing de imagem e inferência de parâmetro de buffer de imagem decodificada para fluxos de bit de multicamadas um aparelho de acordo com certos aspectos inclui uma memória e um processador configurado para: em resposta à determinação de que uma imagem de ponto de acesso aleatório intra de camada de referência (irap) inicia uma nova sequência de vídeo codificada (cvs) na au atual: determinar se a imagem de irap de camada de referência ativa um novo conjunto de parâmetros de vídeo (vps) ou define um limite de predição na au atual; em resposta à determinação de que a imagem irap de camada de referência ativa um novo vps ou define um limite de predição na au atual, remover imagens no buffer de imagem decodificada (dpb) associado a cada de uma pluralidade de camadas; e em resposta à determinação de que a imagem de irap de camada de referência não ativa um novo vps e não define um limite de predição na au atual, remover somente imagens no dpb associado à camada de referência.

Description

CAMPO TÉCNICO
[0001] A presente revelação refere-se ao campo de codificação e compressão de vídeo, incluindo tanto codificação de vídeo de camada única como codificação de vídeo de multicamada. Codificação de vídeo de multicamada pode incluir codificação de vídeo escalonável, codificação de vídeo de multivistas, codificação de vídeo tridimensional (3D), etc.
ANTECEDENTES
[0002] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de broadcast direto digital, sistemas de broadcast sem fio, assistentes pessoais digitais (PDAs), computadores de mesa ou laptop, câmeras digitais, dispositivos de gravação digital, tocadores de mídia digital, dispositivos de jogos de vídeo, consoles de videogame, telefones de rádio satélite ou celulares, dispositivos de teleconferência de vídeo, e similares. Dispositivos de vídeo digital implementam técnicas de compressão de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, Codificação avançada de vídeo (AVC), padrão de Codificação de vídeo de eficiência elevada (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digitais mais eficientemente por implementar tais técnicas de codificação de vídeo.
[0003] Técnicas de codificação de video incluem predição espacial (intra-quadro) e/ou temporal (inter-quadro) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo, uma porção de um quadro de vídeo, etc.) pode ser dividida em blocos de vídeo, que podem ser também mencionados como blocos de árvore, unidades de codificação (CUs) e/ou nós de codificação. Blocos de vídeo em uma fatia intra-codificada (I) de um quadro são codificados usando predição espacial com relação a amostras de referência em blocos vizinhos no mesmo quadro. Blocos de vídeo em uma fatia inter-codificada (P ou B) de um quadro podem usar predição espacial com relação a amostras de referência em blocos vizinhos no mesmo quadro ou predição temporal com relação a amostras de referência em outros quadros de referência. Imagens podem ser referidas como quadros e imagens de referência podem ser referidos como quadros de referência.
[0004] Predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco preditivo, e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residual, que então podem ser quantizados. Os coeficientes de transformada quantizada, inicialmente dispostos em um conjunto bidimensional, podem ser varridos para produzir um vetor unidimensional de coeficientes de transformada, e codificação por entropia pode ser aplicada para obter ainda mais compressão.
SUMÁRIO
[0005] Codificação de vídeo escalonável se refere à codificação de vídeo na qual uma camada de base (BL), às vezes mencionada como uma camada de referência (RL), e uma ou mais camadas de aperfeiçoamento escalonáveis (ELs) são usadas. Em codificação de vídeo escalonável, a camada de base pode carregar dados de vídeo com um nível de qualidade de base. Uma ou mais camadas de aperfeiçoamento podem carregar dados de vídeo adicionais para suportar, por exemplo, níveis espacial, temporal e/ou de sinal para ruído (SNR) mais elevados. Camadas de aperfeiçoamento podem ser definidas em relação a uma camada anteriormente codificada. Por exemplo, uma camada inferior pode servir como uma BL, enquanto uma camada superior pode servir como uma EL. Camadas médias podem servir como ELs ou RLs, ou ambas. Por exemplo, uma camada média (por exemplo, uma camada que não é a camada mais baixa nem a camada mais elevada) pode ser uma EL para as camadas abaixo da camada média, como a camada base ou quaisquer camadas de aperfeiçoamento intermediárias, e ao mesmo tempo servem como uma RL para uma ou mais camadas de aperfeiçoamento acima da camada média. Similarmente, na Multivista ou extensão 3D do padrão HEVC, pode haver múltiplas vistas, e informações de uma vista podem ser utilizadas para codificar (por exemplo, codificar ou decodificar) as informações de outra vista (por exemplo, estimação de movimento, predição de vetor de movimento e/ou outras redundâncias).
[0006] Um aparelho para codificação de informação de vídeo, de acordo com certos aspectos inclui uma memória e um processador. A unidade de memória é configurada para armazenar informação de vídeo associada a uma pluralidade de camadas incluindo uma camada de referência, a memória compreendendo um buffer de imagem decodificada (DPB) associado a cada camada. O processador é configurado para obter, a partir da camada de referência, uma imagem de ponto de acesso intra aleatório (IRAP) em uma unidade de acesso atual (AU) a ser codificada. O processador é adicionalmente configurado para: em resposta à determinação de que a imagem IRAP de camada de referência começa uma nova sequência de vídeo codificado (CVS) na AU atual: determinar se a imagem IRAP de camada de referência ativa um novo conjunto de parâmetros de vídeo (VPS) ou define um limite de predição na AU atual; em resposta à determinação de que a imagem IRAP de camada de referência ativa um novo VPS ou determinação de que a imagem IRAP de camada de referência define um limite de predição na AU atual, remover imagens no DPB associado a cada da pluralidade de camadas; e em resposta à determinação de que a imagem IRAP de camada de referência não ativa um novo VPS e determinação de que a imagem IRAP de camada de referência não define um limite de predição na AU atual, remover apenas imagens no DPB associado à camada de referência.
[0007] Os sistemas, métodos e dispositivos da presente revelação têm cada, vários aspectos inovadores, nenhum único dos quais é exclusivamente responsável pelos atributos desejáveis revelados aqui. Os detalhes de um ou mais exemplos são expostos nos desenhos em anexo e descrição baixo, que não pretendem limitar o escopo total dos conceitos inventivos descritos aqui. Outras características, objetivos e vantagens serão evidentes a partir da descrição e desenhos, e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0008] A figura 1A é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo de exemplo que pode utilizar técnicas de acordo com aspectos descritos nessa revelação.
[0009] A figura 1B é um diagrama de blocos ilustrando outro sistema de codificação e decodificação de vídeo de exemplo que pode executar técnicas de acordo com aspectos descritos nessa revelação.
[0010] A figura 2A é um diagrama de blocos ilustrando um exemplo de um codificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nessa revelação.
[0011] A figura 2B é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nessa revelação.
[0012] A figura 3A é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas de acordo com aspectos descritas nessa revelação.
[0013] A figura 3B é um diagrama a de blocos ilustrando um exemplo de um decodificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nessa revelação.
[0014] A figura 4 é um diagrama de blocos ilustrando uma configuração de exemplo de imagens em camadas diferentes, de acordo com uma modalidade da presente revelação.
[0015] A figura 5 é um fluxograma ilustrando um método de codificar informações de vídeo, de acordo com uma modalidade da presente revelação.
DESCRIÇÃO DETALHADA
[0016] Em geral, a presente revelação refere- se à codificação de camada única bem como predição inter- camadas para codificação de vídeo escalonável no contexto de codecs de vídeo avançados, como HEVC (Codificação de vídeo de eficiência elevada). Mais especificamente, a presente revelação refere-se a sistemas e métodos para desempenho aperfeiçoado de predição inter-camadas em extensão de codificação de vídeo escalonável de HEVC, que pode ser mencionado como SHVC.
[0017] Na descrição abaixo, técnicas de H.264/Codificação de vídeo avançada (AVC) relacionadas a certas modalidades são descritas; o padrão HEVC e técnicas relacionadas são também discutidos. Embora certas modalidades sejam descritas aqui no contexto dos padrões HEVC e/ou H.264, uma pessoa com conhecimentos comuns na técnica pode reconhecer que sistemas e métodos revelados aqui podem ser aplicáveis a qualquer padrão de codificação de vídeo adequado. Por exemplo, modalidades reveladas aqui podem ser aplicáveis a um ou mais dos seguintes padrões: International Telecommunication Union (ITU) Telecommunication Standardization sector (ITU-T) H.261, International Organization for Standardization (ISO) e International Electrotechnical Commission (IEC) (ISO/IEC) Moving Picture Experts Group (MPEG 1 (MPEG-1) Visual, ITU-T H.262 ou ISO/IEC MPEG-2 visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de vídeo escalonável (SVC) e Codificação de vídeo de múltiplas vistas (MVC).
[0018] HEVC segue em geral a estrutura de padrões de codificação de vídeo anteriores em muitos aspectos. A unidade de predição em HEVC é diferente das unidades de predição (por exemplo, macrobloco) em certos padrões de codificação de vídeo anteriores. Na realidade, o conceito de um macrobloco não existe em HEVC como entendido em certos padrões de codificação de vídeo anteriores. Um macrobloco é substituído por uma estrutura hierárquica com base em um esquema de quadtree, que pode fornecer elevada flexibilidade, entre outros benefícios possíveis. Por exemplo, no esquema HEVC, três tipos de blocos, Unidade de Codificação (CU), Unidade de predição (PU), e Unidade de transformada (TU) são definidos. CU pode se referir à unidade básica de divisão de região. CU pode ser considerada análoga ao conceito de macrobloco, porém HEVC não limita o tamanho máximo de CUs e pode permitir divisão recursiva em quatro CUs de tamanho igual para melhorar a adaptabilidade de conteúdo. PU pode ser considerada a unidade básica de inter/intra predição, e uma única PU pode conter múltiplas divisões de formato arbitrário para codificar efetivamente padrões de imagem irregulares. TU pode ser considerada a unidade básica de transformada. TU pode ser definida independentemente da PU; entretanto, o tamanho de uma TU pode ser limitado ao tamanho da CU ao qual a TU pertence. Essa separação da estrutura de bloco em três conceitos diferentes pode permitir que cada unidade seja otimizada de acordo com o papel respectivo da unidade, que pode resultar em eficiência de codificação aperfeiçoada.
[0019] Para fins de ilustração somente, certas modalidades reveladas aqui são descritas com exemplos incluindo somente duas camadas (por exemplo, uma camada inferior como a camada base, e uma camada mais elevada como a camada de aperfeiçoamento) de dados de vídeo. Uma “camada” de dados de vídeo pode se referir em geral a uma sequência de imagens tendo pelo menos uma característica comum, como uma vista, uma taxa de quadro, uma resolução ou similar. Por exemplo, uma camada pode incluir dados de vídeo associados a uma vista específica (por exemplo, perspectiva) de dados de vídeo de multivistas. Como outro exemplo, uma camada pode incluir dados de vídeo associados a uma camada específica de dados de vídeo escalonáveis. Desse modo, essa revelação pode se referir de modo intercambiável a uma camada e uma vista de dados de vídeo. Isto é, uma vista de dados de vídeo pode ser mencionada como uma camada de dados de vídeo, e uma camada de dados de vídeo pode ser mencionada como uma vista de dados de vídeo. Além disso, um codec de múltiplas camadas (também mencionado como um codificador de vídeo de múltiplas camadas ou decodificador-codificador de multicamada) pode se referir conjuntamente a um codec de multivistas ou um codec escalonável (por exemplo, um codec configurado para codificar e/ou decodificar dados de vídeo usando MV-HEVC, 3D-HEVC, SHVC, ou outra técnica de codificação de multicamada). Codificação de vídeo e decodificação de vídeo podem ambas ser referidas em geral como codificação de vídeo. Deve ser entendido que tais exemplos podem ser aplicáveis a configurações incluindo múltiplas camadas de base e/ou aperfeiçoamento. Além disso, para facilidade de explicação, a seguinte revelação inclui os termos “quadros” ou “blocos” com referência a certas modalidades. Entretanto, esses termos não pretendem ser limitadores. Por exemplo, as técnicas descritas abaixo podem ser usadas com quaisquer unidades de vídeo adequadas, como blocos (por exemplo, CU, PU, TU, macroblocos, etc.), fatias, quadros, etc.
PADRÕES DE CODIFICAÇÃO DE VÍDEO
[0020] Uma imagem digital, como uma imagem de vídeo, uma imagem de TV, uma imagem fixa ou uma imagem gerada por um gravador de vídeo ou um computador, pode consistir em pixels ou amostras dispostas em linhas horizontais e verticais. O número de pixels em uma única imagem é tipicamente em dezenas de milhares. Cada pixel contém tipicamente informações de luminância e crominância. Sem compressão, a quantidade pura de informações a ser transferida de um codificador de imagem para um decodificador de imagem tornaria impossível a transmissão de imagem em tempo real. Para reduzir a quantidade de informação a ser transmitida, um número de métodos de compressão diferentes, como padrões JPEG, MPEG e H.263, foi desenvolvido.
[0021] Padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões SVC e MVC.
[0022] Além disso, um novo padrão de codificação de vídeo, a saber Codificação de vídeo de eficiência elevada (HEVC), está sendo desenvolvido pelo Joint Collaboration Team on Video coding (JCT-VC) de ITU-T Video coding experts group (VCEG) e ISO/IEC Motion picture experts group (MPEG). A citação completa para a Minuta HEVC 10 é o documento JCTVC-L1003, Bross e outros, “High Efficiency vídeo coding (HEVC) text specification draft 10,” Joint Collaborative Team on Video coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12a reunião: Genebra, Suíça, 14 de janeiro de 2013 a 23 de janeiro de 2013. A extensão de multivista para HEVC, a saber, MV-HEVC, e a extensão escalonável para HEVC, denominada SHVC, estão sendo também desenvolvidas pela JCT-3V (ITU-T/ISO/IEC Joint Collaborative team on 3D vídeo coding Extension Development) e JCT-VC, respectivamente.
VISÃO GERAL
[0023] Imagens de ponto de acesso intra aleatório (IRAP) podem fornecer pontos de acesso aleatórios para decodificar um fluxo de bits. Um decodificador pode começar a decodificação de um fluxo de bits por decodificar uma imagem IRAP sem ter de decodificar imagens que precedem a imagem IRAP. No momento de decodificação de uma imagem IRAP, o buffer de imagem decodificada (DPB) pode ter um número de imagens decodificadas no buffer. Se a transmissão de imagens existentes no DPB afetasse o desempenho do decodificador (por exemplo, imagens em demasia existem no DPB para o decodificador transmitir, a transmissão de todas as imagens poderia resultar em taxa desigual de quadro, etc.), pode ser desejável remover tais imagens existentes sem transmitir as mesmas (por exemplo, flush as imagens existentes).
[0024] Em desenvolvimentos de versões anteriores, e/ou discussões de SHVC e MV-HEVC (por exemplo, Minuta de trabalho 7 de MV-HEVC e também a ser refletida em Minutas de trabalho de SHVC subsequente à Minuta de trabalho 5), o processo de flushing é invocado para cada camada quando múltiplas camadas ou múltiplas vistas existem em um fluxo de bits. Durante esse processo, as imagens podem ser transmitidas com base no valor de NoOutputofPriorPicsFlag derivado para a camada respectiva. A variável NoOutputofPriorPicsFlag pode indicar, ao decodificar uma imagem IRAP, se as imagens no DPB devem ser transmitidas antes de serem removidas do DPB. Se uma unidade de acesso (AU) não tiver imagens que pertencem a uma camada na lista de camadas a serem decodificadas, então as imagens que precedem a unidade de acesso em ordem de decodificação não seriam flushed embora sejam marcadas como “não usadas para referência.” Essas imagens lentas podem terminar usando a memória DPB e podem resultar em transbordamento de buffer ao decodificar imagens subsequentes.
[0025] Para tratar desses e de outros desafios, as técnicas de acordo com certos aspectos podem fornecer vários modos e/ou modalidades para flushing adequadamente imagens nos DPBs de camadas diferentes mesmo quando uma AU pode não incluir uma imagem em uma camada específica. Por exemplo, o flushing de DPBs para todas as camadas pode ser disparado com base em se a imagem de camada base atende a certas condições. Por disparar o flushing de todas as camadas com base na imagem de camada de base, as técnicas podem invocar flushing para todas as camadas em uma AU mesmo se uma camada específica naquela AU não tiver uma imagem.
[0026] Além disso, em versões anteriores de SHVC e MV-HEVC (por exemplo, Minuta de trabalho 5 de SHVC e Minuta de trabalho 7 de MV-HEVC), qualquer fluxo de bits HEVC ou qualquer fluxo de bits SHVC/MV-HEVC estaria em conformidade com um ou mais perfis no Anexo A e um ou mais perfis no Anexo G ou H. Por exemplo, um fluxo de bits HEVC se conformaria a um perfil no Anexo A. Um fluxo de bits SHVC/MV-HEVC se conformaria a um perfil no Anexo G ou H; a camada de base em um fluxo de bits SHVC/MV-HEVC também se conforma em geral ao Anexo A para compatibilidade para trás. Além disso, mesmo o próprio fluxo de bits SHVC/MV- HEVC pode se conformar a um perfil no Anexo A. Por conseguinte, quando fluxos de bits são decodificados usando esses Anexos no padrão, os parâmetros DPB a serem usados são ambíguos ou indisponíveis. Além disso, os parâmetros DPB sinalizados na extensão VPS não são nem sinalizados nem inferidos para o 0° conjunto de camadas de saída, onde o conjunto de camadas compreende apenas a camada de base e somente as imagens de camada de base são transmitidas.
[0027] Para tratar desses e de outros desafios, as técnicas de acordo com certos aspectos podem definir vários atributos no SPS ativo da camada de base como sendo iguais aos valores máximos correspondentes permitidos para os vários atributos. Por exemplo, o SPS pode incluir vários parâmetros de DPB como MaxLayerDecPicBuffMinus1, MaxNumReorderPics, MaxLatencyIncreasePlus1, MaxLatencyPictures e MaxDecPicBufferingMinus1. Ou os valores máximos para vários atributos são definidos iguais aos valores dos vários atributos do SPS ativo. Por definir os valores dos vários atributos do SPS ativo iguais aos valores máximos permitidos para os vários atributos, as técnicas podem reduzir ou eliminar a ambiguidade em ou indisponibilidade de parâmetros DPB a serem aplicados.
SISTEMA DE CODIFICAÇÃO DE VIDEO
[0028] Vários aspectos dos sistemas, aparelhos e métodos novos são descritos mais completamente a seguir com referência aos desenhos em anexo. Essa revelação pode, entretanto, ser incorporada em muitas formas diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apesentada em toda essa revelação. Ao invés, esses aspectos são fornecidos de modo que essa revelação seja total e completa, e passe totalmente o escopo da revelação para aqueles versados na técnica. Com base nos ensinamentos da presente invenção uma pessoa versada na técnica deve reconhecer que o escopo da revelação pretende cobrir qualquer aspecto dos sistemas, aparelhos e métodos novos revelados aqui, quer implementados independentemente de ou combinados com qualquer outro aspecto da presente revelação. Por exemplo, um aparelho pode ser implementado ou um método pode ser posto em prática usando qualquer número dos aspectos expostos aqui. Além disso, o escopo da presente revelação pretende cobrir tal aparelho ou método que é posto em prática usando outra estrutura, funcionalidade ou estrutura e funcionalidade além de ou diferente dos vários aspectos da presente revelação exposta aqui. Deve ser entendido que qualquer aspecto revelado aqui pode ser incorporado por um ou mais elementos de uma reivindicação.
[0029] Embora aspectos específicos sejam descritos aqui, muitas variações e permutações desses aspectos estão compreendidas no escopo da revelação. Embora alguns benefícios e vantagens dos aspectos preferidos sejam mencionados, o escopo da revelação não pretende ser limitado a benefícios, usos ou objetivos específicos. Ao invés, aspectos da revelação pretendem ser amplamente aplicáveis a tecnologias sem fio diferentes, configurações de sistema, redes, e protocolos de transmissão, alguns dos quais são ilustrados como exemplo nas figuras e na seguinte descrição dos aspectos preferidos. A descrição detalhada e desenhos são meramente ilustrativos da revelação ao invés de limitadora, o escopo da revelação sendo definido pelas reivindicações apensas e equivalentes das mesmas.
[0030] Os desenhos em anexo ilustram exemplos. Elementos indicados pelos números de referência nos desenhos em anexo correspondem a elementos indicados por números de referência similares na descrição a seguir. Nessa revelação, elementos tendo nomes que começam com palavras ordinais (por exemplo, “primeiro”, “segundo”, “terceiro” e etc.) não sugerem necessariamente que os elementos têm uma ordem específica. Ao invés, tais palavras ordinais são meramente usadas para se referir a elementos diferentes de um tipo igual ou similar.
[0031] A figura 1 é um diagrama de blocos ilustrando um sistema de codificação de vídeo de exemplo, 10, que pode utilizar técnicas de acordo com aspectos descritos nessa revelação. Como usado aqui, o termo “codificador de vídeo” se refere genericamente tanto a codificadores de vídeo como decodificadores de vídeo. Nessa revelaçã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. Além de codificadores de vídeo e decodificadores de vídeo, os aspectos descritos no presente pedido podem ser estendidos a outros dispositivos relacionados como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e recodificar outro fluxo de bits) e middleboxes (por exemplo, dispositivos que podem modificar, transformar e/ou de outro modo manipular um fluxo de bits).
[0032] Como mostrado na figura 1A, o sistema de codificação de vídeo 10 inclui um dispositivo de fonte 12 que gera dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo de destino 14. No exemplo da figura 1A, o dispositivo de fonte 12 e o dispositivo de destino 14 constituem dispositivos separados. É observado, entretanto, que os dispositivos de fonte e destino 12, 14 podem estar em ou parte do mesmo dispositivo, como mostrado no exemplo da figura 1B.
[0033] Com referência novamente à figura 1A, o dispositivo de fonte 12 e dispositivo de destino 14 podem compreender respectivamente qualquer de uma ampla gama de dispositivos incluindo computadores de mesa, dispositivos de computação móveis, computadores notebook (por exemplo, laptop), computadores tablet, conversores de sinais de frequência, aparelhos telefônicos como os denominados “smart” phones, denominados “smart” pads, televisões, câmeras, dispositivos de exibição, tocadores de mídia digital, consoles de jogos de vídeo, dispositivos de streaming de vídeo, ou similares. Em alguns casos, o dispositivo de fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0034] O dispositivo de destino 14 pode receber, através do link 16, os dados de vídeo codificados a serem decodificados. O link 16 pode compreender qualquer tipo de mídia ou dispositivo capaz de mover os dados de vídeo codificados a partir do dispositivo de fonte 12 para o dispositivo de destino 14. No exemplo da figura 1A, o link 16 pode compreender uma mídia de comunicação que permite que o dispositivo de fonte 12 transmita dados de vídeo codificados para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. A mídia de comunicação pode compreender qualquer mídia de comunicação sem fio ou cabeada, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão física. A mídia de comunicação pode fazer parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área remota, ou uma rede global como a Internet. A mídia de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que pode ser útil para facilitar a comunicação a partir do dispositivo de fonte 12 para o dispositivo de destino 14.
[0035] Alternativamente, dados codificados podem ser transmitidos de uma interface de saída 22 para um dispositivo de armazenagem opcional 31. Similarmente, dados codificados podem ser acessados a partir do dispositivo de armazenagem 31 por uma interface de entrada 28, por exemplo, do dispositivo de destino 14. O dispositivo de armazenagem 31 pode incluir qualquer de uma variedade de mídia de armazenagem de dados distribuída ou localmente acessada como uma unidade rígida, memória flash, memória volátil ou não volátil, ou qualquer outra mídia de armazenagem digital adequada para armazenagem de dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenagem 31 pode corresponder a um servidor de arquivo ou outro dispositivo de armazenagem intermediário que pode conter vídeo codificado gerados pelo dispositivo de fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenagem 31 através de streaming ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir os dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo de exemplo incluem um servidor de rede (por exemplo, para um website), um servidor de protocolo de transferência de arquivo (FTP), dispositivos de armazenagem ligados em rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão da Internet. Essa pode incluir um canal sem fio (por exemplo, uma conexão de rede de área local sem fio (WLAN)), uma conexão cabeada (por exemplo, uma linha de assinante digital (DSL), um modem de cabo, etc.), ou uma combinação de ambos que é adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenagem 31 pode ser uma transmissão streaming, uma transmissão download, ou uma combinação de ambos.
[0036] As técnicas dessa revelação não são limitadas a aplicações ou cenários sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte de qualquer de uma variedade de aplicações de multimídia, como broadcasts de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo streaming, por exemplo, através da Internet, (por exemplo, streaming adaptável dinâmica através de Protocolo de Transferência de hipertexto (HTTP), etc.), codificação de dados de vídeo para armazenagem em uma mídia de armazenagem de dados, decodificação de dados de vídeo armazenados em uma mídia de armazenagem de dados, ou outras aplicações. Em alguns exemplos, o sistema de codificação de vídeo 10 pode ser configurado para suportar transmissão de vídeo simples ou duplex para suportar aplicações como streaming de vídeo, reprodução de vídeo, broadcasting de vídeo e/ou telefonia de vídeo.
[0037] No exemplo da figura 1A, o dispositivo de fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20, e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador/demodulador (modem) e/ou transmissor. No dispositivo de fonte 12, a fonte de vídeo 18 pode incluir uma fonte como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo dados de vídeo anteriormente capturados, uma interface de feed de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo, e/ou um sistema de gráfico de computador para gerar dados gráficos de computador como o vídeo de fonte ou uma combinação de tais fontes. Como exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de fonte 12 e o dispositivo de destino 14 podem formar os denominados “fones de câmera” ou “fones de vídeo”, como ilustrado no exemplo da figura 1B. Entretanto, as técnicas descritas nessa revelação podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicativos sem fio e/ou com fio.
[0038] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos para o dispositivo de destino 14 através da interface de saída 22 do dispositivo de fonte 12. Os dados de vídeo codificados podem também (ou alternativamente) ser armazenados sobe o dispositivo de armazenagem 31 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução. O codificador de vídeo 20 ilustrado na figura 1A e 1B pode compreender o codificador de vídeo 20 ilustrado na figura 2A, o codificador de vídeo 23 ilustrado na figura 2B, ou qualquer outro codificador de vídeo descrito aqui.
[0039] No exemplo da figura 1A, 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 casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 do dispositivo de destino 14 pode receber os dados de vídeo codificados através do link 16 e/ou a partir do dispositivo de armazenagem 31. Os dados de vídeo codificados comunicados através do link 16, ou fornecidos no dispositivo de armazenagem 31 podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 para uso por um decodificador de vídeo, como decodificador de vídeo 30, na decodificação dos dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em uma mídia de comunicação, armazenados em uma mídia de armazenagem, ou armazenados em um servidor de arquivo. O decodificador de vídeo 30 ilustrado na figura 1A e 1B pode compreender o decodificador de vídeo 30 ilustrado na figura 3A, o decodificador de vídeo 33 ilustrado na figura 3B, ou qualquer outro decodificador de vídeo descrito aqui.
[0040] O dispositivo de exibição 32 pode ser integrado com, ou externo ao, dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também ser configurado para interface com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer uma variedade de dispositivos de exibição, como um display de cristal líquido (LCD), um display de plasma, um display de diodo de emissão de luz orgânica (OLED) ou outro tipo de dispositivo de exibição.
[0041] Em aspectos relacionados, a figura 1B mostra um sistema de codificação e decodificação de vídeo de exemplo 10’ em que os dispositivos de fonte e destino 12, 14 estão em ou parte de um dispositivo 11. O dispositivo 11 pode ser um aparelho telefônico, como uma “smart” fone ou similar. O dispositivo 11 pode incluir um dispositivo processador/controlador opcional 13 em comunicação operativa com os dispositivos de fonte e destino 12, 14. O sistema 10’ da figura 1B pode incluir ainda uma unidade de processamento de vídeo 21 entre o codificador de vídeo 20 e a interface de saída 22. Em algumas implementações, a unidade de processamento de vídeo 21 é uma unidade separada, como ilustrado na figura 1B; entretanto, em outras implementações, a unidade de processamento de vídeo 21 pode ser implementada como uma porção do codificador de vídeo 20 e/ou dispositivo controlador/processador 13. O sistema 10’ pode também incluir um rastreador opcional 29, que pode rastrear um objeto de interesse em uma sequência de vídeo. O objeto ou interesse a ser rastreado pode ser segmentado por uma técnica descrita com relação a um ou mais aspectos da presente revelação. Em aspectos relacionados, o rastreamento pode ser realizado pelo dispositivo de exibição 32 individualmente ou em combinação com o rastreador 29. O sistema 10’ da figura 1B, e componentes do mesmo, são de outro modo similares ao sistema 10 da figura 1A, e componentes do mesmo.
[0042] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, como o HEVC, e pode se conformar a um Modelo de teste HEVC (HM). Alternativamente, o codificador de vídeo 20 e decodificador de vídeo 30 pode operar de acordo com outros padrões de propriedade ou indústria, como o padrão ITU-T H.264, alternativamente, mencionado como MPEG-4, parte 10, AVC, ou extensões de tais padrões. As técnicas dessa revelação, entretanto, não são limitadas a qualquer padrão de codificação específica. Outros exemplos de padrões de compressão de vídeo incluem MPEG-2 e ITU-T H.263.
[0043] Embora não mostrado nos exemplos das figuras 1A e 1B, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser individualmente integrados a um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para tratar codificação tanto de áudio como de vídeo em um fluxo de dados comuns ou fluxos de dados separados. Se aplicável, em alguns exemplos, unidades MUX-DEMUX podem se conformar ao protocolo de multiplexor ITU H.223, ou outros protocolos como o protocolo de datagrama de usuário (UDP).
[0044] O codificador de vídeo 20 e decodificador de vídeo 30 podem ser implementados como qualquer de uma variedade de conjunto de circuitos de codificador adequado, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), disposições de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia legível em computador não transitória, adequada, e executar as instruções em hardware usando um ou mais processadores para executar as técnicas dessa revelação. Cada do codificador de vídeo 20 e 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 combinado (CODEC) em um dispositivo respectivo.
PROCESSO DE CODIFICAÇÃO DE VÍDEO
[0045] Como mencionado brevemente acima, o codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada das imagens é uma imagem fixa formando parte de um vídeo. Em algumas instâncias, uma imagem pode ser mencionada como um “quadro” de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que formam uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir imagens codificadas e dados associados. Uma imagem codificada é uma representação codificada de uma imagem.
[0046] Para gerar o fluxo de bits, o codificador de vídeo 20 pode executar operações de codificação em cada imagem nos dados de vídeo. Quando o codificador de vídeo 20 executa operações de codificação nas imagens, o codificador de vídeo 20 pode gerar uma série de imagens codificadas e dados associados. Os dados associados podem incluir conjuntos de parâmetro de vídeo (VPS), conjuntos de parâmetro de sequência (SPSs), conjuntos de parâmetro de imagem (PPSs), conjuntos de parâmetro de adaptação (APSs) e outras estruturas de sintaxe. Um SPS pode conter parâmetros aplicáveis a zero ou mais sequencias de imagens. Um PPS pode conter parâmetros aplicáveis a zero ou mais imagens. Um APS pode conter parâmetros aplicáveis a zero ou mais imagens. Parâmetros em um APS podem ser parâmetros que são mais prováveis de mudra do que parâmetros em um PPS.
[0047] Para gerar uma imagem codificada, o codificador de vídeo 20 pode dividir uma imagem em blocos de vídeo de tamanho igual. Um bloco de vídeo pode ser um conjunto bidimensional de amostras. Cada dos blocos de vídeo é associado a um treeblock. Em algumas instâncias, um treeblock pode ser mencionado como uma unidade de codificação maior (LCU). Os treeblocks de HEVC podem ser amplamente análogos aos macroblocos de padrões anteriores, como H.264/AVC. Entretanto, um treeblock não é necessariamente limitado a um tamanho específico e pode incluir uma ou mais unidades de codificação (CUs). O codificador de vídeo 20 pode usar divisão de quadtree para dividir os blocos de vídeo de treeblocks em blocos de vídeo associados a CUs, consequentemente o nome “treeblocks.”
[0048] Em alguns exemplos, o codificador de vídeo 20 pode dividir uma imagem em uma pluralidade de fatias. Cada das fatias pode incluir um número inteiro de CUs. Em algumas instâncias, uma fatia compreende um número inteiro de treeblocks. Em outras instâncias, um limite de uma fatia pode estar compreendido em um treeblock.
[0049] Como parte de executar uma operação de codificação em uma imagem, o codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Quando o codificador de vídeo 20 executa uma operação de codificação em uma fatia, o codificador de vídeo 20 pode gerar dados codificados associados à fatia. Os dados codificados associados à fatia podem ser mencionados como uma “fatia codificada.”
[0050] Para gerar uma fatia codificada, o codificador de vídeo 20 pode executar operações de codificação em cada treeblock em uma fatia. Quando o codificador de vídeo 20 executa uma operação de codificação em um treeblock, o codificador de vídeo 20 pode gerar um treeblock codificado. O treeblock codificado pode compreender dados representando uma versão codificada do treeblock.
[0051] Quando o codificador de vídeo 20 gera uma fatia codificada, o codificador de vídeo 20 pode executar operações de codificação em (por exemplo, codificar) os treeblocks na fatia de acordo com uma ordem de varredura raster. Por exemplo, o codificador de vídeo 20 pode codificar os treeblocks da fatia em uma ordem que prossegue da esquerda para a direita através de uma linha mais superior de treeblocks na fatia, a seguir da esquerda para a direita através de uma linha inferior seguinte de treeblocks, e assim por diante até que o codificador de vídeo 20 tenha codificado cada dos treeblocks na fatia.
[0052] Como resultado de codificação dos treeblocks de acordo com a ordem de varredura raster, os treeblocks acima e à esquerda de um treeblock dado podem ter sido codificados, porém treeblocks abaixo e à direita do treeblock dado não foram codificados ainda. Consequentemente, o codificador de vídeo 20 pode ser capaz de acessar informações geradas por codificar treeblocks acima e à esquerda do treeblock dado ao codificar o treeblock dado. Entretanto, o codificador de vídeo 20 pode ser incapaz de acessar informações geradas por codificar treeblocks abaixo e à direita do treeblock dado ao codificar o treeblock dado.
[0053] Para gerar um treeblock codificado, o codificador de vídeo 20 pode executar de forma recursiva divisão de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, o codificador de vídeo 20 pode dividir o bloco de vídeo de um treeblock em quatro sub-blocos de tamanho igual, dividir um ou mais dos sub-blocos em quatro sub-sub-blocos de tamanho igual, e assim por diante. Uma CU dividida pode ser uma CU cujo bloco de vídeo é dividido em blocos de vídeo associados a outras CUs. Uma CU não dividida pode ser uma CU cujo bloco de vídeo não é dividido em blocos de vídeo associados a outras CUs.
[0054] Um ou mais elementos de sintaxe no fluxo de bits pode indicar um número máximo de vezes que o codificador de vídeo 20 pode dividir o bloco de vídeo de um treeblock. Um bloco de vídeo de uma CU pode ser de formato quadrado. O tamanho do bloco de vídeo de uma CU (por exemplo, o tamanho da CU) pode variar de 8x8 pixels até o tamanho de um bloco de vídeo de um treeblock (por exemplo, o tamanho do treeblock) com um máximo de 64x64 pixels ou maior.
[0055] O codificador de vídeo 20 pode executar operações de codificação em (por exemplo, codificar) cada CU de um treeblock de acordo com uma ordem de varredura-z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU esquerda-superior, uma CU direita- superior, uma CU esquerda-inferior, e então uma CU direita- inferior, naquela ordem. Quando o codificador de vídeo 20 executa uma operação de codificação em uma CU dividida, o codificador de vídeo 20 pode codificar CUs associadas com sub-blocos do bloco de vídeo da CU dividida de acordo com a ordem de varredura-z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU associada a um sub-bloco superior-esquerdo, uma CU associada a um sub-bloco superior-direito, uma CU associada a um sub-bloco inferior- esquerdo, e então uma CU associada a um sub-bloco inferior- direito, nessa ordem.
[0056] Como resultado da codificação das CUs de um treeblock de acordo com uma ordem de varredura-z, as CUs acima, acima e à esquerda, acima e 'direita, esquerda, e abaixo e à esquerda de uma CU dada podem ter sido codificadas. CUs abaixo e à direita da CU dada não foram ainda codificadas. Consequentemente, o codificador de vídeo 20 pode ser capaz de acessar informações geradas por codificar algumas CUs que são vizinhas da CU dada ao codificar a CU dada. Entretanto, o codificador de vídeo 20 pode ser incapaz de acessar informações geradas por codificar outras CUs que são vizinhas da CU dada ao codificar a CU dada.
[0057] Quando o codificador de vídeo 20 codifica uma CU não dividida, o codificador de vídeo 20 pode gerar uma ou mais unidades de predição (PUs) para a CU. Cada das PUs da CU pode ser associada a um bloco de vídeo diferente no bloco de vídeo da CU. O codificador de vídeo 20 pode gerar um bloco de vídeo predito para cada PU da CU. O bloco de vídeo predito de uma PU pode ser um bloco de amostras. O codificador de vídeo 20 pode usar intra predição ou inter predição para gerar o bloco de vídeo predito para uma PU.
[0058] Quando o codificador de vídeo 20 usa intra predição para gerar o bloco de vídeo predito de uma PU, o codificador de vídeo 20 pode gerar o bloco de vídeo predito da PU com base em amostras decodificadas da imagem associada a PU. Se o codificador de vídeo 20 usar intra predição para gerar blocos de vídeo predito das PUs de uma CU, a CU é uma CU intra-predita. Quando o codificador de vídeo 20 usa inter predição para gerar o bloco de vídeo predito da PU, o codificador de vídeo 20 pode gerar o bloco de vídeo predito da PU com base nas amostras decodificadas de uma ou mais imagens diferentes da imagem associada a PU. Se o codificador de vídeo 20 usar inter predição para gerar blocos de vídeo preditos das PUs de uma CU, a CU é uma CU inter-predita.
[0059] Além disso, quando o codificador de vídeo 20 usa inter predição para gerar um bloco de vídeo predito para uma PU, o codificador de vídeo 20 pode gerar informação de movimento para a PU. A informação de movimento para uma PU pode indicar um ou mais blocos de referência da PU. Cada bloco de referência da PU pode ser um bloco de vídeo em uma imagem de referência. A imagem de referência pode ser uma imagem diferente da imagem associada a PU. Em algumas instâncias, um bloco de referência de uma PU pode ser também mencionado como a “amostra de referência” da PU. O codificador de vídeo 20 pode gerar o bloco de vídeo predito para a PU com base nos blocos de referência da PU.
[0060] Após o codificador de vídeo 20 gerar blocos de vídeo predito para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar dados residuais para a CU com base nos blocos de vídeo predito para as PUs da CU. Os dados residuais para a CU podem indicar diferenças entre amostras nos blocos de vídeo predito para as PUs da CU e o bloco de vídeo original da CU.
[0061] Além disso, como parte de executar uma operação de codificação em uma CU não dividida, o codificador de vídeo 20 pode executar divisão de quadtree recursiva nos dados residuais da CU para dividir os dados residuais da CU em um ou mais blocos de dados residuais (por exemplo, blocos de vídeo residuais) associados a unidades de transformada (TUs) da CU. Cada TU de uma CU pode ser associada a um bloco de vídeo residual diferente.
[0062] O codificador de vídeo 20 pode aplicar uma ou mais transformadas nos blocos de vídeo residual associados às TUs para gerar blocos de coeficiente de transformada (por exemplo, blocos de coeficientes de transformada) associados às TUs. Conceptualmente, um bloco de coeficiente de transformada pode ser uma matriz bidimensional (2D) de coeficientes de transformada.
[0063] Após gerar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode executar um processo de quantização no bloco de coeficiente de transformada. A quantização se refere em geral a um processo no qual coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, fornecendo compressão adicional. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bit pode ser arredondado para baixo para um coeficiente de transformada de m-bit durante quantização, onde n é maior que m.
[0064] O codificador de vídeo 20 pode associar cada CU com um valor de parâmetro de quantização (QP). O valor desassociado a uma CU pode determinar como o codificador de vídeo 20 quantiza blocos de coeficiente de transformada associados a CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicada aos blocos de coeficiente de transformada associados a uma CU por ajustar o valor de QP associado à CU.
[0065] Após o codificador de vídeo 20 quantizar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode gerar conjuntos de elementos de sintaxe que representam os coeficientes de transformada no bloco de coeficiente de transformada quantizada. O codificador de vídeo 20 pode aplicar operações de codificação por entropia, como operações de Codificação aritmética binária adaptável ao contexto (CABAC), em alguns desses elementos de sintaxe. Outras técnicas de codificação por entropia como codificação de comprimento variável adaptável ao conteúdo (CAVLC), codificação por entropia de divisão de intervalo de probabilidade (PIPE), ou outra codificação aritmética binária também pode ser usada.
[0066] O fluxo de bits gerado pelo codificador de vídeo 20 pode incluir uma série de unidades de Camada de abstração de rede (NAL). Cada das unidades NAL pode ser uma estrutura de sintaxe contendo uma indicação de um tipo de dados na unidade NAL e bytes contendo os dados. Por exemplo, uma unidade NAL pode conter dados representando um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, uma fatia codificada, informação de aperfeiçoamento suplementar (SEI), um delimitador de unidade de acesso, dados de preenchimento, ou outro tipo de dados. Os dados em uma unidade NAL podem incluir várias estruturas de sintaxe.
[0067] O decodificador de vídeo 30 pode receber o fluxo de bits gerado pelo codificador de vídeo 20. O fluxo de bits pode incluir uma representação codificada dos dados de vídeo codificados pelo codificador de vídeo 20. Quando o decodificador de vídeo 30 recebe o fluxo de bits, o decodificador de vídeo 30 pode executar uma operação de análise no fluxo de bits. Quando o decodificador de vídeo 30 executa a operação de análise, o decodificador de vídeo 30 pode extrair elementos de sintaxe a partir do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo de reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser genericamente recíproco ao processo executado pelo codificador de vídeo 20 para gerar os elementos de sintaxe.
[0068] Após o decodificador de vídeo 30 extrair os elementos de sintaxe associados a uma CU, o decodificador de vídeo 30 pode gerar blocos de vídeo predito para as PUs da CU com base nos elementos de sintaxe. Além disso, o decodificador de vídeo 30 pode quantizar inverso blocos de coeficiente de transformada associados a TUs da CU. O decodificador de vídeo 30 pode executar transformadas inversas nos blocos de coeficiente de transformada para reconstruir blocos de vídeo residual associados às TUs da CU. Após gerar os blocos de vídeo predito e reconstruir os blocos de vídeo residual, o decodificador de vídeo 30 pode reconstruir o bloco de vídeo da CU com base nos blocos de vídeo predito e blocos de vídeo residual. Desse modo, o decodificador de vídeo 30 pode reconstruir os blocos de vídeo de CUs com base nos elementos de sintaxe no fluxo de bits.
CODIFICADOR DE VÍDEO
[0069] A figura 2A é um diagrama de blocos ilustrando um exemplo do codificador de vídeo 20 que pode implementar técnicas de acordo com aspectos descritos nessa revelação. O codificador de vídeo 20 pode ser configurado para processar uma camada única de um quadro de vídeo, como para HEVC. Além disso, o codificador de vídeo 20 pode ser configurado para executar todas ou quaisquer das técnicas dessa revelação, incluindo, porém não limitado aos métodos de inferir NoOutputOfPriorPicsFlag e processos relacionados descritos em maior detalhe acima e abaixo com relação às figuras 4 e 5. Como exemplo, a unidade de processamento de predição 100 pode ser configurada para executar todas ou quaisquer das técnicas descritas nessa revelação. Em outra modalidade, o codificador de vídeo 20 inclui uma unidade de predição inter-camada opcional 128 que é configurada para executar todas ou quaisquer das técnicas descritas nessa revelação. Em outras modalidades, a predição inter-camada pode ser executada pela unidade de processamento de predição 100 (por exemplo, unidade de inter predição 121 e/ou unidade de intra predição 126), em cujo caso a unidade de predição inter-camada 128 pode ser omitida. Entretanto, aspectos dessa revelação não são desse modo limitados. Em alguns exemplos, as técnicas descritas nessa revelação podem ser compartilhadas entre os vários componentes do codificador de vídeo 20. Em alguns exemplos, adicionalmente ou alternativamente, um processador (não mostrado) pode ser configurado para executar todas ou quaisquer das técnicas descritas nessa revelação.
[0070] Para fins de explicação, essa revelação descreve o codificador de vídeo 20 no contexto de codificação de HEVC. Entretanto, as técnicas dessa revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo mostrado na figura 2A é para um codec de camada única. Entretanto, como será descrito adicionalmente com relação à figura 2B, algum ou todo o codificador de vídeo 20 pode ser duplicado para processamento de um codec de multicamada.
[0071] O codificador de vídeo 20 pode executar intra- e inter-codificação de blocos de vídeo em fatias de vídeo. Intra codificação se baseia em predição espacial para reduzir ou remover redundância espacial em vídeo em um dado quadro ou imagem de vídeo. Inter-codificação se baseia em predição temporal para reduzir ou remover redundância temporal em vídeo em quadros ou imagens adjacentes de uma sequência de vídeo. Intra-modo (modo I) pode se referir a qualquer de vários modos de codificação baseados em espacial. Inter-modos, como predição unidirecional (modo P) ou predição bidirecional (modo B), podem se referir a quaisquer de vários modos de codificação baseados em temporal.
[0072] No exemplo da figura 2A, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do codificador de vídeo 20 incluem uma unidade de processamento de predição 100, uma unidade de geração residual 102, uma unidade de processamento de transformada 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 113, um buffer de imagem decodificada 114, e uma unidade de codificação por entropia 116. A unidade de processamento de predição 100 inclui uma unidade de inter predição 121, uma unidade de estimação de movimento 122, uma unidade de compensação de movimento 124, uma unidade de intra predição 126, e uma unidade de predição inter-camada 128. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos ou componentes funcionais diferentes. Além disso, a unidade de estimação de movimento 122 e unidade de compensação de movimento 124 podem ser altamente integradas, porém são representadas no exemplo da figura 2A separadamente para fins de explicação.
[0073] O codificador de vídeo 20 pode receber dados de vídeo. O codificador de vídeo 20 pode receber os dados de vídeo a partir de várias fontes. Por exemplo, o codificador de vídeo 20 pode receber os dados de vídeo a partir da fonte de vídeo 18 (por exemplo, mostrada na figura 1A ou 1B) ou outra fonte. Os dados de vídeo podem representar uma série de imagens. Para codificar os dados de vídeo, o codificador de vídeo 20 pode executar uma operação de codificação em cada das imagens. Como parte de executar a operação de codificação em uma imagem, o codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Como parte de executar uma operação de codificação em uma fatia, o codificador de vídeo 20 pode executar operações de codificação em treeblocks na fatia.
[0074] Como parte de executar uma operação de codificação em um treeblock, a unidade de processamento de predição 100 pode executar divisão de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, a unidade de processamento de predição 100 pode dividir um bloco de vídeo de um treeblock em quatro sub-blocos de tamanho igual, dividir um ou mais dos sub-blocos em quatro sub-sub-blocos de tamanho igual e assim por diante.
[0075] Os tamanhos dos blocos de vídeo associados a CUs podem variar de 8x8 amostras até o tamanho do treeblock com um máximo de 64x64 amostras ou maior. Nessa revelação, “NxN” e “N por N” podem ser usados de modo intercambiável para se referir as dimensões de amostra de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, amostras de 16x16 ou amostras de 16 por 16. Em geral, um bloco de vídeo de 16x16 tem dezesseis amostras em uma direção vertical (y = 16) e dezesseis amostras em uma direção horizontal (x = 16). De modo semelhante, um bloco NxN tem em geral N amostras em uma direção vertical e N amostras em uma direção horizontal, onde N representa um valor inteiro não negativo.
[0076] Além disso, como parte de executar a operação de codificação em um treeblock, a unidade de processamento de predição 100 pode gerar uma estrutura de dados de quadtree hierárquica para o treeblock. Por exemplo, um treeblock pode corresponder a um nó de raiz da estrutura de dados de quadtree. Se a unidade de processamento de predição 100 dividir o bloco de vídeo do treeblock em quatro sub-blocos, o nó de raiz tem quatro nós filhos na estrutura de dados de quadtree. Cada dos nós filhos corresponde a uma CU associada a um dos sub-blocos. Se a unidade de processamento de predição 100 dividir um dos sub-blocos em quatro sub-sub-blocos, o nó correspondendo à CU associada ao sub-bloco pode ter quatro nós filhos, cada um dos quais corresponde a uma CU associada a um dos sub-sub-blocos.
[0077] Cada nó da estrutura de dados de quadtree pode conter dados de sintaxe (por exemplo, elementos de sintaxe) para o treeblock correspondente ou CU. Por exemplo, um nó no quadtree pode incluir um indicador dividido que indica se o bloco de vídeo da CU correspondendo ao nó é dividido (por exemplo, Split) em quatro sub-blocos. Elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender de se o bloco de vídeo da CU é dividido em sub-blocos. Uma CU cujo bloco de vídeo não é dividido pode corresponder a um nó de folha na estrutura de dados de quadtree. Um treeblock codificado pode incluir dados com base na estrutura de dados de quadtree para um treeblock correspondente.
[0078] O codificador de vídeo 20 pode executar operações de codificação em cada CU não dividida de um treeblock. Quando o codificador de vídeo 20 executa uma operação de codificação em uma CU não dividida, o codificador de vídeo 20 gera dados representando uma representação codificada da CU não dividida.
[0079] Como parte de executar uma operação de codificação em uma CU, a unidade de processamento de predição 100 pode dividir o bloco de vídeo da CU entre uma ou mais PUs da CU. O codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar vários tamanhos de PU. Assumindo que o tamanho de uma CU específica é 2Nx2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN, e inter-predição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, nLx2N, nRx2N ou similar. O codificador de vídeo 20 e decodificador de vídeo 30 podem também suportar divisão assimétrica para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em alguns exemplos, a unidade de processamento de predição 100 pode executar divisão geométrica para dividir o bloco de vídeo de uma CU entre PUs da CU ao longo de um limite que não encontra os lados do bloco de vídeo da CU em ângulos retos.
[0080] A unidade de inter predição 121 pode executar inter predição em cada PU da CU. Inter predição pode fornecer compressão temporal. Para executar inter predição em uma PU, a unidade de estimação de movimento 122 pode gerar informações de movimento para a PU. A unidade de compensação de movimento 124 pode gerar um bloco de vídeo predito para a PU com base na informação de movimento e amostras decodificadas de imagens diferentes da imagem associada à CU (por exemplo, imagens de referência). Nessa revelação, um bloco de vídeo predito gerado pela unidade de compensação de movimento 124 pode ser mencionado como um bloco de vídeo inter-predito.
[0081] Fatias podem ser fatias I, fatias P ou fatias B. A unidade de estimação de movimento 122 e unidade de compensação de movimento 124 podem executar 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 intra preditas. Consequentemente, se a PU estiver em uma fatia I, a unidade de estimação de movimento 122 e unidade de compensação de movimento 124 não executam inter predição na PU.
[0082] Se a PU estiver em uma fatia P, a imagem contendo a PU é associada a uma lista de imagens de referência mencionada como “lista 0.” Cada das imagens de referência na lista 0 contém amostras que podem ser usadas para inter predição de outras imagens. Quando a unidade de estimação de movimento 122 executa a operação de estimação de movimento com relação a uma PU em uma fatia P, a unidade de estimação de movimento 122 pode buscar as imagens de referência na lista 0 para um bloco de referência para a PU. O bloco de referência da PU pode ser um conjunto de amostras, por exemplo, um bloco de amostras, que mais estreitamente corresponde às amostras no bloco de vídeo da PU. A unidade de estimação de movimento 122 pode usar uma variedade de métricas para determinar quão estreitamente um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, a unidade de estimação de movimento 122 pode determinar quão estreitamente um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU pela soma de diferença absoluta (SAD), soma de diferença de quadrado (SSD), ou outras métricas de diferença.
[0083] Após identificar um bloco de referência de uma PU em uma fatia P, a unidade de estimação de movimento 122 pode gerar um índice de referência que indica a imagem de referência na lista 0 contendo o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. Em vários exemplos, a unidade de estimação de movimento 122 pode gerar vetores de movimento em graus de precisão variáveis. Por exemplo, a unidade de estimação de movimento 122 pode gerar vetores de movimento em precisão de amostra de um quarto, precisão de amostra de um oitavo ou outra precisão de amostra fracional. No caso de precisão de amostra fracional, valores de bloco de referência podem ser interpolados a partir dos valores de amostra de posição de inteiro na imagem de referência. A unidade de estimação de movimento 122 pode transmitir o índice de referência e o vetor de movimento como a informação de movimento da PU. A unidade de compensação de movimento 124 pode gerar um bloco de vídeo predito da PU com base no bloco de referência identificado pela informação de movimento da PU.
[0084] Se a PU estiver em uma fatia B, a imagem contendo a PU pode ser associada a duas listas de imagens de referência, mencionadas como “listas 0” e “lista 1.” Em alguns exemplos, uma imagem contendo uma fatia B pode ser associada a uma combinação de lista que é uma combinação de lista 0 e lista 1.
[0085] Além disso, se a PU estiver em uma fatia B, a unidade de estimação de movimento 122 pode executar predição unidirecional ou predição bidirecional para a PU. Quando a unidade de estimação de movimento 122 executa predição unidirecional para a PU, a unidade de estimação de movimento 122 pode buscar as imagens de referência da lista 0 ou lista 1 para um bloco de referência para a PU. A unidade de estimação de movimento 122 pode então gerar um índice de referência que indica a imagem de referência na lista 0 ou lista 1 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. A unidade de estimação de movimento 122 pode transmitir o índice de referência, um indicador de direção de predição, e o vetor de movimento como a informação de movimento da PU. O indicador de direção de predição pode indicar se o índice de referência indica uma imagem de referência na lista 0 ou lista 1. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo predito da PU com base no bloco de referência indicado pela informação de movimento da PU.
[0086] Quando a unidade de estimação de movimento 122 executa predição bidirecional para uma PU, a unidade de estimação de movimento 122 pode buscar as imagens de referência na lista 0 para um bloco de referência para a PU e pode também buscar as imagens de referência na lista 1 para outro bloco de referência para a PU. A unidade de estimação de movimento 122 pode então gerar índices de referência que indicam as imagens de referência na lista 0 e lista 1 contendo os blocos de referência e vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e a PU. A unidade de estimação de movimento 122 pode transmitir os índices de referência e os vetores de movimento da PU como a informação de movimento da PU. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo predito da PU baseado nos blocos de referência indicados pela informação de movimento da PU.
[0087] Em algumas instâncias, a unidade de estimação de movimento 122 não transmite um conjunto completo de informações de movimento para uma PU para a unidade de codificação por entropia 116. Ao invés, a unidade de estimação de movimento 122 pode sinalizar a informação de movimento de uma PU com referência à informação de movimento de outra PU. Por exemplo, a unidade de estimação de movimento 122 pode determinar que a informação de movimento da PU seja suficientemente similar à informação de movimento de uma PU vizinha. Nesse exemplo, a unidade de estimação de movimento 122 pode indicar, em uma estrutura de sintaxe associada à PU, um valor que indica para o decodificador de vídeo 30 que a PU tem a mesma informação de movimento que a PU vizinha. Em outro exemplo, a unidade de estimação de movimento 122 pode identificar, em uma estrutura de sintaxe associada a PU, uma PU vizinha e uma diferença de vetor de movimento (MVD). A diferença de vetor de movimento indica uma diferença entre o vetor de movimento da PU e o vetor de movimento da PU vizinha indicada. O decodificador de vídeo 30 pode usar o vetor de movimento da PU vizinha indicada e a diferença de vetor de movimento para determinar o vetor de movimento da PU. Por se referir à informação de movimento de uma primeira PU ao sinalizar a informação de movimento de uma segunda PU, o codificador de vídeo 20 pode ser capaz de sinalizar a informação de movimento da segunda PU usando menos bits.
[0088] Como discutido adicionalmente abaixo com referência à figura 5, a unidade de processamento de predição 100 pode ser configurada para codificar (Por exemplo, codificar ou decodificar) a PU (ou qualquer outra camada de referência e/ou blocos de camada de aperfeiçoamento ou unidades de vídeo) por executar os métodos ilustrados na figura 5. Por exemplo, a unidade inter predição 121 (por exemplo, através da unidade de estimação de movimento 122 e/ou unidade de compensação de movimento 124), unidade intra predição 126, ou unidade de predição inter-camada 128 podem ser configuradas para executar os métodos ilustrados na figura 5, juntas ou separadamente.
[0089] Como parte de executar uma operação de codificação em uma CU, a unidade intra predição 126 pode executar intra predição em PUs da CU. Intra predição pode fornecer compressão espacial. Quando a unidade intra predição 126 executa intra predição em uma PU, a unidade de intra predição 126 pode gerar dados de predição para a PU com base em amostras decodificadas de outras PUs na mesma imagem. Os dados de predição da PU podem incluir um bloco de vídeo predito e vários elementos de sintaxe. A unidade intra predição 126 pode executar intra predição em PUs em fatias I, fatias P e fatias B.
[0090] Para executar intra predição em uma PU, a unidade intra predição 126 pode usar múltiplos modos de intra predição para gerar múltiplos conjuntos de dados de predição para a PU. Quando a unidade intra predição 126 usa um modo intra predição para gerar um conjunto de dados de predição para a PU, a unidade intra predição 126 pode estender amostras de blocos de vídeo de PUs vizinhas através do bloco de vídeo da PU em uma direção e/ou gradiente associado ao modo intra predição. As PUs vizinhas podem estar acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma ordem de codificação esquerda para a direita, topo para baixo para PUs, CUs e treeblocks. A unidade intra predição 126 pode usar vários números de modos intra predição, por exemplo, 33 modos intra predição direcionais, dependendo do tamanho da PU.
[0091] A unidade de processamento de predição 100 pode selecionar os dados de predição para uma PU entre os dados de predição gerados pela unidade de compensação de movimento 124 para a PU ou os dados de predição gerados pela unidade intra predição 126 para a PU. Em alguns exemplos, a unidade de processamento de predição 100 seleciona os dados de predição para a PU com base em métrica de distorção/taxa dos conjuntos de dados de predição.
[0092] Se a unidade de processamento de predição 100 selecionar dados de predição gerados pela unidade intra predição 126, a unidade de processamento de predição 100 pode sinalizar o modo intra predição que foi usado para gerar os dados de predição para as PUs, por exemplo, o modo intra predição selecionado. A unidade de processamento de predição 100 pode sinalizar o modo intra predição selecionado de vários modos. Por exemplo, pode ser provável que o modo de intra predição selecionado seja igual ao modo intra predição de uma PU vizinha. Em outras palavras, o modo intra predição da PU vizinha pode ser o modo mais provável para a PU atual. Desse modo, a unidade de processamento de predição 100 pode gerar um elemento de sintaxe para indicar que o modo intra predição selecionado é igual ao modo intra predição da PU vizinha.
[0093] Como discutido acima, o codificador de vídeo 20 pode incluir unidade de predição inter-camada 128. A unidade de predição inter-camada 128 é configurada para prever um bloco atual (por exemplo, um bloco atual no EL) usando uma ou mais camadas diferentes que estão disponíveis em codificação de vídeo escalonável (por exemplo, uma camada de referência ou base). Tal predição pode ser mencionada como predição Inter-camada. A unidade de predição inter-camada 128 utiliza métodos de predição para reduzir redundância inter-camada, desse modo melhorando a eficiência de codificação e reduzindo exigências de recurso computacional. Alguns exemplos de predição inter-camada incluem intra predição inter-camada, predição de movimento de inter-camada, e predição residual inter-camada. A intra predição inter-camada usa a reconstrução de blocos localizados em conjunto na camada de base para prever o bloco atual na camada de aperfeiçoamento. A predição de movimento inter-camada usa informações de movimento da camada de base para prever movimento na camada de aperfeiçoamento. A predição residual Inter-camada usa o resíduo da camada de base para prever o resíduo da camada de aperfeiçoamento. Cada dos esquemas de predição inter- camada é discutido abaixo em maior detalhe.
[0094] Após a unidade de processamento de predição 100 selecionar os dados de predição para PUs de uma CU, a unidade de geração residual 102 pode gerar dados residuais para a CU por subtrair (por exemplo, indicado pelo sinal menos) os blocos de vídeo predito das PUs da CU a partir do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir blocos de vídeo residual 2D que correspondem a componentes de amostra diferentes das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que corresponde a diferenças entre componentes de luminância de amostras nos blocos de vídeo predito das PUs da CU e componentes de luminância de amostras no bloco de vídeo original da CU. Além disso, os dados residuais da CU podem incluir blocos de vídeo residual que correspondem às diferenças entre componentes de crominância de amostras nos blocos de vídeo predito das PUs da CU e os componentes de crominância das amostras no bloco de vídeo original da CU.
[0095] A unidade de processamento de predição 100 pode executar divisão de quadtree para dividir os blocos de vídeo residual de uma CU em sub-blocos. Cada bloco de vídeo residual não dividido pode ser associado a uma TU diferente da CU. Os tamanhos e posições dos blocos de vídeo residual associados a TUs de uma CU podem ou não ser baseados nos tamanhos e posições de blocos de vídeo associados às PUs da CU. Uma estrutura de quadtree conhecida como uma “árvore quad residual” (RQT) pode incluir nós associados a cada dos blocos de vídeo residual. As TUs de uma CU podem corresponder a nós de folha do RQT.
[0096] A unidade de processamento de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU por aplicar uma ou mais transformadas a um bloco de vídeo residual associado à TU. Cada dos blocos de coeficiente de transformada pode ser uma matriz 2D de coeficientes de transformada. A unidade de processamento de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada direcional, ou uma transformada conceptualmente similar ao bloco de vídeo residual associado a uma TU.
[0097] Após a unidade de processamento de transformada 104 gerar um bloco de coeficiente de transformada associado a uma TU, a unidade de quantização 106 pode quantizar os coeficientes de transformada no bloco de coeficiente de transformada. A unidade de quantização 106 pode quantizar um bloco de coeficiente de transformada associado a uma TU de uma CU com base em um valor QP associado à CU.
[0098] O codificador de vídeo 20 pode associar um valor QP a uma CU em vários modos. Por exemplo, o codificador de vídeo 20 pode executar uma análise de distorção de taxa em um treeblock associado à CU. Na análise de distorção de taxa, o codificador de vídeo 20 pode gerar múltiplas representações codificadas do treeblock por executar uma operação de codificação múltiplas vezes no treeblock. O codificador de vídeo 20 pode associar valores QP diferentes com a CU quando o codificador de vídeo 20 gera representações codificadas diferentes do treeblock. O codificador de vídeo 20 pode sinalizar que um valor QP dado é associado à CU quando o valor QP dado é associado à CU em uma representação codificada do treeblock que tem uma taxa de bits e métrica de distorção mais baixas.
[0099] A unidade de quantização inversa 108 e unidade de transformada inversa 110 podem aplicar quantização inversa e transformadas inversas no bloco de coeficiente de transformada, respectivamente, para reconstruir um bloco de vídeo residual a partir do bloco de coeficiente de transformada. A unidade de reconstrução 112 pode adicionar o bloco de vídeo residual reconstruído a amostras correspondentes a partir de um ou mais blocos de vídeo predito gerados pela unidade de processamento de predição 100 para produzir um bloco de vídeo reconstruído associado a uma TU. Por reconstruir blocos de vídeo para cada TU de uma CU desse modo, o codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[0100] Após a unidade de reconstrução 112 reconstruir o bloco de vídeo de uma CU, a unidade de filtro 113 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio no bloco de vídeo associados à CU.Após executar uma ou mais operações de desbloqueio, a unidade de filtro 113 pode armazenar o bloco de vídeo reconstruído da CU no buffer de imagem decodificada 114. A unidade de estimação de movimento 122 e unidade de compensação de movimento 124 podem usar uma imagem de referência que contém o bloco de vídeo reconstruído para executar inter predição em PUs de imagens subsequentes. Além disso, a unidade intra predição 126 pode usar blocos de vídeo reconstruídos em buffer de imagem decodificada 114 para executar intra predição em outras PUs na mesma imagem que a CU.
[0101] A unidade de codificação por entropia 116 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação por entropia 116 pode receber blocos de coeficiente de transformada a partir da unidade de quantização 106 e pode receber elementos de sintaxe a partir da unidade de processamento de predição 100. Quando a unidade de codificação por entropia 116 recebe os dados, a unidade de codificação por entropia 116 pode executar uma ou mais operações de codificação por entropia para gerar dados codificados por entropia. Por exemplo, o codificador de vídeo 20 pode executar uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável a variável (V2V), uma operação de codificação aritmética binária adaptável ao contexto baseada em sintaxe (SBAC), uma operação de codificação de Entropia de divisão de intervalo de probabilidade (PIPE), ou outro tipo de operação de codificação por entropia nos dados. A unidade de codificação por entropia 116 pode transmitir um fluxo de bits que inclui os dados codificados por entropia.
[0102] Como parte de executar uma operação de codificação por entropia em dados, a unidade de codificação por entropia 116 pode selecionar um modelo de contexto. Se a unidade de codificação por entropia 116 estiver executando uma operação CABAC, o modelo de contexto pode indicar estimativas de probabilidades de bins específicos tendo valores específicos. No contexto de CABAC, o termo “bin” é usado para se referir a um bit de uma versão binarizada de um elemento de sintaxe.
CODIFICADOR DE VÍDEO DE MULTICAMADA
[0103] A figura 2B é um diagrama de blocos ilustrando um exemplo de um codificador de vídeo de multicamada 23 (também simplesmente mencionado como codificador de vídeo 23) que pode implementar técnicas de acordo com aspectos descritos nessa revelação. O codificador de vídeo 23 pode ser configurado para processar quadros de vídeo de multicamada, como para SHVC e codificação de multivistas. Além disso, o codificador de vídeo 23 pode ser configurado para executar todas ou quaisquer das técnicas dessa revelação.
[0104] O codificador de vídeo 23 inclui um codificador de vídeo 20A e codificador de vídeo 20B, cada um dos quais pode ser configurado como o codificador de vídeo 20 e pode executar as funções descritas acima com relação ao codificador de vídeo 20. Além disso, como indicado pelo reuso de números de referência, os codificadores de vídeo 20A e 20B podem incluir pelo menos alguns dos sistemas e subsistemas como o codificador de vídeo 20. Embora o codificador de vídeo 23 seja ilustrado como incluindo dois codificadores de vídeo 20A e 20B, o codificador de vídeo 23 não é limitado como tal e pode incluir qualquer número de camadas de codificador de vídeo 20. Em algumas modalidades, o codificador de vídeo 23 pode incluir um codificador de vídeo 20 para cada imagem ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou codificada por um codificador de vídeo que inclui cinco camadas de codificador. Em algumas modalidades, o codificador de vídeo 23 pode incluir mais camadas de codificador do que quadros em uma unidade de acesso. Em alguns desse casos, algumas das camadas de codificador de vídeo podem ser inativas ao processar algumas unidades de acesso.
[0105] Além dos codificadores de vídeo 20A e 20B, o codificador de vídeo 23 pode incluir uma unidade de reamostragem 90. A unidade de reamostragem 90 pode, em alguns casos, amostrar ascendentemente uma camada de base de um quadro de vídeo recebido para, por exemplo, criar uma camada de aperfeiçoamento. A unidade de reamostragem 90 pode amostrar ascendentemente informações específicas associadas à camada de base recebida de um quadro, porém não outras informações. Por exemplo, a unidade de reamostragem 90 pode amostrar ascendentemente o tamanho espacial ou número de pixels da camada de base, porém o número de fatias ou a contagem de ordem de imagem pode permanecer constante. Em alguns casos, a unidade de reamostragem 90 pode não processar o vídeo recebido e/ou pode ser opcional. Por exemplo, em alguns casos, a unidade de processamento de predição 100 pode executar amostragem ascendente. Em algumas modalidades, a unidade de reamostragem 90 é configurada para amostrar ascendentemente uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para estar em conformidade com um conjunto de regras de limite de fatia e/ou regras de varredura raster. Embora principalmente descrita como amostragem ascendente de uma camada de base, ou uma camada inferior em uma unidade de acesso, em alguns casos, a unidade de reamostragem 90 pode amostrar descendentemente uma camada. Por exemplo, se durante streaming de um vídeo a largura de banda for reduzida, um quadro pode ser amostrado descendentemente ao invés de amostrado ascendentemente.
[0106] A unidade de reamostragem 90 pode ser configurada para receber uma imagem ou quadro (ou informação de imagem associada à imagem) a partir do buffer de imagem decodificada 114 do codificador de camada inferior (por exemplo, o codificador de vídeo 20A) e amostrar ascendentemente a imagem (ou a informação de imagem recebida). Essa imagem amostrada ascendente pode ser então fornecida para a unidade de processamento de predição 100 de um codificador de camada mais elevada (por exemplo, o codificador de vídeo 20B) configurado para codificar uma imagem na mesma unidade de acesso que o codificador de camada inferior. Em alguns casos, o codificador de camada mais elevada é uma camada removida do codificador de camada mais baixa. Em outros casos, pode haver um ou mais codificadores de camada mais elevada entre o codificador de vídeo de camada 0 e o codificador de camada 1 da figura 2B.
[0107] Em alguns casos, a unidade de reamostragem 90 pode ser omitida ou desviada. Em tais casos, a imagem a partir do buffer de imagem decodificada 114 do codificador de vídeo 20A pode ser fornecida diretamente, ou pelo menos sem ser fornecida à unidade de reamostragem 90, para a unidade de processamento de predição 100 do codificador de vídeo 20B. por exemplo, se dados de vídeo fornecidos ao codificador de vídeo 20B e a imagem de referência a partir do buffer de imagem decodificada 114 do codificador de vídeo 20A forem do mesmo tamanho ou resolução, a imagem de referência pode ser fornecida ao codificador de vídeo 20B sem qualquer reamostragem.
[0108] Em algumas modalidades, o codificador de vídeo 23 amostra descendentemente dados de vídeo a serem fornecidos ao codificador de camada inferior usando a unidade de amostragem descendente 94 antes de fornecer os dados de vídeo para o codificador de vídeo 20A. Alternativamente, a unidade de amostragem descendente 94 pode ser uma unidade de reamostragem 90 capaz de amostrar ascendentemente ou amostrar descendentemente os dados de vídeo. Ainda em outras modalidades, a unidade de amostragem descendente 94 pode ser omitida.
[0109] Como ilustrado na figura 2B, o codificador de vídeo 23 pode incluir ainda um multiplexor 98, ou mux. O mux 98 pode transmitir um fluxo de bits combinados a partir do codificador de vídeo 23. O fluxo de bits combinado pode ser criado por tirar um fluxo de bits de cada dos codificadores de vídeo 20A e 20B e alternar qual fluxo de bits é transmitido em um dado momento. Embora em alguns casos os bits a partir dos dois (ou mais no caso de mais de duas camadas de codificador de vídeo) fluxos de bits possam ser alternados um bit de cada vez, em muitos casos os fluxos de bits são combinados diferentemente. Por exemplo, o fluxo de bits de saída pode ser criado por alternar o fluxo de bits selecionado um bloco de cada vez. Em outro exemplo, o fluxo de bits de saída pode ser criado por transmitir uma razão não 1:1 de blocos de cada dos codificadores de vídeo 20A e 20B. Por exemplo, dois blocos podem ser transmitidos a partir do codificador de vídeo 20B para cada bloco transmitido a partir do codificador de vídeo 20A. Em algumas modalidades, o fluxo de saída a partir do mux 98 pode ser programado previamente. Em outras modalidades, o mux 98 pode combinar os fluxos de bits a partir dos codificadores de vídeo 20A, 20B com base em um sinal de controle recebido a partir de um sistema externo ao codificador de vídeo 23, como de um processador em um dispositivo de fonte incluindo o dispositivo de fonte 12. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um vídeo a partir da fone de vídeo 18, com base em uma largura de banda do link 16, com base em uma subscrição associada a um usuário (por exemplo, uma subscrição paga versus uma subscrição gratuita), ou com base em qualquer outro fator para determinar uma saída de resolução desejada a partir do codificador de vídeo 23.
DECODIFICADOR DE VÍDEO
[0110] A figura 3A é um diagrama de blocos ilustrando um exemplo do decodificador de vídeo 30 que pode implementar técnicas de acordo com aspectos descritos nessa revelação. O decodificador de vídeo 30 pode ser configurado para processar uma camada única de um quadro de vídeo, como para HEVC. Além disso, o decodificador de vídeo 30 pode ser configurado para executar todas ou quaisquer das técnicas dessa revelação, incluindo, porém não limitado aos métodos de inferir NoOutputOfPriorPicsFlag e processos relacionados descritos em maior detalhe acima e abaixo com relação às figuras 4 e 5. Como exemplo, a unidade de compensação de movimento 162 e/ou unidade intra predição 164 pode ser configurada para executar todas ou quaisquer das técnicas descritas nessa revelação. Em uma modalidade, o decodificador de vídeo 30 pode incluir opcionalmente uma unidade de predição inter-camada opcional 166 que é configurada para executar todas ou quaisquer das técnicas descritas nessa revelação. Em outras modalidades, a predição inter-camada pode ser executada pela unidade de processamento de predição 152 (por exemplo, unidade de compensação de movimento 162 e/ou unidade de intra predição 164), em cujo caso a unidade de predição inter-camada 166 pode ser omitida. Entretanto, aspectos dessa revelação não são desse modo limitados. Em alguns exemplos, as técnicas descritas nessa revelação podem ser compartilhadas entre os vários componentes do decodificador de vídeo 30. Em alguns exemplos, adicionalmente ou alternativamente, um processador (não mostrado) pode ser configurado para executar todas ou quaisquer das técnicas descritas nessa revelação.
[0111] Para fins de explicação, essa revelação descreve o decodificador de vídeo 30 no contexto de codificação HEVC. Entretanto, as técnicas dessa revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo mostrado na figura 3A é para um codec de camada única. Entretanto, como será descrito adicionalmente com relação à figura 3B, algum ou todo o decodificador de vídeo 30 pode ser duplicado para processamento de um codec de multicamada.
[0112] No exemplo da figura 3A, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem uma unidade de decodificação por entropia 150, uma unidade de processamento de predição 152, uma unidade de quantização inversa 154, uma unidade de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 159 e um buffer de imagem decodificada 160. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 162, uma unidade intra predição 164, e uma unidade de predição inter-camada 166. Em alguns exemplos, o decodificador de vídeo 30 pode executar uma passagem de decodificação genericamente recíproca à passagem de codificação descrita com relação ao codificador de vídeo 20 da figura 2A. em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou componentes funcionais diferentes.
[0113] O decodificador de vídeo 30 pode receber um fluxo de bits que compreende dados de vídeo codificados. O fluxo de bits pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 recebe o fluxo de bits, a unidade de decodificação por entropia 150 pode executar uma operação de análise no fluxo de bits. Como resultado de executar a operação de análise no fluxo de bits, a unidade de decodificação por entropia 150 pode extrair elementos de sintaxe a partir do fluxo de bits. Como parte de executar a operação de análise, a unidade de decodificação por entropia 150 pode decodificar por entropia elementos de sintaxe codificados por entropia no fluxo de bits. A unidade de processamento de predição 152, unidade de quantização inversa 154, unidade de transformada inversa 156, unidade de reconstrução 158, e unidade de filtro 159 podem executar uma operação de reconstrução que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos a partir do fluxo de bits.
[0114] Como discutido acima, o fluxo de bits pode compreender uma série de unidades NAL. As unidades NAL do fluxo de bits podem incluir unidades NAL do conjunto de parâmetro de vídeo, unidades NAL do conjunto de parâmetro de sequência, unidades NAL de conjunto de parâmetro de imagem, unidades NAL SEI e assim por diante. Como parte de executar a operação de análise no fluxo de bits, a unidade de decodificação por entropia 150 pode executar operações de análise que extraem e decodificam por entropia conjuntos de parâmetro de sequência a partir das unidades NAL de conjunto de parâmetro de sequência, conjuntos de parâmetro de imagem a partir das unidades NAL de conjunto de parâmetro de imagem, dados SEI a partir das unidades NAL SEI, e assim por diante.
[0115] Além disso, as unidades NAL do fluxo de bits podem incluir unidades NAL de fatia codificada. Como parte da execução de operação de análise no fluxo de bits, a unidade de decodificação por entropia 150 pode executar operações de análise que extraem e decodificam por entropia fatias codificadas a partir das unidades NAL de fatia codificada. Cada das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe pertinentes a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um conjunto de parâmetros de imagem associados a uma imagem que contém a fatia. A unidade de decodificação por entropia 150 pode executar operações de decodificação por entropia, como operações de decodificação CABAC, em elementos de sintaxe no cabeçalho de fatia codificada para recuperar o cabeçalho de fatia.
[0116] Como parte de extrair os dados de fatia a partir das unidades NAL de fatia codificada, a unidade de decodificação por entropia 150 pode executar operações de análise que extraem elementos de sintaxe de CUs codificadas nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados a blocos de coeficiente de transformada. A unidade de decodificação por entropia 150 pode então executar operações de decodificação CABAC em alguns dos elementos de sintaxe.
[0117] Após a unidade de decodificação por entropia 150 executar uma operação de análise em uma CU não dividida, o decodificador de vídeo 30 pode executar uma operação de reconstrução sobre a CU não dividida. Para executar a operação de reconstrução em uma CU não dividida, o decodificador de vídeo 30 pode executar uma operação de reconstrução em cada TU da CU. Por executar a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir um bloco de vídeo residual associado à CU.
[0118] Como parte de executar uma operação de reconstrução em uma TU, a unidade de quantização inversa 154 pode quantizar inverso, por exemplo, desquantizar, um bloco de coeficiente de transformada associado à TU. A unidade de quantização inversa 154 pode quantizar inverso o bloco de coeficiente de transformada em um modo similar aos processos de quantização inversa propostos para HEVC ou definidos pelo padrão de decodificação H.264. A unidade de quantização inversa 154 pode usar um parâmetro de quantização QP calculado pelo codificador de vídeo 20 para uma CU do bloco de coeficiente de transformada para determinar um grau de quantização e, de modo semelhante, um grau de quantização inversa para a unidade de quantização inversa 154 aplicar.
[0119] Após a unidade de quantização inversa 154 quantizar inverso um bloco de coeficiente de transformada, a unidade de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associada ao bloco de coeficiente de transformada. A unidade de transformada inversa 156 pode aplicar uma transformada inversa ao bloco de coeficiente de transformada para gerar o bloco de vídeo residual para a TU. Por exemplo, a unidade de transformada inversa 156 pode aplicar um DCT inverso, uma transformada de inteiro inverso, uma transformada Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa, ou outra transformada inversa ao bloco de coeficiente de transformada. Em alguns exemplos, a unidade de transformada inversa 156 pode determinar uma transformada inversa para aplicar ao bloco de coeficiente de transformada com base em sinalização a partir do codificador de vídeo 20. Em tais exemplos, a unidade de transformada inversa 156 pode determinar a transformada inversa com base em uma transformada sinalizada no nó de raiz de um quadtree para um treeblock associado ao bloco de coeficiente de transformada. Em outros exemplos, a unidade de transformada inversa 156 pode inferir a transformada inversa a partir de uma ou mais características de codificação, como tamanho de bloco, modo de codificação, ou similar. Em alguns exemplos, a unidade de transformada inversa 156 pode aplicar uma transformada inversa em cascata.
[0120] Em alguns exemplos, a unidade de compensação de movimento 162 pode refinar o bloco de vídeo predito de uma PU por executar interpolação com base em filtros de interpolação. Identificadores para filtros de interpolação a serem usados para compensação de movimento com precisão de sub-amostra podem ser incluídos nos elementos de sintaxe. A unidade de compensação de movimento 162 pode usar os mesmos filtros de interpolação usados pelo codificador de vídeo 20 durante geração do bloco de vídeo predito da PU para calcular valores interpolados para amostras de sub-inteiro de um bloco de referência. A unidade de compensação de movimento 162 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 de acordo com informações de sintaxe recebidas e usar os filtros de interpolação para produzir o bloco de vídeo predito.
[0121] Como adicionalmente discutido abaixo com referência à figura 5, a unidade de processamento de predição 152 pode codificar (por exemplo, codificar ou decodificar) a PU (ou qualquer outra camada de referência e/ou blocos de camada de aperfeiçoamento ou unidades de vídeo) por executar os métodos ilustrados na figura 5. Por exemplo, a unidade de compensação de movimento 162, unidade de intra predição 164, ou unidade de predição inter-camadas 166 pode ser configurada para executar os métodos ilustrados na figura 5, juntos ou separadamente.
[0122] Se uma PU for codificada usando intra predição, a unidade de intra predição 164 pode executar intra predição para gerar um bloco de vídeo predito para a PU. Por exemplo, a unidade de intra predição 164 pode determinar um modo intra predição para a PU com base em elementos de sintaxe no fluxo de bits. O fluxo de bits pode incluir elementos de sintaxe que a unidade intra predição 164 pode usar para determinar o modo intra predição da PU.
[0123] Em algumas instâncias, os elementos de sintaxe podem indicar que a unidade intra predição 164 é para usar o modo intra predição de outra PU para determinar o modo intra predição da PU atual. Por exemplo, pode ser provável que o modo intra predição da PU atual seja igual ao modo intra predição de uma PU vizinho. Em outras palavras, o modo intra predição da PU vizinha pode ser o modo mais provável para a PU atual. Consequentemente, nesse exemplo, o fluxo de bits pode incluir um elemento de sintaxe pequeno que indica que o modo intra predição da PU é igual ao modo intra predição da PU vizinha. A unidade intra predição 164 pode então usar o modo intra predição para gerar dados de predição (por exemplo, amostras preditas) para a PU com base nos blocos de vídeo de PUs espacialmente vizinhas.
[0124] Como discutido acima, o decodificador de vídeo 30 pode incluir também a unidade de predição inter-camada 166. A unidade de predição inter-camada 166 é configurada para prever um bloco atual (Por exemplo, um bloco atual na EL) usando uma ou mais camadas diferentes que são disponíveis em codificação de vídeo escalonável (por exemplo, uma camada de referência ou base). Tal predição pode ser mencionada como predição inter-camada. A unidade de predição inter-camada 166 utiliza métodos de predição para reduzir redundância inter-camada, desse modo melhorando a eficiência de codificação e reduzindo exigências de recursos computacionais. Alguns exemplos de predição inter-camada incluem predição intra inter-camada, predição de movimento inter-camada, e predição residual inter-camada. A predição intra inter-camada usa a reconstrução de blocos localizados em conjunto na camada de base para prever o bloco atual na camada de aperfeiçoamento. A predição de movimento inter-camada usa informações de movimento da camada base para prever movimento na camada de aperfeiçoamento. A predição residual inter-camada usa o resíduo da camada de base para prever o resíduo da camada de aperfeiçoamento. Cada dos esquemas de predição inter-camada é discutido abaixo em maior detalhe.
[0125] A unidade de reconstrução 158 pode usar os blocos de vídeo residual associados a TUs de uma CU e os blocos de vídeo predito das PUs da CU, por exemplo, dados intra-predição ou dados inter-predição, como aplicável, para reconstruir o bloco de vídeo da CU. Desse modo, o decodificador de vídeo 30 pode gerar um bloco de vídeo predito e um bloco de vídeo residual com base nos elementos de sintaxe no fluxo de bits e pode gerar um bloco de vídeo com base no bloco de vídeo predito e bloco de vídeo residual.
[0126] Após a unidade de reconstrução 158 reconstruir o bloco de vídeo da CU, a unidade de filtro 159 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio associados a CU. Após a unidade de filtro 159 executar uma operação de desbloqueio para reduzir artefatos de bloqueio associados à CU, o decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU no buffer de imagem decodificada 160. O buffer de imagem decodificada 160 pode fornecer imagens de referência para compensação de movimento subsequente, intra predição e apresentação em um dispositivo de exibição, como dispositivo de exibição 32 da figura 1A ou 1B. Por exemplo, o decodificador de vídeo 30 pode executar, com base nos blocos de vídeo no buffer de imagem decodificada 160, operações de intra predição ou inter predição em PUs de outras CU.
DECODIFICADOR DE MULTICAMADA
[0127] A figura 3B é um diagrama de blocos ilustrando um exemplo de um decodificador de vídeo de multicamada 33 (também simplesmente mencionado como decodificador de vídeo 33) que pode implementar técnicas de acordo com aspectos descritos nessa revelação. O decodificador de vídeo 33 pode ser configurado para processar quadros de vídeo de multicamada, como para SHVC e codificação de multivistas. Além disso, o decodificador de vídeo 33 pode ser configurado para executar todas ou quaisquer das técnicas dessa revelação.
[0128] O decodificador de vídeo 33 inclui um decodificador de vídeo 30A e decodificador de vídeo 30B, cada um dos quais pode ser configurado como o decodificador de vídeo 30 e pode executar as funções descritas acima com relação ao decodificador de vídeo 30. Além disso, como indicado pelo reuso de números de referência, os decodificadores de vídeo 30A e 30B podem incluir pelo menos alguns dos sistemas e subsistemas como o decodificador de vídeo 30. Embora o decodificador de vídeo 33 seja ilustrado como incluindo dois decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 não é limitado como tal e pode incluir qualquer número de camadas de decodificador de vídeo 30. Em algumas modalidades, o decodificador de vídeo 33 pode incluir um decodificador de vídeo 30 para cada imagem ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou decodificada por um decodificador de vídeo que inclui cinco camadas de decodificador. Em algumas modalidades, o decodificador de vídeo 33 pode incluir mais camadas de decodificador do que quadros em uma unidade de acesso. Em alguns desses casos, algumas das camadas de decodificador de vídeo podem ser inativas ao processar algumas unidades de acesso.
[0129] Além dos decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 pode incluir uma unidade de amostragem ascendente 92. Em algumas modalidades, a unidade de amostragem ascendente 92 pode amostrar ascendentemente uma camada de base de um quadro de vídeo recebido para criar uma camada aperfeiçoada a ser adicionada a lista de imagem de referência para o quadro ou unidade de acesso. Essa camada aperfeiçoada pode ser armazenada no buffer de imagem decodificada 160. Em algumas modalidades, a unidade de amostragem ascendente 92 pode incluir algumas ou todas as modalidades descritas com relação à unidade de reamostragem 90 da figura 2A. Em algumas modalidades, a unidade de amostragem ascendente 92 é configurada para amostrar ascendentemente uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para estar em conformidade com um conjunto de regras de limite de fatia e/ou regras de varredura raster. Em alguns casos, a unidade de amostragem ascendente 92 pode ser uma unidade de reamostragem configurada para amostrar ascendentemente e/ou amostrar descendentemente uma camada de um quadro de vídeo recebido.
[0130] A unidade de amostragem ascendente 92 pode ser configurada para receber uma imagem ou quadro (ou informação de imagem associada à imagem) a partir do buffer de imagem decodificada 160 do decodificador de camada inferior (por exemplo, o decodificador de vídeo 30A) e amostrar ascendentemente a imagem (ou a informação de imagem recebida). Essa imagem amostrada ascendente pode ser então fornecida para a unidade de processamento de predição 152 de um decodificador de camada mais elevada (por exemplo, o decodificador de vídeo 30B) configurado para decodificar uma imagem na mesma unidade de acesso que o decodificador de camada inferior. Em alguns casos, o decodificador de camada mais elevada é uma camada removida do decodificador de camada mais baixa. Em outros casos, pode haver um ou mais decodificadores de camada mais elevada entre o decodificador de vídeo de camada 0 e o decodificador de camada 1 da figura 3B.
[0131] Em alguns casos, a unidade de amostragem ascendente 92 pode ser omitida ou desviada. Em tais casos, a imagem a partir do buffer de imagem decodificada 160 do decodificador de vídeo 30A pode ser fornecida diretamente, ou pelo menos sem ser fornecida à unidade de amostragem ascendente 92, para a unidade de processamento de predição 152 do decodificador de vídeo 30B. Por exemplo, se dados de vídeo fornecidos ao decodificador de vídeo 30B e a imagem de referência a partir do buffer de imagem decodificada 160 do decodificador de vídeo 30A forem do mesmo tamanho ou resolução, a imagem de referência pode ser fornecida ao decodificador de vídeo 30B sem qualquer amostragem ascendente. Além disso, em algumas modalidades, a unidade de amostragem ascendente 92 pode ser uma unidade de reamostragem 90 configurada para amostrar ascendentemente ou amostrar descendentemente uma imagem de referência recebida a partir do buffer de imagem decodificada 160 do decodificador de vídeo 30A.
[0132] Como ilustrado na figura 3B, o decodificador de vídeo 33 pode incluir ainda um demultiplexor 99, ou demux. O demux 99 pode dividir um fluxo de bits de vídeo codificados em múltiplos fluxos de bit com cada fluxo de bit transmitido pelo demux 99 sendo fornecido a um decodificador de vídeo diferente 30A e 30B. Os múltiplos fluxos de bit podem ser criados por receber um fluxo de bit e cada dos decodificadores de vídeo 30A e 30B recebe uma porção do fluxo de bits em um dado momento. Embora em alguns casos os bits a partir do fluxo de bits recebido no demux 99 possam ser alternados um bit de cada vez entre cada dos decodificadores de vídeo (por exemplo, decodificadores de vídeo 30A e 30B no exemplo da figura 3B), em muitos casos o fluxo de bits é dividido diferentemente. Por exemplo, o fluxo de bits pode ser dividido por alternar qual decodificador de vídeo recebe o fluxo de bits um bloco de cada vez. Em outro exemplo, o fluxo de bits pode ser dividido por uma razão não de 1:1 de blocos para cada dos decodificadores de vídeo 30A e 30B. por exemplo, dois blocos podem ser fornecidos para o decodificador de vídeo 30B para cada bloco fornecido ao decodificador de vídeo 30A. Em algumas modalidades, a divisão do fluxo de bits pelo demux 99 pode ser pré- programada. Em outras modalidades, o demux 99 pode dividir o fluxo de bits com base em um sinal de controle recebido a partir de um sistema eterno ao decodificador de vídeo 33, como de um processador em um dispositivo de destino incluindo o módulo de destino 14. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um vídeo a partir da interface de entrada 28, com base em uma largura de banda do link 16, com base em uma subscrição associada a um usuário (por exemplo, uma subscrição paga versus uma subscrição gratuita), ou com base em qualquer outro fator para determinar uma resolução obtenível pelo decodificador de vídeo 33.
IMAGENS DE PONTO DE ACESSO INTRA ALEATÓRIO (IRAP)
[0133] Alguns esquemas de codificação de video podem fornecer vários pontos de acesso aleatórios por todo o fluxo de bits de modo que o fluxo de bits possa ser decodificado começando de quaisquer daqueles pontos de acesso aleatórios sem necessitar de decodificar quaisquer imagens que precedem aqueles pontos de acesso aleatórios no fluxo de bits. Por exemplo, esse pode ser o caso quando o fluxo de bits inclui uma camada única ou quando um ponto de acesso aleatório tem imagens IRAP em todas as camadas. Em tais esquemas de codificação de vídeo, todas as imagens que seguem um ponto de acesso aleatório em ordem de saída (Por exemplo, incluindo aquelas imagens que estão na mesma unidade de acesso que a imagem fornecendo o ponto de acesso aleatório) podem ser corretamente decodificadas sem usar nenhuma imagem que preceda o ponto de acesso aleatório. Por exemplo, mesmo se uma porção do fluxo de bits for perdida durante transmissão ou durante decodificação, um decodificador pode reiniciar a decodificação do fluxo de bits começando a partir do ponto de acesso aleatório seguinte. Alguns esquemas de vídeo podem fornecer pontos de acesso aleatórios de modo que a decodificação de imagens de camada de base, e adicionalmente imagens que pertencem a zero ou mais outras camadas no fluxo de bits, possam ser iniciadas a partir de quaisquer desses pontos de acesso aleatórios sem decodificar quaisquer imagens que precedem aqueles pontos de acesso aleatórios, porém nem todas as camadas podem ser corretamente decodificáveis quando a decodificação inicia naqueles pontos de acesso aleatórios. A decodificação correta de todas as camadas pode ocorrer em uma unidade de acesso subsequente. Suporte para acesso aleatório pode facilitar, por exemplo, serviços de streaming dinâmicos, operações de busca, mudança de canal, etc.
[0134] Em alguns esquemas de codificação, tais pontos de acesso aleatórios podem ser fornecidos por imagens que são mencionadas como imagens IRAP. Por exemplo, um ponto de acesso aleatório (por exemplo, fornecido por uma imagem IRAP de camada de aperfeiçoamento) em uma camada de aperfeiçoamento (“layerA”) contida em uma unidade de acesso (“auA”) pode fornecer acesso aleatório específico de camada de modo que para cada camada de referência (“layerB”) da layerA (por exemplo, uma camada de referência sendo uma camada que é usada para prever layerA) tendo um ponto de acesso aleatório contido em uma unidade de acesso (“auB”) que está na layerB e precede auA em ordem de decodificação (ou um ponto de acesso aleatório contido em auA), as imagens na layerA que seguem auA em ordem de saída (incluindo aquelas imagens localizadas em auA), são corretamente decodificáveis sem necessitar de decodificar quaisquer imagens na layerA que precedem auA quando a decodificação inicia na unidade de acesso auB ou em uma unidade de acesso que precede auB em ordem de decodificação.
[0135] Imagens IRAP podem ser codificadas usando intra predição (por exemplo, codificadas sem se referir a outras imagens), e podem incluir, por exemplo, imagens de renovação de decodificação instantânea (IDR), imagens de acesso aleatório puro (CRA), e imagens de acesso de link quebrado (BLA). Quando há uma imagem IDR no fluxo de bits, todas as imagens que precedem a imagem IDR em ordem de decodificação não são usadas para predição por imagens que seguem a imagem IDR em ordem de decodificação. Quando há uma imagem CRA no fluxo de bits, as imagens que seguem a imagem CRA podem ou não usar imagens que precede a imagem CRA em ordem de decodificação para predição. Aquelas imagens que seguem a imagem CRA em ordem de decodificação, porém usam imagens que precedem a imagem CRA em ordem de decodificação podem ser mencionadas como imagens principais puladas de acesso aleatório (RASL). Outro tipo de imagem que segue uma imagem IRAP em ordem de decodificação e precede a imagem IRAP em ordem de saída é uma imagem principal decodificável de acesso aleatório (RADL), que pode não conter referências a quaisquer imagens que precedem a imagem IRAP em ordem de decodificação. Imagens RASL podem ser descartadas pelo decodificador se as imagens que precedem as imagens CRA não estiverem disponíveis. Uma imagem BLA indica para o decodificador que imagens que precedem a imagem BLA podem não ser disponíveis para o decodificador (Por exemplo, porque dois fluxos de bits são unidos juntos e a imagem BLA é a primeira imagem do segundo fluxo de bits em ordem de decodificação). Uma unidade de acesso (por exemplo, um grupo de imagens consistindo em todas as imagens codificadas associadas ao mesmo tempo de saída através de múltiplas camadas), contendo uma imagem de camada de base (por exemplo, uma imagem tendo um valor ID de camada de 0) que é uma imagem IRAP pode ser mencionada como uma unidade de acesso IRAP.
ALINHAMENTO DE CAMADA TRANSVERSAL DE IMAGENS IRAP
[0136] Em codificação de vídeo escalonável, imagens IRAP podem não ser exigidas serem alinhadas (por exemplo, contidas na mesma unidade de acesso) através de camadas diferentes. Por exemplo, se imagens IRAP forem exigidas serem alinhadas, qualquer unidade de acesso contendo pelo menos uma imagem IRAP somente conteria imagens IRAP. Por outro lado, se imagens IRAP não foram exigidas serem alinhadas, em uma única unidade de acesso, uma imagem (Por exemplo, em uma primeira camada) pode ser uma imagem IRAP, e outra imagem (por exemplo, em uma segunda camada) pode ser uma imagem não IRAP. Ter tais imagens IRAP não alinhadas em um fluxo de bits pode fornecer algumas vantagens. Por exemplo, em um fluxo de bits de duas camadas, se houver mais imagens IRAP na camada de base do que na camada de aperfeiçoamento, em aplicações de broadcast e multicast, retardo de sintonização baixo e elevada eficiência de codificação podem ser obtidos.
[0137] Em alguns esquemas de codificação de vídeo, uma contagem de ordem de imagem (POC) pode ser usada para rastrear a ordem relativa na qual as imagens decodificadas são exibidas. Alguns de tais esquemas de codificação podem fazer com que os valores POC sejam redefinidos (por exemplo, definidos em zero ou definidos em algum valor sinalizado no fluxo de bits) sempre que certos tipos de imagens aparecem no fluxo de bits. Por exemplo, os valores POC de certas imagens IRAP podem ser definidos, fazendo com que os valores POC de outras imagens que precedem aquelas imagens IRAP em ordem de decodificação sejam também redefinidas. Isso pode ser problemático quando as imagens IRAP não são exigidas serem alinhadas através de camadas diferentes. Por exemplo, quando uma imagem (“picA”) é uma imagem IRAP e outra imagem (“picB”) na mesma unidade de acesso não é uma imagem IRAP, o valor POC de uma imagem (“picC”), que é redefinido devido a picA ser uma imagem IRAP, na camada contendo picA pode ser diferente do valor POC de uma imagem (“picA”), que não é redefinido, na camada contendo picB, onde picC e picD estão na mesma unidade de acesso. Isso faz com que picC e picD tenham valores POC diferentes embora pertençam à mesma unidade de acesso (por exemplo, mesmo tempo de saída). Desse modo, nesse exemplo, o processo de derivação para derivar os valores POC pode ser modificado para produzir valores POC que são compatíveis com a definição de valores POC e unidades de acesso.
IMAGEM DE INICIALIZAÇÃO DE CAMADA (LIP)
[0138] Em alguns esquemas de codificação, uma imagem de inicialização de camada (“imagem LIP”) pode ser definida como uma imagem que é uma imagem IRAP que tem um indicador NoRaslOutputFlag (por exemplo, um indicador que indica que imagens RASL não devem ser transmitidas se definidas em 1 e indica que imagens RASL devem ser transmitidas se definidas em 0) definido em 1 ou uma imagem que está contida em uma unidade de acesso IRAP inicial, que é uma unidade de acesso IRAP na qual a imagem de camada de base (por exemplo, uma imagem tendo um ID de camada de 0 ou ID de camada menor definido no fluxo de bits) tem o NoRaslOutputFlag definido em 1.
[0139] Em algumas modalidades, um SPS pode ser ativado em cada imagem LIP. Por exemplo, cada imagem IRAP que tem um indicador NoRaslOutputFlag definido em 1 ou cada imagem que está contida em uma unidade de acesso IRAP inicial, um novo SPS, que pode ser diferente (Por exemplo, especificando resoluções de imagem diferentes, etc.) a partir do SPS que foi anteriormente ativado. Entretanto, em um caso onde a imagem LIP não é uma imagem IRAP (por exemplo, qualquer imagem contida em uma unidade de acesso IRAP inicial) e a imagem de camada de base na unidade de acesso IRAP inicial é uma imagem IDR com um indicador NoClrasOutputFlag indicador (por exemplo, um indicador que indica que imagens de pular acesso aleatório de camada transversal não devem ser transmitidas se definidas em 1 e indica que imagens de pular acesso aleatório de camada transversal devem ser transmitidas se definidas em 0) definida em 0, a imagem LIP não deve ser permitida ativar um novo SPS. Se um novo SPS for ativado em tal imagem LIP em tal caso, particularmente quando o conteúdo do SPS RBSP do novo SPS é diferente daquele do SPS que era anteriormente ativo antes da unidade de acesso IRAP inicial, pode haver problemas em resoluções de imagem e resiliência de erro diferentes. Por exemplo, o novo SPS pode atualizar a resolução e usar predição temporal para se referir a imagens de tamanhos diferentes.
BUMPING E FLUSHING DE IMAGENS
[0140] As imagens que são decodificadas (por exemplo, de modo que possam ser exibidas ou usadas para prever outras imagens) são armazenadas em um DPB. As imagens que devem ser transmitidas podem ser marcadas como “necessárias para transmissão,” e as imagens que devem ser usadas para prever outras imagens podem ser marcadas como “usadas para referência.” Imagens decodificadas que não são marcadas como “usadas para referência” nem como “usadas para referência” (por exemplo, imagens que foram inicialmente marcadas como “usadas para referência” ou “necessárias para transmissão” porém subsequentemente marcadas como “não usadas para referência” ou “não necessárias para transmissão”) podem estar presentes no DPB até serem removidas pelo processo de decodificação. Em decodificadores que se conformam com a ordem de saída, o processo de remover imagens a partir do DPB frequentemente imediatamente segue a saída de imagens que são marcadas como “necessárias para transmissão.” Esse processo de saída e remoção subsequente pode ser mencionado como “bumping.”
[0141] Há também situações em que o decodificador pode remover as imagens no DPB sem transmissão, embora essas imagens possam ser marcadas como “necessárias para transmissão.” Para facilidade de descrição na presente invenção, imagens decodificadas que estão presentes no DPB no momento de decodificar uma imagem IRAP (independente de se as imagens decodificadas são marcadas como “necessárias para transmissão” ou “usadas para referência”) são mencionadas como “imagens DPB de retardo” associadas à imagem IRAP ou “imagens DPB de retardo associadas” da imagem IRAP. Alguns exemplos de tais situações, no contexto HEVC, são descritos abaixo.
[0142] Em um exemplo, quando uma imagem CRA com NoRasIOutputFlag igual a um valor de “1” está presente no meio de um fluxo de bits (por exemplo, não a primeira imagem no fluxo de bits), as imagens DPB de retardo associadas à imagem CRA não seriam transmitidas e seriam removidas do DPB. Tais situações são prováveis de ocorrer em pontos de junção, onde dois fluxos de bits são unidos e a primeira imagem do fluxo de bit mencionado por último é uma imagem CRA com NoRasIOutputFlag igual a um valor de “1”. Em outro exemplo, quando uma imagem IRAP picA que tem NoRasIOutputGlag igual a um valor de “1” e que não é uma imagem CRA (por exemplo, uma imagem IDR) está presente no meio de um fluxo de bits e a resolução da imagem muda em picA (por exemplo, com a ativação de um novo SPS), as imagens DPB de retardo associadas de picA podem ser removidas do DPB antes que possam ser transmitidas, porque se as imagens DPB de retardo associadas continuam a ocupar o DPB, a decodificação das imagens começando a partir de picA pode se tornar problemática, por exemplo, devido ao transbordamento de buffer. Nesse caso, o valor de no_output_of_prior_pics_flag (por exemplo, um indicador que indica que imagens que foram anteriormente decodificadas e armazenadas no DPB devem ser removidas do DPB sem serem transmitidas se definidas em 1, e indica que imagens que foram anteriormente decodificadas e armazenadas no DPB não devem ser removidas do DPB sem serem transmitidas se definidas em 0) associadas a picA devem ser definidas iguais a um valor de “1” pelo codificador ou meio de junção, ou NoOutputOfPriorPicsFlag (por exemplo, um valor derivado que pode ser determinado com base nas informações incluídas no fluxo de bits) podem ser derivadas para serem iguais a um valor de “1” pelo decodificador, para nivelar as imagens de retardo sem transmissão fora do DPB. A operação de junção é descrita adicionalmente abaixo com relação à figura 4.
[0143] Esse processo de remover imagens DPB de retardo associadas a partir do DPB sem transmissão pode ser mencionado como “flushing”. Mesmo em situações não descritas acima, uma imagem IRAP pode especificar o valor de no_output_of_prior_pics_flag igual a um valor de “1”, de modo que o decodificador descarregará as imagens de retardo DPB associadas da imagem IRAP.
FLUXO DE BITS INCLUINDO UM PONTO DE JUNÇÃO
[0144] Com referência à figura 4, um fluxo de bits de exemplo tendo um ponto de junção será descrito. A figura 4 mostra um fluxo de bits de multicamada 400 criado por unir fluxos de bits 410 e 420. O fluxo de bits 410 inclui uma camada de aperfeiçoamento (EL) 410A e uma camada de base (BL) 410B, e o fluxo de bits 420 inclui uma EL 420A e uma BL 420B. A EL 410A inclui uma imagem EL 412A, e a BL 410B inclui uma imagem BL 412B. A EL 420A inclui imagens EL 422A, 424A, e 426A, e a BL 420B inclui imagens BL 422B, 424B e 426B. O fluxo de bits de multicamada 400 inclui ainda unidades de acesso (AUs) 430-460. A AU 430 inclui a imagem EL 412A, e a imagem BL 412B, a AU 440 inclui a imagem EL 422A e a imagem BL 422B, a AU 450 inclui a imagem EL 412A e a imagem BL 424B, e a AU 460 inclui a imagem EL 426A e a imagem BL 426B. No exemplo da figura 4, a imagem BL 422B é uma imagem IRAP, e a imagem EL correspondente 422A na AU 440 é uma imagem posterior (por exemplo, uma imagem não IRAP) e consequentemente, a AU 440 é uma AU IRAP não alinhada. Também deve ser observado que a AU 440 é uma unidade de acesso que imediatamente segue um ponto de junção 470.
[0145] Embora o exemplo da figura 4 ilustre um caso em que dois fluxos de bits diferentes são unidos, em algumas modalidades, um ponto de junção pode estar presente quando uma porção do fluxo de bits é removida. Por exemplo, um fluxo de bits pode ter porções A, B e C, a porção B estando entre as porções A e C. se a porção B for removida do fluxo de bits, as porções restantes A e C podem ser unidas, e o ponto no qual são unidas pode ser mencionado como ponto de junção. Mais genericamente, um ponto de junção como discutido no presente pedido pode ser considerado como estando presente quando um ou mais parâmetros ou indicadores sinalizados ou derivados têm valores predeterminados. Por exemplo, sem receber uma indicação específica de que um ponto de junção existe em um local específico, um decodificador pode determinar o valor de um indicador (por exemplo, NoClrasOutputFlag), e executar uma ou mais técnicas descritas nesse pedido com base no valor do indicador.
FLUSHING DE IMAGENS EM CONTEXTO DE MULTICAMADA
[0146] O processo de flushing imagens também é relevante em fluxos de bits de multicamada. Mais especificamente, é relevante para todas as imagens que pertencem a uma unidade de acesso IRAP inicial, e também a imagens IRAP que não estão em uma unidade de acesso IRAP inicial. Como descrito acima, em algumas implementações existentes como SHVC e MV-HEVC, uma unidade de acesso IRAP pode ser definida como uma unidade de acesso contendo uma imagem IRAP que tem nuh_layer_id igual a um valor de “0” (independente de se outras imagens na unidade de acesso são imagens IRAP), e uma unidade de acesso IRAP inicial pode ser definida como uma unidade de acesso contendo uma imagem IRAP que tem nuh_layer_id igual a um valor de “0” e que tem NoRasIOutputFlag igual a um valor de “1” (novamente independente de se outras imagens na unidade de acesso são imagens IRAP).
[0147] Com a possibilidade de ter imagens IRAP não alinhadas em unidades de acesso (Por exemplo, uma unidade de acesso pode conter tanto imagens IRAP como imagens não IRAP) em SHVC e MV-HEVC, as situações descritas na seção anterior no contexto de HEVC podem ocorrer em camadas diferentes de um fluxo de bits SHVC/MV-HEVC. Por exemplo, uma imagem CRA picA que tem NoRasOutputFlag igual a um valor de “1” pode estar presente em uma camada de aperfeiçoamento no meio de um fluxo de bits (por exemplo, não na primeira unidade de acesso do fluxo de bits) que inicia com uma unidade de acesso IRAP inicial que não tem uma imagem CRA na mesma camada que picA. Também, a mudança de resolução de uma imagem pode ocorrer em imagens IRAP em uma camada de aperfeiçoamento em uma unidade de acesso onde a resolução da camada de base não muda, ou vice-versa. Situações similares podem originar para tamanhos DPB diferentes.
FLUSHING DE IMAGENS EM SVC E MVC
[0148] Devido ao design de codificação de loop único de SVC, somente uma imagem reconstruída por unidade de acesso é inserida no DPB, exceto para casos quando a denominada escalabilidade granular média (MGS) está em uso (em cujo caso, pode haver duas imagens decodificadas a partir das denominadas unidades de acesso de imagem principal que são armazenadas no DPB). Entretanto, em cada unidade de acesso somente a imagem decodificada da camada mais elevada pode ser transmitida. Operações para gerenciar o DPB, incluindo o flushing das imagens, portanto, somente se referem a imagens na camada mais elevada, principalmente porque uma imagem decodificada de uma camada de base não é exigida estar presente no DPB para prever a camada de aperfeiçoamento.
[0149] Em MVC, mais de uma vista pode ser vista de saída alvo, e componentes de vista decodificada necessitam ser mantidos para prever componentes de vista em outra camada, mesmo se não foram necessárias para prever componentes de vista na mesma camada. Portanto, componentes de vista a partir de mais de uma vista podem estar presentes no DPB. O indicador no_output_of_prior_pics_flag é sinalizado para cada componente de vista IDR (por exemplo, um componente de vista IDR de uma vista não base é sinalizado com non_idr_flag igual a um valor de “0”) e o flushing de componentes de vista é específico de camada (ou específico de vistas). Em MVC, para simplicidade, os componentes de vista IDR em uma unidade de acesso em MVC são alinhados. Por exemplo, se um componente de vista em uma unidade de acesso for um componente de vista IDR, todos os componentes de vista naquela unidade de acesso são também componentes de vista IDR. Consequentemente, a operação flushing também é executada através de todas as vistas no fluxo de bits, embora a operação possa ser específica de camada/vista.
CONFORMIDADE DE TEMPORIZAÇÃO DE SAÍDA
[0150] Em algumas implementações (por exemplo, SHVC, MV-HEVC, etc.), como Minuta de Trabalho MV-HEVC (WD) 7, a transmissão e remoção de imagens a partir do DPB para conformidade de temporização de saída são realizadas como descrito abaixo. Conceitos similares ou iguais podem se aplicar a SHVC, e foram refletidos ou devem ser refletidos em Minutas de trabalho de SHVC subsequente à Minuta de trabalho 5. C.3.2 REMOÇÃO DE IMAGENS A PARTIR DO DPB Quando a imagem atual não é imagem 0 na camada atual, a remoção de imagens na camada atual, com nuh_layer_id igual a currLayerId, a partir do DPB antes da decodificação da imagem atual, isto é, imagem n, porém após analisar o cabeçalho de fatia da primeira fatia da imagem atual, ocorre instantaneamente no tempo de remoção de CPB da primeira unidade de decodificação da imagem atual e prossegue como a seguir: - o processo de decodificação para RPS como especificado na sub-cláusula 8.3.1. é invocado. - quando a imagem atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, ou a imagem de camada de base na unidade de acesso atual é uma imagem IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag é igual a 1, as seguintes etapas ordenadas são aplicadas: - . A variável NoOutputOfPriorPicsFlag é derivada para o decodificador em teste como a seguir: - se a imagem atual for uma imagem CRA com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag). - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 e o valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid] derivado do SPS ativo para a camada atual for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid], respectivamente, derivado do SPS que era ativo para a camada atual ao decodificar a imagem precedente na camada atual, NoOutputOfPriorPicsFlag pode (porém não deve) ser definida em 1 pelo decodificador em teste, independente do valor de no_output_of_prior_pics_flag. NOTA - embora a definição de NoOutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador em teste é permitido definir NoOutputOfPriorPicsFlag em 1 nesse caso. - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a no_output_of_prior_pics_flag. - de outro modo (a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a 1, a imagem de camada base na unidade de acesso atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, e NoClrasOutputFlag é igual a 1), NoOutputofPriorPicsFlag é definido igual a 1. - . O valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste é aplicado para o HRD, de modo que quando o valor de NoOutputOfPriorPicsFlag é igual a 1, todos os buffers de armazenagem de imagem que contêm imagens com nuh_layer_id igual a currLayerId no sub-DPB são esvaziados sem transmissão das imagens que contêm, e a plenitude de DPB é diminuída pelo número de buffers de armazenagem de imagem que foram esvaziados. - quando ambas as seguintes condições são verdadeiras para quaisquer imagens k no DPB, todas essas imagens k no DPB são removidas do DPB: - imagem k é marcada como “não usada para referência” - imagem k tem PicOutputFlag igual a 0 ou seu tempo de saída DPB é menor ou igual ao tempo de remoção de CPB da primeira unidade de decodificação (indicada como unidade de decodificação m) da imagem atual n; isto é, DpbOutputTime[k] é menor ou igual a CpbRemovalTime(m). - para cada imagem que é removida do DPB, a plenitude de DPB é diminuída em um. Tabela 1 - Conformidade de temporização de saída em MV-HEVC WD 7
CONFORMIDADE DE ORDEM DE TRANSMISSÃO
[0151] Em algumas implementações (por exemplo, SHVC, MV-HEVC, etc.), a transmissão e remoção de imagens a partir do DPB para conformidade de ordem de transmissão são realizadas como descrito abaixo. No exemplo abaixo, a remoção de imagens, quando invocada, é específica de camada. C.5.2.2 TRANSMISSÃO REMOÇÃO DE IMAGENS A PARTIR DE DPB Quando a imagem atual não é imagem 0 na camada atual, a transmissão e remoção de imagens na camada atual, com nuh_layer_id igual a currLayerId, a partir do DPB antes da decodificação da imagem atual, isto é, imagem n, porém após analisar o cabeçalho de fatia da primeira fatia da imagem atual e antes da invocação do processo de decodificação para contagem de ordem de imagem, ocorre instantaneamente quando a primeira unidade de decodificação da imagem atual é removida do CPB e prossegue como a seguir: - quando a imagem atual é uma imagem de redefinição de POC, todas as imagens do DPB que não pertencem à unidade de acesso atual e que são marcadas como “necessárias para transmissão” são transmitidas, começando com as imagens com o menor valor de PicOrderCntVal de todas as imagens excluindo aquelas na unidade de acesso atual no DPB, em ordem ascendente dos valores PicOrderCntVal, e imagens com o mesmo valor de PicOrderCntVal são transmitidas em ordem ascendente dos valores de nuh_layer_id. Quando uma imagem é transmitida, é cortada usando a janela de corte de conformidade especificada no SPS ativo para a imagem, a imagem cortada é transmitida, e a imagem é marcada como “não necessária para transmissão”. - os processos de decodificação para contagem de ordem de imagem e RPS são invocados. Ao decodificar um CVS se conformando a um ou mais dos perfis especificados no Anexo A usando o processo de decodificação especificado nas cláusulas 2 até 10, os processos de decodificação para contagem de ordem de imagem e RPS que sã invocados são como especificados em sub-cláusulas 8.3.1 e 8.3.2, respectivamente. Ao decodificar um CVS se conformando a um ou mais dos perfis especificados no Anexo G ou H usando o processo de decodificação especificado no Anexo F, e anexo G ou H, os processos de decodificação para contagem de ordem de imagem e RPS que são invocados são como especificado em sub-cláusulas F.8.3.1 e F.8.3.2, respectivamente. - se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, ou a imagem de camada de base na unidade de acesso atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag for igual a 1, as seguintes etapas ordenadas são aplicadas: 1. a variável NoOutputOfPriorPicsFlag é derivada para o decodificador em teste como a seguir: - se a imagem atual for uma imagem CRA com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag). - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 e o valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid] derivado do SPS ativo para a camada atual for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid], respectivamente derivado do SPS que era ativo para a camada atual ao decodificar a imagem precedente na camada atual, NoOutputOfPriorPicsFlag pode (porém não deve) ser definido em 1 pelo decodificador em teste, independente do valor de no_output_of_prior_pics_flag. NOTA - embora a definição de NoOutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador em teste é permitido definir NoOutputOfPriorPicsFlag em 1 nesse caso. - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a no_output_of_prior_pics_flag. - de outro modo (a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a 1, a imagem de camada base na unidade de acesso atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, e NoClrasOutputFlag é igual a 1), NoOutputofPriorPicsFlag é definido igual a 1. 2. O valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste é aplicado para o HRD como a seguir: - se NoOutputOfPriorPicsFlag for igual a 1, todos os buffers de armazenagem de imagem que contêm imagens com nuh_layer_id igual a currLayerId no sub-DPB são esvaziados sem transmissão das imagens que contêm, e a plenitude de sub-DPB é diminuída pelo número de buffers de armazenagem de imagem que foram esvaziados. - de outro modo (NoOutputOfPriorPicsFlag é igual a 0), todos os buffers de armazenagem de imagem contendo uma imagem que é marcada como “não necessário para transmissão” e “não usado para referência” são esvaziados (sem transmissão), e todos os buffers de armazenagem de imagem não vazios que contêm imagens com nuh_layer_id igual a currLayerId no sub-DPB são transmitidos por invocar repetidamente o processo de “bumping” especificado na sub- cláusula C.5.2.4 até que todas essas imagens sejam marcadas como “não necessárias para transmissão”, todas as imagens que têm nuh_layer_id igual a currLayerId no sub-DPB são esvaziadas, e a plenitude sub-DPB é diminuída pelo número de buffers de armazenagem de imagem esvaziados. Tabela 2 - Conformidade de ordem de transmissão em MV-HEVC WD 7
SINALIZAÇÃO DE INDICADOR INDICANDO TRANSMISSÃO DE IMAGENS ANTERIORES
[0152] Em algumas modalidades, a variável NoOutputOfPriorPicsFlag (por exemplo, um valor derivado pelo decodificador para determinar, ao decodificar uma imagem IRAP, se deve transmitir ou não as imagens no DPB antes do DPB ser flushed) é derivada com base em no_output_of_prior_pics_flag e outras condições. Por exemplo, no_output_of_prior_pics_flag pode ser um valor que seja sinalizado no fluxo de bits, ao passo que NoOutputOfPriorPicsFlag pode ser um valor derivado por um codificador com base nas informações incluídas no fluxo de bits. Um decodificador pode derivar o valor de NoOutputOfPriorPicsFlag com base no valor de no_output_of_prior_pics_flag e outras condições, e então usar o valor derivado de NoOutputOfPriorPicsFlag para determinar se deve transmitir imagens ou não. Em algumas modalidades, o indicador NoOutputOfPriorPicsFlag pode indicar se a unidade de acesso atual compreende um ponto de junção, no qual dois fluxos de bit diferentes são costurados juntos.
[0153] Em algumas modalidades NoCIRasOutputFlag e NoRaslOutputFlag podem ser variáveis derivadas com base nas informações incluídas no fluxo de bits. Por exemplo, NoRaslOutputFlag pode ser derivado para cada imagem IRAP (por exemplo, em BL e/ou EL) e NoCIRasOutputFlag pode ser derivado somente para as imagens de camada mais baixa (por exemplo, imagens BL). O valor de cada NoCIRasOutputFlag e NoRaslOutputFlag pode indicar que algumas imagens no fluxo de bits pode não ser corretamente decodificável devido a não disponibilidade de certas imagens de referência. Tal indisponibilidade de imagens de referência pode ocorrer em pontos de acesso aleatórios. Imagens de pular acesso aleatório de camada transversal (CL-RAS) são, em alguns modos, a multicamada equivalente de imagens RASL. Se um decodificador começa a decodificar um fluxo de bits em um ponto de acesso aleatório (por exemplo, uma unidade de acesso tendo uma imagem IRAP BL) e a imagem EL na unidade de acesso não é uma imagem IRAP, então aquela imagem EL é uma imagem CL-RAS. Todas as imagens na EL podem ser imagens CL-RAS (por exemplo, decodificáveis, porém não corretamente decodificáveis) até que uma imagem IRAP ocorra na EL. Quando tal imagem EL IRAP é fornecida no fluxo de bits, pode-se dizer que a EL foi inicializada.
[0154] Por exemplo, no exemplo da figura 4, a imagem EL 422A pode ser uma imagem LIP que não é uma imagem IRAP, e a imagem BL 422B pode ser uma imagem IRAP que tem um indicador NoCIRasOutputFlag associado à mesma. Nesse exemplo, o valor de NoOutputOfPriorPicsFlag associado à imagem EL 422A pode ser inferido com base no valor de NoCIRasOutputFlag associado à imagem BL 422B. Por exemplo, se NoCIRasOutputFlag for igual a um valor de “1”, NoOutputOfPriorPicsFlag para a imagem EL 422A pode ser também definido em um valor de “1”, fazendo com que as imagens no DPB não sejam transmitidas antes de serem removidas do DPB. Por outro lado, se NoCIRasOutputFlag for igual a um valor de “0”, NoOutputOfPriorPicsFlag para a imagem EL 422A pode ser também definido em um valor de “0”, fazendo com que as imagens no DPB sejam removidas do DPB após transmissão.
FLUSHING APERFEIÇOADO DE IMAGENS E INFERÊNCIA DE PARÂMETRO DE DPB PARA FLUXOS DE BITS DE MULTICAMADA
[0155] Imagens IRAP podem fornecer pontos de acesso aleatórios para decodificar um fluxo de bits. Um decodificador pode começar a decodificação de um fluxo de bits por decodificar uma imagem IRAP sem ter de decodificar imagens que precedem a imagem IRAP. No momento de decodificar uma imagem IRAP, o DPB pode ter um número de imagens decodificadas no buffer. Se a transmissão das imagens existentes no DPB afetasse o desempenho do decodificador (por exemplo, imagens em demasia existem no DPB para o decodificador transmitir, a transmissão de todas as imagens pode resultar em uma taxa de quadro irregular, etc.), pode ser desejável remover tais imagens existentes sem transmitir as mesmas (por exemplo, flush as imagens existentes).
[0156] A variável NoOutputOfPriorPicsFlag pode indicar, ao decodificar uma imagem IRAP, se imagens no DPB devem ser transmitidas antes de serem removidas do DPB. Por exemplo, ao decodificar uma imagem IRAP, o valor de NoOutputOfPriorPicsFlag pode ser definido em 1 quando as imagens no DPB não devem ser transmitidas antes de serem removidas. O valor de NoOutputOfPriorPicsFlag pode ser determinado com base em um elemento de sintaxe correspondente e/ou várias condições e informação. Por exemplo, o valor de NoOutputOfPriorPicsFlag pode ser determinado com base pelo menos na variável NoRaslOutputFlag e/ou a variável NoClrasOutputFlag. A variável NoRaslOoutputFlag pode indicar se uma nova sequência de vídeo codificada (CVS) começa na unidade de acesso atual. A variável NoClrasOutpoutFlag pode indicar se um limite de predição existe, por exemplo, através de todas as camadas, na unidade de acesso atual.
[0157] Em desenvolvimentos de versões anteriores, e/ou discussões de SHVC e MV-HEVC (por exemplo, Minuta de trabalho 7 de MV-HEVC e também a ser refletido em Minutas de trabalho de SHVC subsequente à Minuta de trabalho 5), o processo de flushing é invocado para cada camada quando múltiplas camadas ou múltiplas vistas existem em um fluxo de bits. Por exemplo, quando uma unidade de acesso auA em um fluxo de bits tem uma imagem de camada de base que é uma imagem IRAP com NoRaslOutputFlag igual a 1 e tem NoCIRasOuotputFlag igual a 1, o valor respectivo de NoOutputOfPriorPicsFlag para a imagem IRAP na camada de base e para as imagens de camada de aperfeiçoamento são derivadas. as imagens que precedem a unidade de acesso auA em ordem de decodificação são então flushed. durante esse processo, as imagens podem ser transmitidas com base no valor de NoOutputOfPriorPicsFlag derivado para a camada respectiva. Se a unidade de acesso auA não tiver imagens que pertencem a uma camada na lista de camadas a serem decodificadas (por exemplo, TargetDecLayerIdList), então as imagens que precedem a unidade de acesso auA em ordem de decodificação não seriam flushed embora sejam marcadas como “não usadas para referência.” Isso é porque flushing pode ser disparado somente quando há uma imagem na AU atual para uma camada específica. Essas imagens lentas podem terminar usando a memória DPB e podem resultar em transbordamento de buffer ao decodificar imagens subsequentes.
[0158] Para tratar desses e de outros desafios, as técnicas de acordo com certos aspectos podem fornecer vários modos e/ou modalidades para flushing adequadamente imagens nos DPBs de camadas diferentes mesmo quando uma AU pode não incluir uma imagem em uma camada específica. Por exemplo, flushing de DPBs para todas as camadas pode ser disparado com base em se a imagem de camada de base atende certas condições. Em um exemplo, flushing de DPBs para todas as camadas pode ser disparado quando a imagem de camada de base é uma imagem IRAP que inicia um novo CVS (por exemplo, NoRaslOutputFlag = 1), ativa um novo VPS, ou define um limite de predição (por exemplo, NoCIRasOutputFlag = 1). Por disparar flushing de todas as camadas com base na imagem de camada de base, as técnicas podem invocar flushing para todas as camadas em uma AU mesmo se uma camada específica naquela AU não tiver uma imagem.
[0159] Além disso, em versões anteriores de SHVC e MV-HEVC (por exemplo, Minuta de trabalho 5 de SHVC e Minuta de trabalho 7 de MV-HEVC), qualquer fluxo de bits HEVC ou qualquer fluxo de bits SHVC/MV-HEVC estaria em conformidade com um ou mais perfis no Anexo A e um ou mais perfis no Anexo G ou H. por exemplo, um fluxo de bits HEVC se conformaria com um perfil no Anexo A. Um fluxo de bits SHVC/MV-HEVC genericamente também se conforma ao anexo A para compatibilidade para trás. Além disso, mesmo o próprio fluxo de bits SHVC/MV-HEVC pode se conformar com um perfil no Anexo A. Por conseguinte, quando fluxos de bits são decodificados usando esses Anexos no padrão, os parâmetros DPB a serem usados são ambíguos ou indisponíveis. Além disso, os parâmetros DPB sinalizados na extensão VPS não são sinalizados nem inferidos para o 0° conjunto de camada de transmissão onde o conjunto de camadas compreende somente a camada de base e somente as imagens de camada de base são transmitidas.
[0160] Para tratar desses e de outros desafios, as técnicas de acordo com certos aspectos podem definir vários atributos no SPS ativo da camada de base como sendo iguais aos valores máximos correspondentes permitidos para os vários atributos. Por exemplo, o SPS pode incluir vários parâmetros DPB, como MaxLayerDecPicBuffMinus1, MaxNumReorderPics, MaxLatencyIncreasePlus1, MaxLatencyPictures, e MaxDecPicBufferingMinus 1. Ou os valores máximos para vários atributos são definidos iguais aos valores dos vários atributos do SPS ativo. Por definir os valores dos vários atributos do SPS ativo iguais aos valores máximos permitidos para os vários atributos, as técnicas podem reduzir ou eliminar a ambiguidade em ou indisponibilidade de parâmetros DPB a serem aplicados.
[0161] Certos detalhes referentes a flushing de imagem e inferência de parâmetro DPB, para fluxos de bits de multicamada são explicados adicionalmente abaixo. Vários termos usados em toda essa revelação são termos amplos tendo seu significado comum. Além disso, em algumas modalidades, certos termos se referem aos seguintes conceitos de vídeo. Uma sequência de vídeo codificada pode se referir a uma sequência de unidades de acesso que incluem, em ordem de decodificação, uma unidade de acesso IRAP inicial, seguida por zero ou mais unidades de acesso que não são unidades de acesso IRAP iniciais, incluindo todas as unidades de acesso subsequentes até, porém não incluindo qualquer unidade de acesso subsequente que seja uma unidade de acesso IRAP inicial. Um limite de predição pode se referir a uma imagem (Por exemplo, picA) para a qual qualquer imagem que sucede a imagem (picA) em ordem de decodificação, inclusive, não se refere a qualquer imagem que precede a imagem (picA) em ordem de decodificação, ou para a qual imagens precedendo a imagem (picA) em ordem de decodificação são indisponíveis. De acordo com certos aspectos, definir um limite de predição na AU atual pode se referir à definição de um limite de predição através de todas as camadas na AU atual. Por exemplo, se uma imagem IRAP em uma camada de referência definir um limite de predição na AU atual, a imagem IRAP de camada de referência define um limite de predição através de todas as camadas na AU, e imagens na AU atual podem não se referir a quaisquer imagens antes da AU atual. Em certos casos, um ponto de junção pode ser um exemplo de um limite de predição. Meios externos podem se referir a qualquer aparelho ou entidade que não seja parte de um codificador ou decodificador porém interage com o codificador ou decodificador, por exemplo, através de uma interface de programação de aplicativo (API). Em certas modalidades, meios externos também podem ser mencionados como um aparelho externo.
FLUSHING DE IMAGEM PARA FLUXOS DE BITS DE MULTICAMADA
[0162] As técnicas de acordo com certos aspectos podem fornecer várias modalidades de flushing de imagem para uma imagem IRAP como descrito. Todas as modalidades descritas nessa revelação podem ser implementadas separadamente, ou em combinação entre si. Sinalização adicional pode ser incluída em vários conjuntos de parâmetros no fluxo de bits incluindo, porém não limitar a, VPS de vídeo, SPS e PPS, e podem ser também incluídos em cabeçalhos de fatia ou mensagens SEI, e podem mesmo ser especificados por meios externos. MODALIDADE 1 . quando a imagem IRAP de camada de base com NoRaslOutputFlag igual a 1 ativa um novo VPS ou tem NoClrasOutputFlag igual a 1, o processo de remoção de imagem durante operação de flushing é aplicado em todas as camadas. Quando a imagem IRAP de camada de base com NoRaslOutputFlag igual a um primeiro valor (por exemplo, 0 ou 1) e não ativa um novo VPS e tem NoClrasOutputFlag igual a 0, o processo de remoção de imagem durante operação de flushing é somente aplicado às imagens de camada de base.
[0163] Nessa modalidade, quando a imagem IRAP de camada de base que começa um novo CVS ativa um novo VPS ou define um limite de predição na AU atual, o processo de remoção de imagem durante operação de flushing é aplicado em todas as camadas. Quando a imagem IRAP de camada de base que começa um novo CVS não ativa um novo VPS e não define um limite de predição na AU atual, o processo de remoção de imagem durante operação de flushing é somente aplicado às imagens de camada de base.
[0164] Desse modo, flushing do DPB é disparado para todas as camadas com base na imagem IRAP de camada de base e valores das variáveis associadas à imagem IRAP de camada de base, como NoRaslOutputFlag e NoClrasOutputFlag, em vez de ser disparado para cada camada separadamente. Na abordagem anterior, flushing foi disparado com base na presença de uma imagem em uma camada específica. A remoção de imagem e a transmissão de imagem podem ser tratadas separadamente, o que pode simplificar o processo de flushing. MODALIDADE 2 . Os processos relacionados a NoOutputOfPriorPicsFlag são definidos para a camada mais baixa no fluxo de bits, e o valor de NoOutputOfPriorPicsFlag pode ser externamente fornecido ao decodificador ou derivado. - por exemplo, a Modalidade 1 pode ser alterada para indicar: “Quando a imagem IRAP de camada mais baixa com NoRaslOutputFlag igual a 1 ativa um novo VPS ou tem NoClrasOutputFlag igual a 1, o processo de remoção de imagem durante operação de flushing é aplicado em todas as camadas. Quando a imagem IRAP de camada mais baixa com NoRaslOutputFlag igual a um primeiro valor (por exemplo, 0 ou 1) e não ativa um novo VPS e tem NoClrasOutputFlag igual a 0, o processo de remoção de imagem durante operação de flushing é somente aplicado às imagens de camada mais baixa.
[0165] Essa modalidade pode ser implementada em combinação com a Modalidade 1 acima. A modalidade 1 é explicada acima com referência a uma imagem IRAP de camada de base, porém a Modalidade 2 pode estender a técnica da Modalidade 1 até a camada mais baixa que pode não ser a camada de base. A camada mais baixa pode se referir a uma camada que tem o ID de camada mais baixa na AU atual. A variável nuh_layer_id pode indicar o ID de camada de uma camada. Por exemplo, o ID de camada de uma camada de base é 0. Em um fluxo de bits que não tem imagem de camada de base (camada 0), porém tem imagens de camada 1 e camada 2, o processo de flushing de imagem é disparado com base na camada 1 uma vez que tem o ID de camada mais baixa diferente de 0 e, portanto, é a camada mais baixa.
[0166] Essa modalidade pode acomodar cenários nos quais a AU atual não tem uma imagem de camada de base, porém tem imagens em outras camadas. Tais casos poderiam ocorrer quando as imagens decodificadas de camada de base são externamente fornecidas, quando a camada de base pode ser decodificada usando um codec diferente ou padrão, ou quando a camada mais baixa no fluxo de bits é uma camada independentemente decodificável. Por conseguinte, o processo de flushing pode ser mais flexível e suportar tipos diferentes de fluxos de bits e cenários de junção. Em certas modalidades, o valor de NoOutputOfPriorPicsFlag é fornecido por meio externo ou um aparelho externo. Por exemplo, o meio externo ou aparelho externo pode decodificar a camada de base e determinar o valor de NoOutputOfPriorPicsFlag. MODALIDADE 3 . NoOutputOfPriorPicsFlag não é derivado para imagens que têm nuh_layer_id maior que 0. - alternativamente, NoOutputOfPriorPicsFlag não é derivado para imagens que pertencem a qualquer camada dependente, e NoOutputOfPriorPicsFlag é derivado para imagens que pertencem a camadas independentes. Um
[0167] Nessa modalidade, o valor de NoOutputOfPriorPicsFlag não é derivado para imagens que têm ID de camada maior que 0 (por exemplo, a camada de base). Por exemplo, o valor de NoOutputOfPriorPicsFlag é derivado somente para imagens na camada de base. Em muitos casos, a camada de base (Por exemplo, a camada com nuh_layer_id igual a 0) é uma camada na qual todas as outras camadas são dependentes. Em tais casos, a decisão de derivar o valor de NoOutputOfPriorPicsFlag para camadas com nuh_layer_id maior que 0 pode não ser útil uma vez que operações de transmissão ou não transmissão associadas àquela unidade de acesso teriam de ser realizadas quando NoOutputOfPriorPicsFlag foi derivado para a camada de base. Não derivar o valor de NoOutputOfPriorPicsFlag para camadas com nuh_layer_id maior que 0 pode reduzir operações de decodificador.
[0168] Ou NoOutputOfPriorPicsFlag não é derivado para imagens que são de uma camada dependente. NoOutputOfPriorPicsFlag é derivado para imagens que são de uma camada independente. Uma camada dependente pode se referir a uma camada contendo uma imagem que pode usar uma imagem de outra camada para referência. Em alguns casos, camadas dependentes podem ser aquelas camadas que são indicadas com base nas informações de dependência de camadas sinalizadas no VPS. Uma camada independente pode se referir a uma camada que pode não usar imagem de outra camada para referência. MODALIDADE 4 . quando uma unidade de acesso auA contém uma imagem de camada de base que é IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag igual a 1, todas as imagens no DPB que precedem, em ordem de decodificação, esse auA são dependentes de transmissão no valor de NoOutputOfPriorPicsFlag da imagem de camada de base em auA, e então flushed do DPB.
[0169] Nessa modalidade, quando a imagem IRAP de camada de base na AU atual começa um novo CVS e define um limite de predição na AU atual, todas as imagens no DPB que precedem a AU atual em ordem de decodificação são transmitidas com base no valor de NoOutputOfPriorPicsFlag da imagem IRAP de camada de base, então flushed a partir do DPB. Por tomar a decisão de transmissão de qualquer camada com base no valor de NoOutputOfPriorPicsFlag na imagem IRAP de camada de base quando a AU atual começa um novo CVS e define um limite de predição na AU atual, imagens que precedem a AU atual em todas as camadas podem ser processadas (por exemplo, transmitidas ou não transmitidas) mesmo se a AU atual não tiver uma imagem na camada específica. MODALIDADE 5 . Todas as imagens que são marcadas como “necessárias para transmissão” precedendo uma imagem IRAP na camada de base que tem NoRaslOutputFlag igual a 1 são transmitidas se o valor de NoOutputOfPriorPicsFlag for igual a 0 em decodificadores em conformação com ordem de transmissão.
[0170] Nessa modalidade, quando a imagem IRAP de camada de base define um limite de predição na AU atual, todas as imagens que são marcadas como “necessárias para transmissão” que precedem a imagem IRAP de camada de base são transmitidas se o valor de NoOutputOfPriorPicsFlag for igual a 0 (Por exemplo, imagens anteriores devem ser transmitidas). Essa modalidade se aplica a decodificadores em conformação com ordem de transmissão, porém pode ser também estendida a outros tipos de decodificadores, como decodificadores em conformação com tempo de transmissão. As vantagens dessa modalidade podem ser similares àquelas das modalidades acima. MODALIDADE 6 . quando uma unidade de acesso auA contém uma imagem de camada de base que é IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag igual a 1, todas as imagens no DPB que precedem, em ordem de decodificação, essa auA são flushed sem transmissão.
[0171] Nessa modalidade, quando uma imagem IRAP de camada de base começa na AU atual um novo CVS e define um limite de predição, todas as imagens no DPB que precedem a AU atual são flushed sem transmissão. As vantagens dessa modalidade podem ser similares àquelas das modalidades acima. MODALIDADE 7 . Quando uma unidade de acesso (AU) contém uma imagem de camada de base que é IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag igual a 1, todas as imagens nas camadas de aperfeiçoamento no DPB que precedem, em ordem de decodificação, essa AU são flushed sem transmissão, e as imagens na camada de base que precedem, em ordem de decodificação, a unidade de acesso são primeiramente dependentes de transmissão no valor de NoOutputOfPriorPicsFlag da imagem de camada de base e então flushed.
[0172] Nessa modalidade, quando a imagem IRAP de camada de base na AU atual começa um novo CVS e define um limite de predição, todas as imagens nas camadas de aperfeiçoamento no DPB que precedem a AU atual em ordem de decodificação são removidas sem transmissão, e as imagens na camada de base que precedem a AU atual em ordem de decodificação são transmitidas com base no valor de NoOutputOfPriorPicsFlag e então removidas. MODALIDADE 8 . quando uma unidade de acesso (AU) auA contém uma imagem de camada de base que é IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag igual a 1, todas as imagens que precedem, em ordem de decodificação, essa AU e estão contidas nas camadas de aperfeiçoamento que não têm uma imagem na unidade de acesso auA são flushed sem transmissão, e as imagens que precedem, em ordem de decodificação, a unidade de acesso auA e pertencem àquelas camadas que têm uma imagem na unidade de acesso auA são primeiramente dependentes de transmissão no valor de NoOutputOfPriorPicsFlag da camada correspondente e então flushed.
[0173] Nessa modalidade, quando a imagem IRAP de camada de base na AU atual começa um novo CVS e define um limite de predição, todas as imagens que precedem a AU atual em ordem de decodificação e pertencem às camadas de aperfeiçoamento que não têm uma imagem na AU atual são removidos sem transmissão, e as imagens que precedem a AU atual em ordem de decodificação e pertencem a camadas que têm uma imagem na AU atual são transmitidas com base no valor de NoOutputOfPriorPicsFlag e então removidas. MODALIDADE 9 . O elemento de sintaxe no_output_of_prior_pics_flag não é sinalizado para imagens que têm nuh_layer_id maior que 0.
[0174] Nessa modalidade, o elemento de sintaxe no_output_of_prior_pics_flag não é sinalizado para imagens que não estão na camada de base. O elemento de sintaxe no_output_of_prior_pics_flag pode indicar o valor da variável NoOutputOfPriorPicsFlag. O valor de NoOutputOfPriorPicsFlag pode ser definido igual ao valor do elemento de sintaxe no_output_of_prior_pics_flag, ou derivado ou inferido com base em várias condições e/ou algoritmo, dependendo da modalidade. O número de bits usados para transmitir imagens pode ser reduzido por não sinalizar o elemento de sintaxe no_output_of_prior_pics_flag para imagens que não pertencem à camada de base. MODALIDADE 10 . O elemento de sintaxe no_output_of_prior_pics_flag não é sinalizado para imagens que pertencem a camadas dependentes.
[0175] Nessa modalidade, o elemento de sintaxe no_output_of_prior_pics_flag não é sinalizado para imagens que pertencem a camadas dependentes, por exemplo, camadas que se referem a outras camadas. O número de bits usados para transmitir imagens pode ser reduzido por não sinalizar o elemento de sintaxe no_output_of_prior_pics_flag para imagens que pertencem a camadas dependentes. MODALIDADE 11 . o elemento de sintaxe no_output_of_prior_pics_flag é somente sinalizado naquelas imagens de camada de aperfeiçoamento que não têm camadas de referência direta. - em outra alternativa, o elemento de sintaxe no_output_of_prior_pics_flag é sinalizado em todas as imagens IRAP e o valor de no_output_of_prior_pics_flag é limitado a ser o mesmo através de todas as imagens IRAP em uma unidade de acesso. - em outra alternativa, o valor de no_output_of_prior_pics_flag quando derivado, inferido ou externamente fornecido, é limitado a ser o mesmo através de todas as imagens em uma unidade de acesso.
[0176] Nessa modalidade, o elemento de sintaxe no_output_of_prior_pics_flag é somente sinalizado nas imagens de camada de aperfeiçoamento que não têm camadas de referência direta. Ou o elemento de sintaxe no_output_of_prior_pics_flag é sinalizado em todas as imagens IRAP, e o valor de no_output_of_prior_pics_flag é limitado a ser o mesmo através de todas as imagens IRAP em uma AU. Ou quando o valor de no_output_of_prior_pics_flag é derivado, inferido ou externamente fornecido, o valor de NoOutputOfPriorPicsFlag é limitado a ser o mesmo através de todas as imagens em uma AU. O número de bits usados para transmitir as imagens pode ser reduzida por não sinalizar o elemento de sintaxe no_output_of_prior_pics_flag para imagens que pertencem a camadas para as quais o valor de NoOutputOfPriorPicsFlag é derivado.
[0177] Modalidades adicionais para flushing de imagem para uma imagem IRAP são fornecidas abaixo. As modalidades abaixo podem individualmente ser uma implementação detalhada das modalidades descritas acima. As modalidades de exemplo são fornecidas no contexto de versões anteriores de SHVC e MV-HEVC (por exemplo, SHVC WD 5 e/ou MV-HEVC WD 7). Adições às versões anteriores de SHVC e MV-HEVC são indicadas em itálico, e deleções das versões anteriores de MV-HEVC são indicadas riscadas. A seção C.3.2 descreve as operações DPB de temporização de transmissão na remoção de imagem em MV-HEVC WD 7. A seção C.5.2.2 descreve as operações DPB de ordem de saída na remoção de imagem em MV-HEVC WD 7. Conceitos similares ou iguais e/ou texto são aplicáveis a SHVC, e foram refletidos ou devem ser refletidos em Minutas de trabalho de SHVC subsequente a WD 5. Por conseguinte, as modalidades de exemplo são também aplicáveis a SHVC.
MODALIDADE DE EXEMPLO A
[0178] A modalidade de exemplo A refere-se à Modalidade 1 acima e pode ser uma implementação detalhada da Modalidade 1. Nessa modalidade, flushing de imagem é somente invocada para imagens IRAP de camada de base. Em decodificadores em conformação com ordem de saída, quando NoOutputOfPriorPicsFlag é igual a 0, todas as imagens em todos os sub-DPBs são transmitidas. Um sub-DPB pode se referir a um DPB associado a uma camada individual. Um sub- DPB pode incluir buffers de armazenagem de imagem de um DPB que são associados a uma camada individual. Por exemplo, a camada de base pode ter um sub-DPB no DPB, e uma camada de aperfeiçoamento correspondente pode também ter um sub-DPB no DPB. Em ambos os decodificadores em conformação de ordem de transmissão e conformação de temporização de transmissão, quando a imagem de camada de base tem NoClrasOutputFlag igual a 1 ou ativa um novo VPS, todas as imagens a partir de todos os sub-DPBs são removidos após determinar o comportamento de transmissão com base em NoOutputofPriorPicsFlag. Nos decodificadores tanto em conformação com ordem de transmissão como conformação com temporização de transmissão, quando a imagem de camada de base tem NoClrasOutputFlag igual a 0 e não ativa um novo VPS, todas as imagens que têm nuh_layer_id igual a 0 são removidas após determinar o comportamento de transmissão com base em NoOutputOfPriorPicsFlag. C.3.2 REMOÇÃO DE IMAGENS A PARTIR DO DPB Quando a imagem atual não é imagem 0 na camada atual, a remoção de imagens na camada atual, com nuh_layer_id igual a currLayerId, a partir do DPB antes da decodificação da imagem atual, isto é, imagem n, porém após analisar o cabeçalho de fatia da primeira fatia da imagem atual, ocorre instantaneamente no tempo de remoção de CPB da primeira unidade de decodificação da imagem atual e prossegue como a seguir: - o processo de decodificação para RPS como especificado na sub-cláusula 8.3.1. é invocado. - a variável crossLayerBufferEmptyFlag é derivada como a seguir: - se um novo VPS for ativado pela unidade de acesso atual ou a imagem atual for uma imagem IRAP com nuh_layer_id igual a 0, noRaslOutputFlag igual a 1 e NoClrasOutputFlag igual a 1, crossLayerBufferEmptyFlag é definido em 1. - de outro modo, CrossLayerBuerEmptyFlag é definido em 0. - quando a imagem atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, e nuh_layer_id igual a 0, as seguintes etapas ordenadas são aplicadas: 1. A variável NoOutputOfPriorPicsFlag é derivada para o decodificador em teste como a seguir: - se a imagem atual for uma imagem CRA com NoOutputofPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag). - de outro modo, o valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid] derivado do SPS ativo para a camada atual for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid], respectivamente, derivado do SPS que era ativo para a camada atual ao decodificar a imagem precedente na camada atual, NoOutputOfPriorPicsFlag pode (porém não deve) ser definida em 1 pelo decodificador em teste, independente do valor de no_output_of_prior_pics_flag. NOTA - embora a definição de NoOutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador em teste é permitido definir NoOutputOfPriorPicsFlag em 1 nesse caso. - de outro modo, NoOutputofPriorPicsFlag é definido igual a no_output_of_prior_pics_flag. 2. O valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste é aplicado para o HRD como segue: - Quando o valor de NoOutputOfPriorPicsFlag é igual a 1 e o valor de crossLayerBufferEmptyFlag é igual a 1, todos os buffers de armazenagem de imagem não vazios—em todos os sub-DPBs são esvaziados sem transmissão das imagens que eles contêm, e a plenitude de sub-DPB de cada sub-DPBs é definida em 0. - quando o valor de NoOutputOfPriorPicsFlag é igual a 1 e o valor de crossLayerBufferEmptyFlag é igual a 0, todos os buffers de armazenagem de imagem não vazios que contêm imagens com nuh_layer_id igual a 0 são esvaziados sem transmissão das imagens que contêm, e a plenitude de sub-DBP do sub-DPB associado a nuh_layer_id igual a 0 é diminuída pelo número de buffers de armazenagem de imagem que foram esvaziados. - quando ambas as seguintes condições são verdadeiras para quaisquer imagens k no DPB, todas essas imagens k no DPB são removidas do DPB: - imagem k é marcada como “não usada para referência” - imagem k tem PicOutputFlag igual a 0 ou seu tempo de saída DPB é menor ou igual ao tempo de remoção de CPB da primeira unidade de decodificação (indicada como unidade de decodificação m) da imagem atual n; isto é, DpbOutputTime[k] é menor ou igual a CpbRemovalTime(m). - para cada imagem que é removida do DPB, a plenitude de DPB é diminuída em um. C.5.2.1 TRANSMISSÃO REMOÇÃO DE IMAGENS A PARTIR DE DPB Quando a imagem atual não é imagem 0 na camada atual, a transmissão e remoção de imagens na camada atual, com nuh_layer_id igual a currLayerId, a partir do DPB antes da decodificação da imagem atual, isto é, imagem n, porém após analisar o cabeçalho de fatia da primeira fatia da imagem atual e antes da invocação do processo de decodificação para contagem de ordem de imagem, ocorre instantaneamente quando a primeira unidade de decodificação da imagem atual é removida do CPB e prossegue como a seguir: - quando a imagem atual é uma imagem de redefinição de POC, todas as imagens do DPB que não pertencem à unidade de acesso atual e que são marcadas como “necessárias para transmissão” são transmitidas, começando com as imagens com o menor valor de PicOrderCntVal de todas as imagens excluindo aquelas na unidade de acesso atual no DPB, em ordem ascendente dos valores PicOrderCntVal, e imagens com o mesmo valor de PicOrderCntVal são transmitidas em ordem ascendente dos valores de nuh_layer_id. Quando uma imagem é transmitida, é cortada usando a janela de corte de conformidade especificada no SPS ativo para a imagem, a imagem cortada é transmitida, e a imagem é marcada como “não necessária para transmissão”. - os processos de decodificação para contagem de ordem de imagem e RPS são invocados. Ao decodificar um CVS se conformando a um ou mais dos perfis especificados no Anexo A usando o processo de decodificação especificado nas cláusulas 2 até 10, os processos de decodificação para contagem de ordem de imagem e RPS que sã invocados são como especificados em sub-cláusulas 8.3.1 e 8.3.2, respectivamente. Ao decodificar um CVS se conformando a um ou mais dos perfis especificados no Anexo G ou H usando o processo de decodificação especificado no Anexo F, e anexo G ou H, os processos de decodificação para contagem de ordem de imagem e RPS que são invocados são como especificado em sub-cláusulas F.8.3.1 e F.8.3.2, respectivamente. - a variável crossLayerBufferEmptyFlg é derivada como a seguir: Se um novo VPS for ativado pela unidade de acesso atual ou a imagem atual for imagem IRAP com nuh_layer_id igual a 0, NoRaslOutputFlag igual a 1 e NoClrasOutputFlag igual a 1, a crossLayerBufferEmptyFlag é definida em 1. - de outro modo, crossLayerBufferEmptyFlag é definida em 0. - se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, e nuh_layer_id igual a 0, as seguintes etapas ordenadas são aplicadas: 1. a variável NoOutputOfPriorPicsFlag é derivada para o decodificador em teste como a seguir: - se a imagem atual for uma imagem CRA, NoOutputofPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag). - de outro modo, o valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid] derivado do SPS ativo para a camada atual for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid], respectivamente derivado do SPS que era ativo para a camada atual ao decodificar a imagem precedente na camada atual, NoOutputOfPriorPicsFlag pode (porém não deve) ser definido em 1 pelo decodificador em teste, independente do valor de no_output_of_prior_pics_flag. NOTA - embora a definição de NoOutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador em teste é permitido definir NoOutputOfPriorPicsFlag em 1 nesse caso. - de outro modo, NoOutputofPriorPicsFlag é definido igual a no_output_of_prior_pics_flag. 2. O valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste é aplicado para o HRD como a seguir: - se NoOutputOfPriorPicsFlag for igual a 0, todos os buffers de armazenagem de imagem não vazios em todos os sub-DPBs são transmitidos por repetidamente invocar o processo “bumping” especificado na sub-cláusula C.5.2.4 até que todas essas imagens sejam marcadas como “não necessárias para transmissão.” - se crossLayerBufferEmptyFlag for igual a 1, todos os buffers de armazenagem de imagem em todos os sub- DPBs são esvaziados, e a plenitude de sub-DPB de todos os sub-DPBs é definida em 0. - de outro modo (crossLayerBufferEmptyFlag é igual a 0), todos os buffers de armazenagem de imagem contendo uma imagem que é marcada como “não necessário para transmissão” e “não usado para referência” são esvaziados (sem transmissão), todas as imagens que têm nuh_layer_id igual a 0 no sub-DPB contendo camada nuh_layer_id igual a 0 são esvaziadas, e a plenitude sub-DPB é diminuída pelo número de buffers de armazenagem de imagem esvaziados naquele sub-DPB. - De outro modo, todos os buffers de armazenagem de imagem que contêm uma imagem na camada atual e que são marcados como “não necessários para transmissão” e “não usados para referência” são esvaziados (sem transmissão). Para cada buffer de armazenagem de imagem que é esvaziado, a plenitude de sub-DPB é diminuída por um. Quando uma ou mais das seguintes condições são verdadeiras, o processo de “bumping” especificado na sub-cláusula C.5.2.4 é invocada repetidamente até que nenhuma das seguintes condições seja verdadeira: - o número de unidades de acesso que contêm pelo menos uma imagem decodificada no DPB marcado como “necessário para transmissão” é maior que MaxNumReorderPics. - MaxLatencyIncreasePlus1 não é igual a 0 e há pelo menos uma unidade de acesso que contém pelo menos uma imagem decodificada no DPB marcado como “necessário para transmissão” para o qual a variável associada PicLatencyCount é maior ou igual a MaxLatencyPictures. - o número de imagens no sub-DPB é maior ou igual a MaxDecPicBufferingMinus1 + 1. - O número de imagens na camada atual no sub-DPB é maior ou igual a MaxLayerDecPicBuffMinus1 + 1. Tabela 3 - Modalidade de exemplo A
[0179] Alternativamente, como descrito com relação à Modalidade 2 acima, para decodificadores em conformação tanto com ordem de transmissão como temporização de transmissão, o processo relacionado a NoOutputofPriorPicsFlg descrito na Modalidade A é aplicado não a imagens na camada de base, mas a imagens na camada mais baixa no fluxo de bits (por exemplo, a camada no fluxo de bits com a menor nuh_layer_id), e o valor de NoOutputOfPrioerPigsFlag pode ser fornecido externamente ao decodificador.
MODALIDADE DE EXEMPLO B
[0180] Nessa modalidade, as versões anteriores de SHVC e MV-HEVC são alteradas de modo que o valor de NoOutputOfPriorPicsFlag é derivado para imagens não IRAP de intensificação que são as primeiras imagens a serem decodificadas em cada camada após decodificar uma imagem IRAP de camada de base com NoClrasOutputFlag igual a 1. Essa modalidade pode manter o design existente de SHVC/MV- HEVC e tratar do problema de remoção de imagens a partir de uma camada de aperfeiçoamento que não contém uma imagem em uma unidade de acesso que tem uma imagem IRAP de camada de base, por invocar a remoção quando a imagem seguinte na camada de aperfeiçoamento está presente.
MODALIDADE DE EXEMPLO C
[0181] A Modalidade de exemplo C refere-se à Modalidade 6 acima e pode ser uma implementação detalhada da Modalidade 6. Nessa modalidade, quando uma imagem IRAP de camada de base inicia um novo CVS e define um limite de predição, todas as imagens no DPB são flushed sem transmissão. C.3.2 REMOÇÃO DE IMAGENS A PARTIR DO DPB Quando a imagem atual não é imagem 0 na camada atual, a remoção de imagens na camada atual, com nuh_layer_id igual a currLayerId, a partir do DPB antes da decodificação da imagem atual, isto é, imagem n, porém após analisar o cabeçalho de fatia da primeira fatia da imagem atual, ocorre instantaneamente no tempo de remoção de CPB da primeira unidade de decodificação da imagem atual e prossegue como a seguir: - o processo de decodificação para RPS como especificado na sub-cláusula 8.3.1. é invocado. - quando a imagem atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, ou a imagem de camada de base na unidade de acesso atual é uma imagem IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag é igual a 1, e nuh_layer_id igual a 0, as seguintes etapas ordenadas são aplicadas: 1. A variável NoOutputOfPriorPicsFlag é derivada para o decodificador em teste como a seguir: - se a imagem atual for uma imagem CRA com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag). - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 e o valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid] derivado do SPS ativo para a camada atual for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid], respectivamente, derivado do SPS que era ativo para a camada atual ao decodificar a imagem precedente na camada atual, NoOutputOfPriorPicsFlag pode (porém não deve) ser definida em 1 pelo decodificador em teste, independente do valor de no_output_of_prior_pics_flag. NOTA - embora a definição de NoOutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador em teste é permitido definir NoOutputOfPriorPicsFlag em 1 nesse caso. - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a no_output_of_prior_pics_flag. - de outro modo (a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a 1, a imagem de camada base na unidade de acesso atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, e NoClrasOutputFlag é igual a 1), NoOutputofPriorPicsFlag é definido igual a 1. 2. Os valores de armazenagem de imagem são esvaziados como a seguir. - se a imagem atual for uma imagem IRAP com nuh_layer_id igual a 0, com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag igual a 1, então todos os buffers de armazenagem de imagem em todos os sub-DPBs são esvaziados sem transmissão das imagens que contêm e a plenitude de sub-DPB é definida em zero para todos os sub-DPBs. - de outro modo, o valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste é aplicado para o HRD, de modo que quando o valor de NoOutputOfPriorPicsFlag é igual a 1, todos os buffers de armazenagem de imagem que contêm imagens com nuh_layer_id igual a currLayerId em todos os sub-DPBs são esvaziados sem transmissão das imagens que contêm, e a plenitude de sub- DPB é diminuída pelo número de buffers de armazenagem de imagem que foram esvaziados. - quando ambas as seguintes condições são verdadeiras para quaisquer imagens k no DPB, todas essas imagens k no DPB são removidas do DPB: - imagem k é marcada como “não usada para referência” - imagem k tem PicOutputFlag igual a 0 ou seu tempo de saída DPB é menor ou igual ao tempo de remoção de CPB da primeira unidade de decodificação (indicada como unidade de decodificação m) da imagem atual n; isto é, DpbOutputTime[k] é menor ou igual a CpbRemovalTime(m). - para cada imagem que é removida do DPB, a plenitude de DPB é diminuída em um. C.5.2.2 TRANSMISSÃO REMOÇÃO DE IMAGENS A PARTIR DE DPB Quando a imagem atual não é imagem 0 na camada atual, a transmissão e remoção de imagens na camada atual, com nuh_layer_id igual a currLayerId, a partir do DPB antes da decodificação da imagem atual, isto é, imagem n, porém após analisar o cabeçalho de fatia da primeira fatia da imagem atual e antes da invocação do processo de decodificação para contagem de ordem de imagem, ocorre instantaneamente quando a primeira unidade de decodificação da imagem atual é removida do CPB e prossegue como a seguir: - quando a imagem atual é uma imagem de redefinição de POC, todas as imagens do DPB que não pertencem à unidade de acesso atual e que são marcadas como “necessárias para transmissão” são transmitidas, começando com as imagens com o menor valor de PicOrderCntVal de todas as imagens excluindo aquelas na unidade de acesso atual no DPB, em ordem ascendente dos valores PicOrderCntVal, e imagens com o mesmo valor de PicOrderCntVal são transmitidas em ordem ascendente dos valores de nuh_layer_id. Quando uma imagem é transmitida, é cortada usando a janela de corte de conformidade especificada no SPS ativo para a imagem, a imagem cortada é transmitida, e a imagem é marcada como “não necessária para transmissão”. - os processos de decodificação para contagem de ordem de imagem e RPS são invocados. Ao decodificar um CVS se conformando a um ou mais dos perfis especificados no Anexo A usando o processo de decodificação especificado nas cláusulas 2 até 10, os processos de decodificação para contagem de ordem de imagem e RPS que sã invocados são como especificados em sub-cláusulas 8.3.1 e 8.3.2, respectivamente. Ao decodificar um CVS se conformando a um ou mais dos perfis especificados no Anexo G ou H usando o processo de decodificação especificado no Anexo F, e anexo G ou H, os processos de decodificação para contagem de ordem de imagem e RPS que são invocados são como especificado em sub-cláusulas F.8.3.1 e F.8.3.2, respectivamente. - se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, ou a imagem de camada de base na unidade de acesso atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag for igual a 1, as seguintes etapas ordenadas são aplicadas: 1. a variável NoOutputOfPriorPicsFlag é derivada para o decodificador em teste como a seguir: - se a imagem atual for uma imagem CRA com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag). - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 e o valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid] derivado do SPS ativo para a camada atual for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid], respectivamente derivado do SPS que era ativo para a camada atual ao decodificar a imagem precedente na camada atual, NoOutputOfPriorPicsFlag pode (porém não deve) ser definido em 1 pelo decodificador em teste, independente do valor de no_output_of_prior_pics_flag. NOTA - embora a definição de NoOutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador em teste é permitido definir NoOutputOfPriorPicsFlag em 1 nesse caso. - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a no_output_of_prior_pics_flag. - de outro modo (a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a 1, a imagem de camada base na unidade de acesso atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, e NoClrasOutputFlag é igual a 1), NoOutputofPriorPicsFlag é definido igual a 1. 2. O valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste é aplicado para o HRD como a seguir: - se a imagem atual for uma imagem IRAP com nuh_layer_id igual a 0, com NoRasOutputFlag igual a 1 e NoClrasOutputFlag igual a 1, então todos os buffers de armazenagem de imagem em todos os sub-DPBs são esvaziados sem transmissão de imagens que contêm e a plenitude de sub- DPB é definida em zero para todos os sub-DPBs. - de outro modo, se NoOutputOfPriorPicsFlag for igual a 1, todos os buffers de armazenagem de imagem que contêm imagens com nuh_layer_id igual a currLayerId no sub- DPB são esvaziados sem transmissão das imagens que contêm, e a plenitude de sub-DPB é diminuída pelo número de buffers de armazenagem de imagem que foram esvaziadas. - de outro modo (NoOutputOfPriorPicsFlag é igual a 0), todos os buffers de armazenagem de imagem contendo uma imagem que é marcada como “não necessária para transmissão” e “não usada para referência” são esvaziadas (sem transmissão), e todos os buffers de armazenagem de imagem não vazios que contêm imagens com nuh_layer_id igual a currLayerId no sub-DPB são transmitidos por repetidamente invocar o processo de “bumping” especificado na sub- cláusula C.5.2.4 até que todas essas imagens sejam marcadas como “não necessárias para transmissão,” todas as imagens que têm nuh_layer_id igual a currLayerId no sub-DPB são esvaziadas, e a plenitude de sub-DPB é diminuída pelo número de buffers de armazenagem de imagem esvaziados. Tabela 4 - Modalidade de exemplo C
MODALIDADE DE EXEMPLO D
[0182] Nessa modalidade, a operação de flushing é realizada através de camadas, e ocorre quando a imagem de camada de base inicia um novo cvs. A determinação de transmissão ou não transmissão também é determinada na imagem de camada de base. C.3.2 REMOÇÃO DE IMAGENS A PARTIR DO DPB Quando a imagem atual não é imagem 0 na camada atual, a remoção de imagens na camada atual, com nuh_layer_id igual a currLayerId, a partir do DPB antes da decodificação da imagem atual, isto é, imagem n, porém após analisar o cabeçalho de fatia da primeira fatia da imagem atual, ocorre instantaneamente no tempo de remoção de CPB da primeira unidade de decodificação da imagem atual e prossegue como a seguir: - o processo de decodificação para RPS como especificado na sub-cláusula 8.3.1. é invocado. - quando a imagem atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, ou a imagem de camada de base na unidade de acesso atual é uma imagem IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag é igual a 1, e nuh_layer_id igual a 0, as seguintes etapas ordenadas são aplicadas: 1. A variável NoOutputOfPriorPicsFlag é derivada para o decodificador em teste como a seguir: - se a imagem atual for uma imagem CRA com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag). - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 e o valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid] derivado do SPS ativo para a camada atual for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid], respectivamente, derivado do SPS que era ativo para a camada atual ao decodificar a imagem precedente na camada atual, NoOutputOfPriorPicsFlag pode (porém não deve) ser definida em 1 pelo decodificador em teste, independente do valor de no_output_of_prior_pics_flag. NOTA - embora a definição de NoOutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador em teste é permitido definir NoOutputOfPriorPicsFlag em 1 nesse caso. - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a no_output_of_prior_pics_flag. - de outro modo (a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a 1, a imagem de camada base na unidade de acesso atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, e NoClrasOutputFlag é igual a 1), NoOutputofPriorPicsFlag é definido igual a 1. 2. O valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste é aplicado para o HRD, de modo que quando o valor de NoOutputOfPriorPicsFlag é igual a 1 para uma imagem com nuh_layer_id igual a 0 e NoRaslOutputFlag igual a 1, todos os buffers de armazenagem de imagem DPB são esvaziados sem transmissão das imagens que contêm, e a plenitude de sub-DPB é diminuída pelo número de buffers de armazenagem de imagem que foram esvaziados. - quando ambas as seguintes condições são verdadeiras para quaisquer imagens k no DPB, todas essas imagens k no DPB são removidas do DPB: - imagem k é marcada como “não usada para referência” - imagem k tem PicOutputFlag igual a 0 ou seu tempo de saída DPB é menor ou igual ao tempo de remoção de CPB da primeira unidade de decodificação (indicada como unidade de decodificação m) da imagem atual n; isto é, DpbOutputTime[k] é menor ou igual a CpbRemovalTime(m). - para cada imagem que é removida do DPB, a plenitude de DPB é diminuída em um. C.5.2.2 TRANSMISSÃO E REMOÇÃO DE IMAGENS A PARTIR DE DPB Quando a imagem atual não é imagem 0 na camada atual, a transmissão e remoção de imagens na camada atual, com nuh_layer_id igual a currLayerId, a partir do DPB antes da decodificação da imagem atual, isto é, imagem n, porém após analisar o cabeçalho de fatia da primeira fatia da imagem atual e antes da invocação do processo de decodificação para contagem de ordem de imagem, ocorre instantaneamente quando a primeira unidade de decodificação da imagem atual é removida do CPB e prossegue como a seguir: - quando a imagem atual é uma imagem de redefinição de POC, todas as imagens do DPB que não pertencem à unidade de acesso atual e que são marcadas como “necessárias para transmissão” são transmitidas, começando com as imagens com o menor valor de PicOrderCntVal de todas as imagens excluindo aquelas na unidade de acesso atual no DPB, em ordem ascendente dos valores PicOrderCntVal, e imagens com o mesmo valor de PicOrderCntVal são transmitidas em ordem ascendente dos valores de nuh_layer_id. Quando uma imagem é transmitida, é cortada usando a janela de corte de conformidade especificada no SPS ativo para a imagem, a imagem cortada é transmitida, e a imagem é marcada como “não necessária para transmissão”. - os processos de decodificação para contagem de ordem de imagem e RPS são invocados. Ao decodificar um CVS se conformando a um ou mais dos perfis especificados no Anexo A usando o processo de decodificação especificado nas cláusulas 2 até 10, os processos de decodificação para contagem de ordem de imagem e RPS que sã invocados são como especificados em sub-cláusulas 8.3.1 e 8.3.2, respectivamente. Ao decodificar um CVS se conformando a um ou mais dos perfis especificados no Anexo G ou H usando o processo de decodificação especificado no Anexo F, e anexo G ou H, os processos de decodificação para contagem de ordem de imagem e RPS que são invocados são como especificado em sub-cláusulas F.8.3.1 e F.8.3.2, respectivamente. - se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, ou a imagem de camada de base na unidade de acesso atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 e NoClrasOutputFlag for igual a 1, as seguintes etapas ordenadas são aplicadas: 1. a variável NoOutputOfPriorPicsFlag é derivada para o decodificador em teste como a seguir: - se a imagem atual for uma imagem CRA com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag). - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 e o valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid] derivado do SPS ativo para a camada atual for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, ou sps_max_dec_pic_buffering_minus1[HighestTid], respectivamente derivado do SPS que era ativo para a camada atual ao decodificar a imagem precedente na camada atual, NoOutputOfPriorPicsFlag pode (porém não deve) ser definido em 1 pelo decodificador em teste, independente do valor de no_output_of_prior_pics_flag. NOTA - embora a definição de NoOutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador em teste é permitido definir NoOutputOfPriorPicsFlag em 1 nesse caso. - de outro modo, se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, NoOutputofPriorPicsFlag é definido igual a no_output_of_prior_pics_flag. - de outro modo (a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a 1, a imagem de camada base na unidade de acesso atual é uma imagem IRAP com NoRaslOutputFlag igual a 1, e NoClrasOutputFlag é igual a 1), NoOutputofPriorPicsFlag é definido igual a 1. 2. O valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste é aplicado para o HRD como a seguir: - se NoOutputofPriorPicsFlag for igual a 1 e a imagem atual for uma imagem com nuh_layer_id igual a 0 e NoRaslOutputFlag igual a 1, todos os buffers de armazenagem de imagem no DPB são esvaziados sem transmissão das imagens que contêm, e a plenitude de sub-DPB de todos os sub-DPBs é é definida em zero. - de outro modo, se NoOutputOfPriorPicsFlag for igual a 0, e a imagem atual for uma imagem com nuh_layer_id igual a 0 e NoRaslOoutputFlag igual a 1, todos os buffers de armazenagem de imagem contendo uma imagem que é marcada como “não necessária para transmissão” e “não usada para referência” são esvaziadas (sem transmissão), e todos os buffers de armazenagem de imagem não vazios que contêm imagens são transmitidos por repetidamente invocar o processo de “bumping” especificado na sub-cláusula C.5.2.4 até que todas essas imagens sejam marcadas como “não necessárias para transmissão,” todas as imagens no DPB são esvaziadas, e a plenitude de sub-DPB de todos sub-DPBs é definida em 0. Tabela 5 - Modalidade de exemplo D
MÉTODO DE FLUSHING IMAGENS PARA FLUXOS DE BITS DE MULTICAMADA
[0183] A figura 5 é um fluxograma ilustrando um método de codificar informações de vídeo de acordo com uma modalidade da presente revelação. O método refere-se a armazenagem de imagens para fluxos de bits de multicamada. O processo 500 pode ser realizado por um codificador (por exemplo, o codificador como mostrado na figura 2A, 2B, etc.), um decodificador (por exemplo, o decodificador como mostrado na figura 3A, 3B, etc.), ou qualquer outro componente dependendo da modalidade. Os blocos do processo 500 são descritos com relação ao decodificador 33 na figura 3B, porém o processo 500 pode ser realizado por outros componentes, como um codificador, como mencionado acima. O decodificador de vídeo de camada 1, 30B, do decodificador 33 e/ou o decodificador de camada 0, 30A do decodificador 33 podem executar o processo 500, dependendo da modalidade. Todas as modalidades descritas com relação à figura 5 podem ser implementadas separadamente ou em combinação entre si. Certos detalhes referentes ao processo 500 são explicados acima, por exemplo, com relação à figura 4.
[0184] O processo 500 começa no bloco 501. O decodificador 33 pode incluir uma memória (Por exemplo, buffer de imagem decodificada 160) para armazenar informações de vídeo associadas a uma pluralidade de camadas incluindo uma camada de referência. A memória pode incluir um DPB associado a cada camada. Em algumas modalidades, o DPB associado a cada camada pode ser mencionado como um sub-DPB e pode ser incluído como uma parte de um DPB.
[0185] No bloco 502, o decodificador 33 obtém, a partir da camada de referência, uma imagem IRAP em uma unidade de acesso atual (AU) a ser codificada. Em certas modalidades, a camada de referência é a camada de base. Em outras modalidades, a camada de referência é a camada mais baixa da pluralidade de camadas, diferentes de uma camada de base, a partir da qual a AU atual inclui uma imagem. A AU atual pode não incluir uma imagem na camada de base.
[0186] Em resposta à determinação de que a imagem IRAP de camada de referência começa um novo CVS no bloco 503, o decodificador 33 determina se a imagem IRAP de camada de referência ativa um novo conjunto de parâmetros de vídeo (VPS) ou define um limite de predição na AU atual no bloco 504. Em resposta à determinação de que a imagem IRAP de camada de referência define um limite de predição na AU atual no bloco 505, o decodificador 33 remove imagens no DPB associado a cada da pluralidade de camadas no bloco 506. Em resposta à determinação de que a imagem IRAP de camada de referência não ativa um novo VPS e determinação de que a imagem IRAP de camada de referência não define um limite de predição na AU atual no bloco 505, o decodificador 33 remove apenas imagens no DPB associado à camada de referência no bloco 507. Se a imagem IRAP de camada de referência não iniciar um novo CVS no bloco 503, o processo 500 termina no bloco 508.
[0187] Em algumas modalidades, o decodificador 33 determina o valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, em que a determinação é realizada somente para uma imagem na camada de referência que é uma camada de base. O primeiro indicador pode ser NoOutputOfPriorPicsFlag. Em certas modalidades, o decodificador 33 determina o valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, em que a determinação é realizada para uma imagem em uma camada independente da pluralidade de camadas, porém não realizada para uma imagem em uma camada dependente da pluralidade de camadas. Em outras modalidades, em resposta à determinação de que a imagem IRAP de camada de referência inicia um novo CVS e define um limite de predição na AU atual: o decodificador 33 determina o valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, o primeiro indicador sendo associado à imagem IRAP de referência; em resposta à determinação de que o valor do primeiro indicador indica que imagens em um DPB devem ser transmitidas, transmite imagens que precedem a AU atual em ordem de decodificação nos DPBs associados à pluralidade de camadas; e remove as imagens que precedem a AU atual em ordem de decodificação nos DPBs associados à pluralidade de camadas.
[0188] Em uma modalidade, o decodificador 33 determina o valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, o primeiro indicador sendo associado à imagem IRAP de referência; e em resposta à determinação de que o valor do primeiro indicador indica que imagens em um DPB devem ser transmitidas e que a imagem IRAP de camada de referência inicia um novo CVS, transmite imagens que precedem a imagem IRAP de camada de referência. Nessa modalidade, o decodificador 33 pode ser um decodificador em conformidade com ordem de transmissão.
[0189] Em certas modalidades, o decodificador 33 transmite imagens a serem removidas nos DPBs associados à pluralidade de camadas com base no valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, o primeiro indicador sendo associado à imagem IRAP de camada de referência. Por exemplo, em resposta à determinação de que o valor do primeiro indicador indica que imagens em um DPB devem ser transmitidas, o decodificador 33 transmite as imagens a serem removidas nos DPBs associados à pluralidade de camadas antes de remover as imagens a serem removidas. Como mencionado acima, o primeiro indicador nas modalidades diferentes pode se referir a NoOutputOfPriorPicsFlag.
[0190] O processo termina no bloco 508. Blocos podem ser adicionados/ou omitidos no processo 500, dependendo da modalidade, e blocos do processo 5000 podem ser realizados em ordens diferentes, dependendo da modalidade.
[0191] Quaisquer características e/ou modalidades descritas com relação à flushing de imagem para fluxos de bits de multicamada nessa revelação podem ser implementadas separadamente ou em qualquer combinação das mesmas. Por exemplo, quaisquer características e/ou modalidades descritas com relação às figuras 1-4 e outras partes da revelação podem ser implementadas em qualquer combinação com quaisquer características e/ou modalidades descritas com relação à figura 5, e vice-versa.
INFERÊNCIA DE PARÂMETRO DPB PARA FLUXOS DE BITS DE MULTICAMADA
[0192] Um fluxo de bits de multicamada, como um fluxo de bits SHVC ou um MV-HEVC, estaria se conformando a um ou mais perfis no Anexo A bem como um ou mais perfis no Anexo G ou H. alguns parâmetros DPB nas especificações de SHVC e/ou MV-HEVC podem ser derivados ou inferidos com base em qual Anexo contém o perfil que é usado para decodificar o fluxo de bits. Considere os seguintes parágrafos no Anexo C da especificação MV-HEVC (por exemplo, Minuta de trabalho 7 de MV-HEVC, também refletida ou a ser refletida nas Minutas de trabalho de SHVC subsequente à Minuta de trabalho 5). Os seguintes parágrafos descrevem várias variáveis, como MaxLayerDecPicBuffMinus1, MaxNumReorderPics, MaxLatencyIncreasePlus1, MaxLatencyPictures and MaxDecPicBufferingMinus1.
[0193] O seguinte parágrafo é da sub-cláusula C.1: Para cada teste de conformação ao fluxo de bits, o tamanho de CPB (número de bits) para a operação de CPB específica de fluxo de bits e o tamanho de DPB para a operação de CPB específica de divisão de fluxo de bits é CpbSize[SchedSelIdx] como especificado na sub-cláusula E.3.3, onde SchedSelIdx e os parâmetros HRD são especificados acima nessa sub-cláusula. Quando um CVS se conformando a um ou mais dos perfis especificados no Anexo A é decodificado por aplicar o processo de decodificação especificado nas clausulas 2-10, o tamanho de sub-DPB (número de buffers de armazenagem de imagem) do sub-DPB para a camada de base é sps_max_dec_pic_bufferring_minus1[HighestTid]+1, onde sps_max_dec_pic_buffering_minus1[HighestId] é do SPS ativo para a camada de base. Quando um CVS se conformando a um ou mais dos perfis especificados no Anexo A ou H é decodificado por aplicar o processo de decodificação especificado nas clausulas 2-10, Anexo F, e Anexo G ou H, o tamanho de sub-DPB do sub-DPB para uma camada com nuh_layer_id igual a currLayerId é max_vps_dec_pic_buffering_minus1[TargetOutputLayerSetIdx][s ubDpbIdx][HightesTid]+1, onde a variável subDpbIdx é igual a SubDpbAssigned[LayerSetIdxforOutputLayerSet [TargetOptLayerSetIdx][layerIdx] e LayerSetLayerIdList[IsIdx][layerIdx] é igual a currLayerId. Tabela 6 - Anexo C, sub-cláusula C.1
[0194] O seguinte parágrafo é da sub-cláusula C.5.2.1: Quando esses processos são aplicados para uma camada com nuh_layer_id igual a currLayerId, as variáveis MaxNumReorderPics, MaxLatencyIncreasePlus1, MaxLatencyPictures e MaxDecPicBufferingMinus1 são derivadas como a seguir: - MaxNumReorderPics é definido igual a max_vps_num_reorder_pics [TargetOuotputLayerSetIdx][HighestTid] do VPS ativo. - maxLatencyIncreasePlus1 é definido igual ao valor do elemento sintaxe max_vps_latency_increase_plus1[TargetOutputLayerSetIdx][Hig hestTid] do VPS ativo. - MaxLatencyPictures é definido igual a VpsMaxLatencyPictures[TargetOutputLayerSetIdx][HighestTid] do VPS ativo. - MaxDecPiucBufferingMinus1 é definido igual ao valor do elemento de sintaxe max_vps_dec_pic_buffering_minus1[TargetOutputLayerSetldx][s ubDpbIdx][HighestTid] do VPS ativo, onde o valor da variável subDpb1dx é igual a SubDpbAssigned[LayerSetIdxForOutputLayerSet[TargetOptLayerS etIdx]][layerIdx] e LayerSetLayerIdList[layerIdx] é igual a currLayerId. - MaxLayerDecPicBuffMinus1 é definido igual ao valor do elemento de sintaxe max_vps_layer_dec_pic_buff_minus1[TargetOptLayerSetIdx][Lay erIdxInVps[ CurrLayerId]][HighestTid] do VPS ativo. - de outro modo (um CVS se conformando a um ou mais dos perfis especificados no Anexo A é decodificado por aplicar o processo de decodificação especificado nas clausulas 2-10), o seguinte se aplica: - MaxNumReorderPics é definido igual a sps_max_num_reorder_pics[ HighestTid] do SPS ativo para a camada de base. - MaxLatencyIncreasePlus1 é definido igual a sps_max_latency_increase_plus1[ HighestTid] do SPS ativo para a camada de base. - MaxLatencyPictures é definido igual a SpsMaxLatencyPictures[ HighestTId] do SPS ativo para a camada de base. - MaxDecPicBufferingMinus1 e MaxLayerDecPicBufferMinus1 são ambos definidos igual a sps_max_dec_pic_buffering_minus1[ HighestTid] do SPS ativo para a camada de base. Tabela 7 - Anexo C, sub-cláusula C.5.2.1
[0195] Qualquer fluxo de bits HEVC ou qualquer fluxo de bits SHV/C/MV-HEVC estaria em conformidade com um ou mais perfis no Anexo A e um ou mais perfis no Anexo G ou H. quando as sub-cláusulas acima são aplicadas, o valor dos parâmetros DPB é ambíguo ou indisponível. Além disso, os parâmetros DPB sinalizados n extensão VPS não são sinalizados nem inferidos para o 0° conjunto de camadas de transmissão, onde o conjunto de camadas compreende apenas a camada de base e somente as imagens de camada de base são transmitidas.
MODALIDADE DE EXEMPLO E
[0196] De acordo com certos aspectos, seria suficiente inferir os valores de MaxLayerDecPicBuffMinus1, MaxNumReorderPics, MaxLatencyIncreasePlus1, MaxLatencyPictures e MaxDecPicBufferingMinus1 para o 0° conjunto de camadas de transmissão como igual aos valores, sinalizado para o SPS ativo da camada de base. Por somente se referir a esses valores inferidos no Anexo C, a ambiguidade pode ser removida.
[0197] Na Modalidade de exemplo E, os valores das variáveis que são associados aos parâmetros DPB do 0° conjunto de camadas de transmissão (por exemplo, max_vps_dec_pic_buffering_minus1, max_vps_layer_dec_pic_buffering_minus1, e max_vps_latency_increase_plus1) no Anexo C, sub-cláusula C1 são definidos igual aos valores dos atributos correspondentes no SPS ativo. A modalidade de exemplo é fornecida no contexto de versões anteriores de SHVC e MV- HEVC (por exemplo, SHVC WD 5 e/ou MV-HEVC WD 7). Adições às versões anteriores de SHVC e MV-HEVC são indicadas em itálico, e deleções a partir das versões anteriores de SHVC e MV-HEVC são indicadas riscadas. Conceitos similares ou iguais e/ou texto são aplicáveis a SHVC, e foram refletidos ou devem ser refletidos em Minutas de trabalho de SHVC subsequente a WD 5. Por conseguinte, a modalidade de exemplo também é aplicável a SHVC. Na modalidade de exemplo E, os valores das variáveis especificadas no Anexo C, sub- cláusula C.1, são definidos igual aos valores dos atributos correspondentes no SPS ativo; em outras modalidades os valores dos atributos correspondentes no SPS ativo podem ser definidos igual aos valores das variáveis especificadas no Anexo C, sub-cláusula C.1. AS SEMÂNTICAS DE ELEMENTOS DE SINTAXE EM DPB_SIZE() SÃO MODIFICADAS COMO A SEGUIR. Max_vps_dec_pic_buffering_minus1[i][k][j] mais 1 especifica o tamanho máximo exigido do k° sub-DPB para o CS no i° conjunto de camadas de transmissão em unidades de buffers de armazenagem de imagem quando HighestTid é igual a j. quando j é maior que 0, max_vps_dec_pic_buffering_minus1[i][k][j] será maior ou igual a max_vps_dec_pic_buffering_minus[i][k][j-1]. Quando max_vps_dec_pic_buffering_minus1[i][k][j] não está presente para j na faixa de 1 a MaxSubLayersInLayerSetMinus[1], inclusive, é inferido ser igual a max_vps_dec_pic_buffering_minus1[i][k][j-1]. O valor de max_vps_dec_pic_buffering_minus1[0][0][1] é inferido como sendo igual a sps_max_dec_pic_buffering_minus1[i] do SPS ativo da camada de base. Max_vps_dec_pic_buffering_minus1[i][k][j] mais 1 especifica o tamanho máximo exigido do k° sub-DPB para o CVS no i° conjunto de camadas de transmissão em unidades de buffers de armazenagem de imagem quando HighestTid é igual a j. Quando j é maior que 0, max_vps_dec_pic_buffering_minus1[i][k][j] será maior ou igual a max_vps_dec_pic_buffering_minus[i][k][j-1]. Quando max_vps_dec_pic_buffering_minus1[i][k][j] não está presente para j na faixa de 1 a MaxSubLayersInLayerSetMinus[1], inclusive, é inferido ser igual a max_vps_dec_pic_buffering_minus1[i][k][j-1]. O valor de max_vps_dec_pic_buffering_minus1[0][0][1] é inferido como sendo igual a sps_max_dec_pic_buffering_minus1[i] do SPS ativo da camada de base. Max_vps_layer_dec_pic_buff_minus1[i][k][j] mais 1 especifica o tamanho máximo exigido de imagens decodificadas da ka camada para o CVS no i° conjunto de camadas de transmissão, que necessita ser armazenado no DPB quando HighestId é igual a j. Quando j é maior que 0, max_vps_layer_dec_pic_buff_minus1[i][k][j] será maior ou igual a max_vps_layer_dec_pic_buff_minus[i][k][j-1]. Quando max_vps_layer_dec_pic_buff_minus1[i][k][j] não está presente para j na faixa de 1 a vps_max_sub_layers_minus1 - 1, inclusive, é inferido como sendo igual a max_vps_layer_dec_pic_buff_minus1[i][k][j-1]. O valor de max_vps_layer_dec_pic_buffering_minus1[0][0][j] é inferido como sendo igual a sps_max_dec_pic_buffering_minus1[i] do SPS ativo da camada de base. Max_vps+num_reorder_pics[i][j] especifica quando HighestTid é igual a j, o número máximo permitido de unidades de acesso contendo uma imagem com PicOutputFlag igual a 1 que pode preceder qualquer unidade de acesso auA que contém uma imagem com PicOutputFlag igual a 1 no i° conjunto de camadas de saída no CVS em ordem de decodificação e segue a unidade de acesso auA que contém uma imagem com PicOutputFlag igual a 1 em ordem de saída. Quando max_vps_num_reorder_pics[i][j] não está presente para j na faixa de 1 a MaxSubLayersinLayerSetMinus[i], inclusive, devido a sub_layer_dpb_info_present_flag[i][j] sendo igual a 0, é inferido como sendo igual a max_vps_num_reorder_pics[i][j — 1]. O valor de max_vps_num_reorder_pics[0][j] é inferido como sendo igual a sps_max_num_reorder_pics[j] do SPS ativo da camada de base. Max_vps_latency_increase_plus[i]'j] não igual a 0 é usado para computar o valor de VpsMaxLatencyPictures[i][j], que, quando HighestTid é igual a j, especifica o número máximo de unidades de acesso contendo uma imagem com PicOutputFlag igual a 1 no i° conjunto de camadas de transmissão que pode preceder qualquer unidade de acesso auA que contém uma imagem com PicOutputFlag igual a 1 no CVS em ordem de transmissão e segue a unidade de acesso auA que contém uma imagem com PicOutputFlag igual a 1 em ordem de decodificação. Quando max_vps+latency_increase_plus[i][j] não está presente para j na faixa de 1 a MaxSubLayersInLayerSetMinus1[i], inclusive, devido a sub_layer_dpb_info_present_flag[i][j] sendo igual a 0, é inferido como sendo igual a max_vps_latency_increase_plus[i][j-1]. O valor de max_vps_latency_increase_plus1[0][j] é inferido como sendo igual a sps_max_latency_increase_plus[j] do SPS ativo da camada de base. Quando max_vps_latency_increase_plus1[i][j] não é igual a 0, o valor de VpsMaxLatencyPictures[i][j] é especificado como a seguir: VpsMaxLatencyPicutres[i][j] = max_vps_num_reorder_pics[i][j] = max_vps_latency_increasae_plus1[i][j]-1 (F Quando max_vps_latency_increase_plus1[i][j] é igual a 0, nenhum limite correspondente é expresso. O valor de max_vps_latency_increase_plus1[i][j] estará na faixa de 0 a 232 -2, inclusive. O SEGUINTE PARÁGRAFO NA SUB-CLÁUSULA C.1 É MODIFICADO COMO A SEGUIR. Para cada teste de conformação ao fluxo de bits, o tamanho de CPB (número de bits) para a operação de CPB específica de fluxo de bits e o tamanho de DPB para a operação de CPB específica de divisão de fluxo de bits é CpbSize[SchedSelIdx] como especificado na sub-cláusula E.3.3, onde SchedSelIdx e os parâmetros HRD são especificados acima nessa sub-cláusula. O tamanho de sub- DPB do sub-DPB para uma camada com nuh_layer_id igual a currLayerId é max_vps_dec_pic_buffering_minus1[TargetOutputLayerSetIdx][s ubDpbIdx][HightesTid]+1, onde a variável subDpbIdx é igual a SubDpbAssigned[LayerSetIdxforOutputLayerSet [TargetOptLayerSetIdx][layerIdx] e LayerSetLayerIdList[IsIdx][layerIdx] é igual a currLayerId. O SEGUINTE PARÁGRAFO NA SUB-CLÁUSULA C.4 É MODIFICADO COMO A SEGUIR: - . para cada imagem atual, após invocação do processo para remoção de imagens a partir do sub-DPB como especificado na sub-cláusula C.3.2, as duas condições a seguir serão atendidas. - o número de imagens decodificadas no sub-DPB para a camada atual, incluindo todas as imagens n que são marcadas como “usadas para referência”, ou que têm PicOutputFlag igual a 1 e AuCpbRemovalTime[n] menor ou igual a AuCpbRemovalTime[currPic], onde currPic é a imagem atual, será menor ou igual a max_vps_dec_pic_buffering_minus1[TargetOutputLayerSetIdx] [subDpbIdx] [HighestTid] onde a variável subDpIdx é igual a SubDpbAssigned[LayerSetIdxForOutputLayerSet[TargetOptLayerS etIdx]][layerIdx] e LayerSetLayerIdList[IsIdx]{layerIdx] é igual a currPicLayerId. - o número de imagens decodificadas no sub-DPB para a camada atual, incluindo todas as imagens n na camada atual que são marcadas como “usadas para referência”, ou que têm PicOutputFlag igual a 1 e AuCpbRemovalTime[n] menor que AuCpbRemovalTime[currPic], onde currPic é a imagem atual, será menor ou igual a max_vps_layer_dec_pic_buff_minus1 [TargetOutputLayerSetIdx][layerIdx][HighestTid], onde a variável layerIdx é tal que LayerSetLayerIdList[LayerSetIdxForOutputLayerSet[TargetOptL ayerSetIdx]][LayerIdx] é igual a currPicLayerId. OS SEGUINTES PROCESSOS NA SUB-CLÁUSULA C.5.2.1 SÃO MODIFICADOS COMO A SEGUIR. Quando esses processos são aplicados para uma camada com nuh_layer_id igual a currLayerId, as variáveis MaxNumReorderPics, MaxLatencyIncreasePlus1, MaxLatencyPictures e MaxDecPicsBufferingMinus1 são derivadas como a seguir: - MaxNumReorderPics é definido igual a max_vps_num_reorder_pics[TargetOutputLayerSetIdx][HighestTi d] do VPS ativo. - MaxLatencyIncreasePlus1 é definido igual ao valor do elemento de sintaxe max_vps_latency_increase_plus1 [TargetOutputLayerSetIdx] [HighestTid] do VPS ativo. - MaxLatencyPicutres é definido igual a VpsMaxLatencyPicutres [TargetOutputLayerSetIdx][HighestTid] do VPS ativo. - MaxDecPicBufferingMinus1 é definido igual ao valor do elemento de sintaxe max_vps_dec_pic_buffering_minus1[TargetOutputLayerSetIdx][s ubDpbIdx]{highestTId] do VPS ativo, onde o valor da variável subDpbIdx é igual a SubDpbAssigned[LayerSetIdxForoutputLayerSet[TargetOptLayerS etIdx] [layerIdx] e LayerSetLayerIdList[lsIdx][layerIdx] é igual a currLayerId. - maxLayerDecPicBuffMinus1 é definido igual ao valor do elemento de sintaxe max_vps_layer_dec_pic_buff_minus1[TargetOptLayerSetIdx][Lay erIdxInVps[currLayerId]][HighestTid] do VPS ativo.
[0198] Informação e sinais revelados aqui podem ser representados usando qualquer de uma variedade de tecnologias e técnicas diferentes. Por exemplo, dados, instruções, comandos, informação, sinais, bits, símbolos e chips que podem ser referenciados em toda a descrição acima podem ser representados por voltagens, correntes, ondas eletromagnéticas, partículas ou campos magnéticos, partículas ou campos óticos, ou qualquer combinação dos mesmos.
[0199] Os vários blocos lógicos ilustrativos, circuitos e etapas de algoritmo descritos com relação às modalidades reveladas aqui podem ser implementados como hardware eletrônico, software de computador ou combinações de ambos. Para ilustrar claramente essa capacidade de intercâmbio de hardware e software, vários componentes ilustrativos, blocos, módulos, circuitos, e etapas foram descritos acima em geral em termos de sua funcionalidade. O fato de se tal funcionalidade é implementada como hardware ou software depende da aplicação específica e limitações de design impostas sobre o sistema geral. Técnicos especializados podem implementar a funcionalidade descrita em modos variáveis para cada aplicação específica, porém tais decisões de implementação não devem ser interpretadas como causando afastamento do escopo da presente invenção.
[0200] As técnicas descritas aqui podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Tais técnicas podem ser implementadas em qualquer de uma variedade de dispositivos como computadores de propósito geral, aparelhos telefônicos de dispositivo de comunicação sem fio, ou dispositivos de circuito integrado tendo múltiplos usos incluindo aplicação em aparelhos telefônicos de dispositivo de comunicação sem fio e outros dispositivos. Quaisquer características descritas como módulos ou componentes podem ser implementadas juntas em um dispositivo de lógica integrada ou separadamente como dispositivos de lógica discreta porém interoperável. Se implementadas em software, as técnicas podem ser realizadas pelo menos em parte por uma mídia de armazenagem de dados legível em computador compreendendo código de programa incluindo instruções que, quando executadas, executa um ou mais dos métodos descritos acima. A mídia de armazenagem de dados legível em computador pode fazer parte de um produto de programa de computador, que pode incluir materiais de empacotamento. A mídia legível em computador pode compreender memória ou mídia de armazenagem de dados, como memória de acesso aleatório (RAM) como memória de acesso aleatório dinâmica síncrona (SDRAM), memória somente de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória somente de leitura programável eletricamente apagável (EEPROM), memória FLASH, mídia de armazenagem de dados óptica ou magnética e similares. As técnicas adicionalmente ou alternativamente podem ser realizadas pelo menos em parte por uma mídia de comunicação legível em computador que carrega ou comunica código de programa na forma de instruções ou estruturas de dados e que pode ser acessada, lida e/ou executada por um computador, como sinais ou ondas propagadas.
[0201] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), disposições de lógica programável em campo (FPGAs), ou outro conjunto de circuitos de lógica discreta ou integrada equivalente. Tal processador pode ser configurado para executar quaisquer das técnicas descritas nessa revelação. Um processador de propósito geral pode ser um microprocessador, porém na alternativa, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador também pode ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DPS e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em combinação com um núcleo DSP, ou qualquer outra configuração. Por conseguinte, o termo “processador” como usado aqui pode se referir a qualquer uma das estruturas acima, qualquer combinação da estrutura acima, ou qualquer outra estrutura ou aparelho adequado para implementação das técnicas descritas aqui. Além disso, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida nos módulos de hardware e/ou software dedicados configurados para codificar e decodificar, ou incorporados em um codificador-decodificador (CODEC) combinado. Também, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos de lógica.
[0202] As técnicas dessa revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chip). Vários componentes, módulos ou unidades são descritos nessa revelação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, porém não exigem necessariamente realização por diferentes unidades de hardware. Ao invés, como descrito acima, várias unidades podem se combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware inter- operativas, incluindo um ou mais processadores como descrito acima, em combinação com software e/ou firmware adequado.
[0203] Várias modalidades foram descritas. Essas e outras modalidades estão compreendidas no escopo das reivindicações a seguir.

Claims (15)

1. Método para codificação de informação de vídeo, caracterizado pelo fato de que compreende: usar um ou mais dispositivos de computação compreendendo hardware de computador para: armazenar dados de vídeo associados a uma pluralidade de camadas incluindo uma camada de referência, a memória compreendendo um buffer de imagem decodificada, DPB, associado a cada camada; obter, a partir da camada de referência, uma imagem de ponto de acesso intra aleatório, IRAP, em uma unidade de acesso atual, AU, a ser codificada; determinar se a imagem IRAP da camada de referência ativa um novo conjunto de parâmetros de vídeo, VPS, ou se a imagem IRAP da camada de referência é associada a um NoClrasOutputFlag que tem um valor de 1, o NoClrasOutputFlag indicativo de se uma imagem de pular acesso aleatório de camada transversal (CL-RAS) deve ser transmitida; e em resposta à determinação de que a imagem IRAP de camada de referência ativa um novo VPS ou que a imagem IRAP de camada de referência está associada com um NoClrasOutputFlag que tem um valor 1, remover imagens no DPB associado a cada uma da pluralidade de camadas; ou em resposta à determinação de que a imagem IRAP de camada de referência não ativa um novo VPS e que a imagem IRAP de camada de referência não é associada a um NoClrasOutputFlag que tem um valor de 1, remover apenas imagens no DPB associado à camada de referência.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a camada de referência é uma camada de base.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a camada de referência é uma camada mais baixa da pluralidade de camadas, diferente de uma camada de base, das quais a AU atual inclui uma imagem, a AU atual não incluindo uma imagem na camada de base.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende: determinar um valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, em que a determinação é realizada somente para uma imagem na camada de referência que é uma camada de base.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: determinar um valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, em que a determinação é realizada para uma imagem em uma camada independente da pluralidade de camadas, porém não realizada para uma imagem em uma camada dependente da pluralidade de camadas.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende: em resposta à determinação de que a imagem IRAP de camada de referência começa um novo CVS e define um limite de predição na AU atual: determinar um valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, o primeiro indicador sendo associado à imagem IRAP de referência; em resposta à determinação de que o valor do primeiro indicador indica que imagens em um DPB devem ser transmitidas, transmitir imagens que precedem a AU atual em ordem de decodificação nos DPBs associados à pluralidade de camadas; e remover as imagens que precedem a AU atual em ordem de decodificação nos DPBs associados à pluralidade de camadas.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: determinar um valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, o primeiro indicador sendo associado à imagem IRAP de referência; e em resposta à determinação de que o valor do primeiro indicador indica que imagens em um DPB devem ser transmitidas e que a imagem IRAP de camada de referência inicia um novo CVS, transmitir imagens que precedem a imagem IRAP de camada de referência.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que os um ou mais dispositivos de computação incluem um decodificador em conformação de ordem de saída.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente transmitir imagens a serem removidas nos DPBs associados à pluralidade de camadas com base no valor de um primeiro indicador indicando se deve transmitir imagens em um DPB, o primeiro indicador sendo associado à imagem IRAP de camada de referência.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende adicionalmente: em resposta à determinação de que o valor do primeiro indicador indica que imagens em um DPB devem ser transmitidas, transmitir as imagens a serem removidas nos DPBs associados à pluralidade de camadas antes de remover as imagens a serem removidas.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que o primeiro indicador é NoOutputOfPriorPicsFlag.
12. Memória legível por computador não transitória, caracterizada pelo fato de que compreende instruções que, quando executadas em um processador compreendendo hardware de computador, fazem com que o processador realize o método como definido em qualquer uma das reivindicações 1 a 11.
13. Equipamento para codificação de informação de vídeo, caracterizado pelo fato de que compreende: meios para armazenar dados de vídeo associados a uma pluralidade de camadas incluindo uma camada de referência, os meios para armazenar compreendendo um buffer de imagem decodificada, DPB, associado a cada camada; e meios para obter, a partir da camada de referência, uma imagem de ponto de acesso intra aleatório, IRAP, em uma unidade de acesso atual, AU, a ser codificada, os meios para obter configurados para: determinar se a imagem IRAP da camada de referência ativa um novo conjunto de parâmetros de vídeo, VPS, ou se a imagem IRAP da camada de referência é associada a um NoClrasOutputFlag que tem um valor de 1, o NoClrasOutputFlag indicativo de se uma imagem de pular acesso aleatório de camada transversal, CL-RAS, deve ser transmitida; e em resposta à determinação de que a imagem IRAP de camada de referência ativa um novo VPS ou que a imagem IRAP de camada de referência está associada a um NoClrasOutputFlag que tem um valor 1, remover imagens no DPB associado a cada da pluralidade de camadas; e em resposta à determinação de que a imagem IRAP de camada de referência não ativa um novo VPS e que a imagem IRAP de camada de referência não é associada a um NoClrasOutputFlag que tem um valor de 1, remover apenas imagens no DPB associado à camada de referência.
14. Equipamento, de acordo com a reivindicação 13, caracterizado pelo fato de que os meios para obter a imagem IRAP são ainda configurados para transmitir imagens a serem removidas nos DPBs associados à pluralidade de camadas com base no valor de um primeiro indicador que indica quando transmitir imagens em um DPB, o primeiro indicador sendo associado à imagem IRAP da camada de referência.
15. Equipamento, de acordo com a reivindicação 14, caracterizado pelo fato de que os meios para obter a imagem IRAP são configurados ainda para:em resposta à determinação de que o valor do primeiro indicador indica que as imagens em um DPB devem ser transmitidas, transmitir as imagens a serem removidas nos DPBs associados à pluralidade de camadas antes de remover as imagens a serem removidas.
BR112016021489-7A 2014-03-17 2015-03-13 Método e equipamento para codificação de informação de vídeo, e,memória legível por computador BR112016021489B1 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201461954536P 2014-03-17 2014-03-17
US61/954,536 2014-03-17
US201461955152P 2014-03-18 2014-03-18
US61/955,152 2014-03-18
US201461955763P 2014-03-19 2014-03-19
US61/955,763 2014-03-19
US14/656,469 2015-03-12
US14/656,469 US9807406B2 (en) 2014-03-17 2015-03-12 Picture flushing and decoded picture buffer parameter inference for multi-layer bitstreams
PCT/US2015/020496 WO2015142655A1 (en) 2014-03-17 2015-03-13 Picture flushing and decoded picture buffer parameter inference for multi-layer bitstreams

Publications (3)

Publication Number Publication Date
BR112016021489A2 BR112016021489A2 (pt) 2017-08-15
BR112016021489A8 BR112016021489A8 (pt) 2021-07-06
BR112016021489B1 true BR112016021489B1 (pt) 2023-11-21

Family

ID=54070442

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016021489-7A BR112016021489B1 (pt) 2014-03-17 2015-03-13 Método e equipamento para codificação de informação de vídeo, e,memória legível por computador

Country Status (9)

Country Link
US (1) US9807406B2 (pt)
EP (1) EP3120549B1 (pt)
JP (1) JP6554477B2 (pt)
KR (1) KR102142836B1 (pt)
CN (1) CN106233727B (pt)
BR (1) BR112016021489B1 (pt)
ES (1) ES2879635T3 (pt)
MX (1) MX360525B (pt)
WO (1) WO2015142655A1 (pt)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9832463B2 (en) * 2014-06-18 2017-11-28 Telefonaktiebolaget L M Ericsson (Publ) Robust encoding and decoding of pictures in video
JP2017522767A (ja) * 2014-06-18 2017-08-10 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ビデオビットストリームにおけるランダムアクセス
US10484711B2 (en) * 2014-06-18 2019-11-19 Telefonaktiebolaget Lm Ericsson (Publ) Dependent random access point pictures
BR112017015841B1 (pt) * 2015-02-04 2024-01-30 Telefonaktiebolaget Lm Ericsson (Publ) Dispositivo para decodificar amostras de ponto de acesso aleatório dependente, dispositivo para gerar um arquivo de recipiente de mídia, métodos relacionados e arquivo de recipiente de mídia
US10455242B2 (en) * 2015-03-04 2019-10-22 Qualcomm Incorporated Signaling output indications in codec-hybrid multi-layer video coding
CN111989920A (zh) * 2018-02-20 2020-11-24 弗劳恩霍夫应用研究促进协会 支持变化的分辨率和/或有效地处理区域级打包的图片/视频编码
US10735770B2 (en) 2018-09-13 2020-08-04 Tencent America LLC Method and device using high layer syntax architecture for coding and decoding
WO2020159994A1 (en) * 2019-01-28 2020-08-06 Op Solutions, Llc Online and offline selection of extended long term reference picture retention
US11109041B2 (en) * 2019-05-16 2021-08-31 Tencent America LLC Method and apparatus for video coding
CN113994671B (zh) 2019-06-14 2024-05-10 北京字节跳动网络技术有限公司 基于颜色格式处理视频单元边界和虚拟边界
US11032548B2 (en) * 2019-06-24 2021-06-08 Tencent America LLC Signaling for reference picture resampling
EP4014485A4 (en) 2019-09-18 2022-10-26 Beijing Bytedance Network Technology Co., Ltd. TWO-PART SIGNALING OF ADAPTIVE LOOP FILTERS IN VIDEO CODING
US11245899B2 (en) * 2019-09-22 2022-02-08 Tencent America LLC Method and system for single loop multilayer coding with subpicture partitioning
JP7318120B2 (ja) 2019-09-22 2023-07-31 北京字節跳動網絡技術有限公司 適応ループフィルタリングにおけるパディングプロセス
EP4018665A4 (en) * 2019-09-24 2022-11-09 Huawei Technologies Co., Ltd. SUPPORT FOR MIXED IRAP AND NON-IRAP IMAGES WITHIN AN ACCESS UNIT IN MULTI-LAYER VIDEO BITSTREAMS
CN117544772A (zh) * 2019-09-24 2024-02-09 华为技术有限公司 不允许不必要的层包括在多层视频码流中
JP7388612B2 (ja) * 2019-09-24 2023-11-29 ホアウェイ・テクノロジーズ・カンパニー・リミテッド マルチレイヤビデオビットストリームのためのdpbパラメータのシグナリング
CN114450954A (zh) 2019-09-27 2022-05-06 北京字节跳动网络技术有限公司 不同视频单元之间的自适应环路滤波
KR20220071203A (ko) 2019-10-10 2022-05-31 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 적응적 루프 필터링에서 이용 불가능한 샘플 위치들에서의 패딩 프로세스
EP4042692A4 (en) 2019-10-29 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. COMPONENT ADAPTIVE LOOP FILTER
KR102619404B1 (ko) 2019-12-11 2023-12-28 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 크로스 컴포넌트 적응적 루프 필터링을 위한 샘플 패딩
KR20230013080A (ko) * 2020-05-18 2023-01-26 엘지전자 주식회사 영상 디코딩 방법 및 그 장치
WO2022002007A1 (en) 2020-06-30 2022-01-06 Beijing Bytedance Network Technology Co., Ltd. Boundary location for adaptive loop filtering
US11962936B2 (en) 2020-09-29 2024-04-16 Lemon Inc. Syntax for dependent random access point indication in video bitstreams

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9185439B2 (en) * 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
AU2012225513B2 (en) * 2011-03-10 2016-06-23 Vidyo, Inc. Dependency parameter set for scalable video coding
EP2732626A1 (en) * 2011-07-15 2014-05-21 Telefonaktiebolaget L M Ericsson (PUBL) An encoder and method thereof for assigning a lowest layer identity to clean random access pictures
US9491477B2 (en) * 2012-03-30 2016-11-08 Hitachi, Ltd. Image decoding method and image decoding apparatus
JP6050488B2 (ja) * 2012-07-06 2016-12-21 サムスン エレクトロニクス カンパニー リミテッド ランダムアクセスのためのマルチレイヤビデオ符号化方法及びその装置、並びにランダムアクセスのためのマルチレイヤビデオ復号化方法及びその装置

Also Published As

Publication number Publication date
CN106233727B (zh) 2019-11-01
MX360525B (es) 2018-11-07
JP2017509252A (ja) 2017-03-30
BR112016021489A2 (pt) 2017-08-15
ES2879635T3 (es) 2021-11-22
MX2016011209A (es) 2017-01-09
US20150264370A1 (en) 2015-09-17
BR112016021489A8 (pt) 2021-07-06
US9807406B2 (en) 2017-10-31
KR102142836B1 (ko) 2020-08-10
JP6554477B2 (ja) 2019-07-31
CN106233727A (zh) 2016-12-14
EP3120549B1 (en) 2021-04-14
KR20160132878A (ko) 2016-11-21
WO2015142655A1 (en) 2015-09-24
EP3120549A1 (en) 2017-01-25

Similar Documents

Publication Publication Date Title
EP3120549B1 (en) Picture flushing and decoded picture buffer parameter inference for multi-layer bitstreams
ES2854274T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
AU2014373822B2 (en) Improved inference of NoOutputOfPriorPicsFlag in video coding
BR112016021473B1 (pt) Método e aparelho para codificar informação de vídeo usando extensão escalável para codificação de vídeo de alta eficiência, shvc, ou codificação de vídeo de alta eficiência de múltiplas vistas, mv-hevc, assim como memória legível por computador
CA2930331C (en) Support of base layer of a different codec in multi-layer video coding
BR112016008225B1 (pt) Aparelhos e métodos para codificação e decodificação de informações de vídeo e memória legível por computador
BR112016024233B1 (pt) Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas
BR112016008337B1 (pt) Aparelho configurado para codificar informações de vídeo, método para codificar informações de vídeo e memória legível por computador
KR102329656B1 (ko) 비디오 정보의 스케일러블 코딩을 위한 디바이스 및 방법
BR112016030377B1 (pt) Método e aparelho para converter informações de vídeo em código em um fluxo de bits, assim como memória legível por computador
BR112016015988B1 (pt) Método e aparelho de decodificação de informações de vídeo, método e aparelho de codificação de informações de vídeo e memória legível por computador
BR112016029611B1 (pt) Aparelho e método para codificar informações de vídeo em codificação de vídeo de alta eficiência, e, memória legível por computador
BR112016015552B1 (pt) Métodos para codificação de um conjunto de imagens de referência (rps) entre camadas e codificação de unidades da camada de acesso à rede (nal) do fim do fluxo de bits
BR112016030211B1 (pt) Restrições de conformidade de fluxo de bits em codificação de vídeo escalonável
BR112016001121B1 (pt) Dispositivo e método para codificação escalável de informações de vídeo e memória legível por computador
NZ719895B2 (en) Improved inference of nooutputofpriorpicsflag in video coding
BR112016015931B1 (pt) Suporte de camada-base de não hevc em extensões de muticamadas de hevc
BR112016015918B1 (pt) Suporte de camada base não-hevc em extensões de muticamada de hevc

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]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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