BR112015025518B1 - Método para decodificar um fluxo de bits de vídeo - Google Patents

Método para decodificar um fluxo de bits de vídeo Download PDF

Info

Publication number
BR112015025518B1
BR112015025518B1 BR112015025518-3A BR112015025518A BR112015025518B1 BR 112015025518 B1 BR112015025518 B1 BR 112015025518B1 BR 112015025518 A BR112015025518 A BR 112015025518A BR 112015025518 B1 BR112015025518 B1 BR 112015025518B1
Authority
BR
Brazil
Prior art keywords
layer
cpb
removal
decoding
delay
Prior art date
Application number
BR112015025518-3A
Other languages
English (en)
Other versions
BR112015025518A2 (pt
Inventor
Sachin G. Deshpande
Original Assignee
Dolby International Ab
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
Priority claimed from US13/858,076 external-priority patent/US9591321B2/en
Application filed by Dolby International Ab filed Critical Dolby International Ab
Publication of BR112015025518A2 publication Critical patent/BR112015025518A2/pt
Publication of BR112015025518B1 publication Critical patent/BR112015025518B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/177Methods 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 group of pictures [GOP]
    • 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/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/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/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234327Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8451Structuring of content, e.g. decomposing content into time segments using Advanced Video Coding [AVC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • User Interface Of Digital Computer (AREA)
  • Use Of Switch Circuits For Exchanges And Methods Of Control Of Multiplex Exchanges (AREA)
  • Bipolar Transistors (AREA)

Abstract

ALTERAÇÃO DE SINALIZAÇÃO EM CONJUNTOS DE CAMADAS DE SAÍDA. A presente invenção refere-se a um sistema para decodificar um fluxo de bits de vídeo que inclui receber um fluxo de bits e uma pluralidade de fluxos de bits de otimização juntamente com um conjunto de parâmetros de vídeo e uma extensão de conjunto de parâmetros de vídeo. O sistema também recebe uma mensagem de alteração de conjunto de camadas de saída que inclui informações que indicam uma alteração em pelo menos um conjunto de camadas de saída.

Description

CAMPO DA TÉCNICA
[0001] A presente revelação refere-se, de modo geral, a dispositivos eletrônicos. Mais especificamente, a presente revelação se refere a dispositivos eletrônicos para a sinalização de parâmetros de decodificador hipotético de referência à base de sub-imagem, e a sistemas e métodos para a operação híbrida de uma memória temporária de imagem decodificada (DPB).
ANTECEDENTES DA INVENÇÃO
[0002] Os dispositivos eletrônicos têm se tornado menores e mais potentes a fim de atender as necessidades do consumidor e aprimorar a portabilidade e conveniência. Os consumidores têm se tornado dependentes de dispositivos eletrônicos e se acostumaram a esperar funcionalidade aumentada. Alguns exemplos de dispositivos eletrônicos incluem computadores de mesa, computadores do tipo laptop, telefones celulares, telefones inteligentes, reprodutores de mídia, circuitos integrados, etc..
[0003] Alguns dispositivos eletrônicos são usados para o processamento e exibição de mídia digital. Por exemplo, os dispositivos eletrônicos portáteis permitem agora que a mídia digital seja consumida em quase todo local aonde um consumidor pode estar. Adicionalmente, alguns dispositivos eletrônicos podem fornecer transferência por download ou streaming de conteúdo de mídia digital para o uso e divertimento de um consumidor.
[0004] A popularidade crescente de mídia digital tem apresentado vários problemas. Por exemplo, a representação de modo eficaz de mídia de alta qualidade para armazenamento, transmissão e reprodução rápida apresenta vários desafios. Conforme pode ser observado a partir dessa discussão, os sistemas e métodos que representam mídia digital de modo eficaz com desempenho aprimorado podem ser benéficos.
[0005] Os objetivos, recursos e vantagens anteriormente mencionadas da invenção, e outros, serão mais prontamente compreendidos sob a consideração da seguinte descrição detalhada da invenção, tomada em conjunto com os desenhos em anexo.
SUMÁRIO DA INVENÇÃO SOLUÇÃO PARA O PROBLEMA
[0006] Um aspecto da invenção fornece um método para decodificar um fluxo de bits de vídeo que compreende: (a) receber um fluxo de bits de base representativo de uma sequência de vídeo codificada; (b) receber uma pluralidade de fluxos de bits de otimização representativa da dita sequência de vídeo codificada; (c) receber um conjunto de parâmetros de vídeo que contém elementos de sintaxe que se aplicam ao dito fluxo de bits de base e à dita pluralidade de fluxos de bits de otimização, em que o dito conjunto de parâmetros de vídeo contém um elemento de sintaxe que sinaliza uma extensão de conjunto de parâmetros de vídeo; (d) receber a dita extensão de conjunto de parâmetros de vídeo que contém elementos de sintaxe relacionados a pelo menos um dos ditos fluxos de bits de otimização; (e) receber uma mensagem de alteração de conjunto de camadas de saída que inclui informações que indicam uma alteração em pelo menos um conjunto de camadas de saída.
[0007] Um aspecto da invenção fornece um método para decodificar um fluxo de bits de vídeo que compreende: (a) receber um fluxo de bits de base representativo de uma sequência de vídeo codificada; (b) receber uma pluralidade de fluxos de bits de otimização representativa da dita sequência de vídeo codificada; (c) receber um conjunto de parâmetros de vídeo que contém elementos de sintaxe que se aplicam ao dito fluxo de bits de base e à dita pluralidade de fluxos de bits de otimização, em que o dito conjunto de parâmetros de vídeo contém um elemento de sintaxe que sinaliza uma extensão de conjunto de parâmetros de vídeo; (d) receber a dita extensão de conjunto de parâmetros de vídeo que contém elementos de sintaxe que inclui parâmetros relacionados à memória temporária de imagem decodificada para uma memória temporária de imagem decodificada para pelo menos um dentre os ditos fluxos de bits de otimização.
[0008] Um aspecto da invenção fornece um método para codificação de vídeo, que compreende: começar a analisar um primeiro cabeçalho de fatia de uma imagem atual; determinar quais etapas realizadas por uma memória temporária de imagem decodificada (DPB) serão à base de imagem e quais etapas serão à base de unidade de acesso (AU); realizar uma remoção a partir da DPB; realizar uma saída de imagem a partir da DPB; realizar uma decodificação e armazenamento de uma imagem decodificada atual na DPB; marcar a imagem decodificada atual na DPB; e realizar uma saída de imagem adicional a partir da DPB.
[0009] Um aspecto da invenção fornece um dispositivo eletrônico configurado para codificação de vídeo, que compreende: um processador, memória em comunicação eletrônica com o processador, em que as instruções armazenadas na memória são executáveis para: começar a analisar um primeiro cabeçalho de fatia de uma imagem atual; determinar quais etapas realizadas por uma memória temporária de imagem decodificada (DPB) serão à base de imagem e quais etapas serão à base de unidade de acesso (AU); realizar uma remoção a partir da DPB; realizar uma saída de imagem a partir da DPB; realizar uma decodificação e armazenamento de uma imagem decodificada atual na DPB; marcar a imagem decodificada atual na DPB; e realizar uma saída de imagem adicional a partir da DPB.
BREVE DESCRIÇÃO DOS DESENHOS
[0010] A Figura 1A é um diagrama de blocos que ilustra um exemplo de um ou mais dispositivos eletrônicos, nos quais os sistemas e métodos para enviar uma mensagem e armazenar em memória temporária um fluxo de bits podem ser implantados.
[0011] A Figura 1B é outro diagrama de blocos que ilustra um exemplo de um ou mais dispositivos eletrônicos, nos quais os sistemas e métodos para enviar uma mensagem e armazenar em memória temporária um fluxo de bits podem ser implantados.
[0012] A Figura 2 é um fluxograma que ilustra uma configuração de um método para enviar uma mensagem.
[0013] A Figura 3 é um fluxograma que ilustra uma configuração de um método para determinar um ou mais atrasos de remoção para unidades de decodificação em uma unidade de acesso.
[0014] A Figura 4 é um fluxograma que ilustra uma configuração de um método para armazenar em memória temporária um fluxo de bits.
[0015] A Figura 5 é um fluxograma que ilustra uma configuração de um método para determinar um ou mais atrasos de remoção para unidades de decodificação em uma unidade de acesso.
[0016] A Figura 6A é um diagrama de blocos que ilustra uma configuração de um codificador 604 em um dispositivo eletrônico.
[0017] A Figura 6B é outro diagrama de blocos que ilustra uma configuração de um codificador 604 em um dispositivo eletrônico.
[0018] A Figura 7A é um diagrama de blocos que ilustra uma configuração de um decodificador em um dispositivo eletrônico.
[0019] A Figura 7B é outro diagrama de blocos que ilustra uma configuração de um decodificador em um dispositivo eletrônico.
[0020] A Figura 8 ilustra diversos componentes que podem ser utilizados em um dispositivo eletrônico de transmissão.
[0021] A Figura 9 é um diagrama de blocos que ilustra diversos componentes que podem ser utilizados em um dispositivo eletrônico de recepção.
[0022] A Figura 10 é um diagrama de blocos que ilustra uma configuração de um dispositivo eletrônico em que sistemas e métodos para enviar uma mensagem podem ser implantados.
[0023] A Figura 11 é um diagrama de blocos que ilustra uma configuração de um dispositivo eletrônico em que sistemas e métodos para armazenar em memória temporária um fluxo de bits podem ser implantados.
[0024] A Figura 12 é um diagrama de blocos que ilustra uma configuração de um método para operação de uma memória temporária de imagem decodificada.
[0025] A Figura 13A ilustra a sintaxe de cabeçalho de unidade de NAL diferente.
[0026] A Figura 13B ilustra a sintaxe de cabeçalho de unidade de NAL diferente.
[0027] A Figura 13C ilustra a sintaxe de cabeçalho de unidade de NAL diferente.
[0028] A Figura 14 ilustra uma sintaxe de unidade de NAL geral.
[0029] A Figura 15 ilustra um conjunto de parâmetros de vídeo existente.
[0030] A Figura 16 ilustra os tipos de escalabilidade existentes.
[0031] A Figura 17 ilustra um conjunto de parâmetros de vídeo exemplificador.
[0032] A Figura 18 ilustra uma sintaxe de mapa de escalabilidade exemplificadora.
[0033] A Figura 19 ilustra um conjunto de parâmetros de vídeo exemplificador.
[0034] A Figura 20 ilustra um conjunto de parâmetros de vídeo existente.
[0035] A Figura 21 ilustra uma sintaxe de id de dimensão de tipo de dimensão existente.
[0036] A Figura 22 ilustra um conjunto de parâmetros de vídeo exemplificador.
[0037] A Figura 23 ilustra uma sintaxe de mapa de escalabilidade exemplificadora.
[0038] A Figura 24 ilustra um conjunto de parâmetros de vídeo exemplificador.
[0039] A Figura exemplificador. 25 ilustra um conjunto de parâmetros de vídeo
[0040] A Figura exemplificador. 26 ilustra um conjunto de parâmetros de vídeo
[0041] A Figura 27 ilustra uma sintaxe de mapa de escalabilidade exemplificadora.
[0042] A Figura 28 ilustra uma sintaxe de extensão de conjunto de parâmetros de vídeo exemplificadora.
[0043] A Figura 29 ilustra uma sintaxe de extensão de conjunto de parâmetros de vídeo exemplificadora.
[0044] A Figura 30 ilustra uma sintaxe de extensão de conjunto de parâmetros de vídeo exemplificadora.
[0045] A Figura 31 ilustra uma sintaxe de extensão de conjunto de parâmetros de vídeo exemplificadora.
[0046] A Figura 32 ilustra uma sintaxe de extensão de conjunto de parâmetros de vídeo exemplificadora.
[0047] A Figura 33 ilustra uma sintaxe de extensão de conjunto de parâmetros de vídeo exemplificadora.
[0048] A Figura 34 ilustra uma sintaxe de conjunto de parâmetros de vídeo exemplificadora.
[0049] A Figura 35 ilustra uma sintaxe de extensão de conjunto de parâmetros de vídeo exemplificadora.
[0050] A Figura 36 ilustra uma sintaxe de alteração de conjuntos de camadas de saída exemplificadora.
[0051] A Figura 37 ilustra outra sintaxe de alteração de conjuntos de camadas de saída exemplificadora.
[0052] A Figura 38A ilustra uma sintaxe de extensão de parâmetro de vídeo exemplificadora.
[0053] A Figura 38B ilustra uma sintaxe de extensão de parâmetro de vídeo exemplificadora.
[0054] A Figura 39A ilustra uma sintaxe op_dpb_info_parameters(j) exemplificadora.
[0055] A Figura 39B ilustra uma sintaxe op_dpb_info_parameters(j) exemplificadora.
[0056] A Figura 40 ilustra outra sintaxe de extensão de parâmetro de vídeo exemplificadora.
[0057] A Figura 41 ilustra outra sintaxe oop_dpb_info_parameters(j) exemplificadora.
[0058] A Figura 42 ilustra outra sintaxe oop_dpb_info_parameters(j) exemplificadora.
[0059] A Figura 43 ilustra uma sintaxe num_dpb_info_parameters exemplificadora.
[0060] A Figura 44 ilustra outra sintaxe oop_dpb_info_parameters(j) exemplificadora.
[0061] A Figura 45 ilustra outra sintaxe num_dpb_info_parameters exemplificadora.
[0062] A Figura 46 ilustra outra sintaxe num_dpb_info_parameters exemplificadora.
[0063] A Figura 47 ilustra outra sintaxe de extensão de parâmetro de vídeo exemplificadora e layer_dpb_info(i).
[0064] A Figura 48 ilustra uma sintaxe oop_dpb_info_parameters andlayer_dpb_info(i) exemplificadora.
[0065] A Figura 49A ilustra outro vps_extension() exemplificador.
[0066] A Figura 49B ilustra outro vps_extension() exemplificador.
[0067] A Figura 50 ilustra um oop_dpb_maxbuffering_parameters(i) exemplificador.
[0068] A Figura 51 ilustra um layer_dpb_info_parameters(i) exemplificador.
[0069] A Figura 52 ilustra outro vps_extension() exemplificador.
[0070] A Figura 53 ilustra outro vps_extension() exemplificador.
[0071] A Figura 54 ilustra um oop_dpb_maxbuffering_parameters(i,k) exemplificador.
[0072] A Figura 55 ilustra um oop_dpb_maxbuffering_parameters(i,k) exemplificador.
[0073] A Figura 56 ilustra outro vps_extension() exemplificador.
[0074] A Figura 57 ilustra um oop_dpb_maxbuffering_parameters(i,k) exemplificador.
[0075] A Figura 58 ilustra um oop_dpb_maxbuffering_parameters(i,k) exemplificador.
[0076] A Figura 59 ilustra um oop_dpb_maxbuffering_parameters(i,k) exemplificador.
[0077] A Figura 60 ilustra um oop_dpb_maxbuffering_parameters(i,k) exemplificador.
[0078] A Figura 61 ilustra um oop_dpb_maxbuffering_parameters(i,k) exemplificador.
[0079] A Figura 62 ilustra um seq_parameter_set_rbsp() exemplificador.
[0080] A Figura 63 é um diagrama de blocos que ilustra a codificação de vídeo entre múltiplos dispositivos eletrônicos.
[0081] A Figura 64 é um fluxograma de um método para operação de memória temporária de imagem decodificada (DPB) híbrida.
[0082] A Figura 65 é um fluxograma de outro método para operação de memória temporária de imagem decodificada (DPB) híbrida.
[0083] A Figura 66 é um diagrama de blocos que ilustra uma configuração de um decodificador;
[0084] A Figura 67A é um diagrama de blocos que ilustra o uso tanto de uma camada de otimização como de uma camada-base para a codificação de vídeo com módulos de operação de memórias temporárias de imagem decodificada (DPBs) separadas e memória temporária de imagem decodificada (DPB) híbrida separada para a camada-base e a camada de otimização.
[0085] A Figura 67B é um diagrama de blocos que ilustra o uso de um módulo de operação de uma memória temporária de imagem decodificada (DPB) compartilhada e uma memória temporária de imagem decodificada (DPB) híbrida compartilhada para a camada- base e a camada de otimização.
[0086] A Figura 68 é um diagrama de tempo que ilustra uma operação de memória temporária de imagem decodificada (DPB) híbrida.
[0087] A Figura 69 é um diagrama de blocos que ilustra estrutura e tempo para unidades de camada de abstração de rede (NAL) de camadas para imagens codificadas e unidades de acesso (AUs), quando a segunda camada de otimização (EL2) tem uma taxa de imagem inferior à camada-base (BL) e à primeira camada de otimização (EL1).
[0088] A Figura 70 é um diagrama de blocos que ilustra estrutura e tempo para unidades de camada de abstração de rede (NAL) de camadas para imagens codificadas e unidades de acesso (AUs), quando a camada-base (BL) tem uma taxa de imagem inferior à primeira camada de otimização (EL1) e à segunda camada de otimização (EL2).
[0089] DESCRIÇÃO DAS MODALIDADES
EXEMPLO 1
[0090] É descrito um dispositivo eletrônico para enviar uma mensagem. O dispositivo eletrônico inclui um processador e instruções armazenadas na memória que está em comunicação eletrônica com o processador. O dispositivo eletrônico determina, quando uma memória temporária de imagem codificada (CPB) suporta a operação em um nível de sub-imagem, se deve incluir um parâmetro de atraso de remoção de CPB de unidade de decodificação comum em uma mensagem de informações de otimização suplementar (SEI) de tempo de imagem. O dispositivo eletrônico também gera, quando o parâmetro de atraso de remoção de CPB de unidade de decodificação comum deve ser incluído na mensagem SEI de tempo de imagem (ou alguma outra mensagem SEI ou algum outro conjunto de parâmetros, por exemplo, conjunto de parâmetros de imagem, conjunto de parâmetros de sequência, conjunto de parâmetros de vídeo ou conjunto de parâmetros de adaptação), o parâmetro de atraso de remoção de CPB de unidade de decodificação comum, em que o parâmetro de atraso de remoção de CPB de unidade de decodificação comum é aplicável a todas as unidades de decodificação em uma unidade de acesso a partir da CPB. O dispositivo eletrônico também gera, quando o parâmetro de atraso de remoção de CPB de unidade de decodificação comum não deve ser incluído na mensagem SEI de tempo de imagem, um parâmetro de atraso de remoção de CPB de unidade de decodificação separado para cada unidade de decodificação na unidade de acesso. O dispositivo eletrônico também envia a mensagem SEI de tempo de imagem com o parâmetro de atraso de remoção de CPB de unidade de decodificação comum ou os parâmetros de atraso de remoção de CPB de unidade de decodificação.
[0091] O parâmetro de atraso de remoção de CPB de unidade de decodificação comum pode especificar uma quantidade de tiques de relógio de sub-imagem a aguardar após a remoção a partir da CPB de uma unidade de decodificação imediatamente precedente antes da remoção a partir da CPB de uma unidade de decodificação atual na unidade de acesso associada à mensagem SEI de tempo de imagem.
[0092] Adicionalmente, quando uma unidade de decodificação é a uma primeira unidade de decodificação em uma unidade de acesso, o parâmetro de atraso de remoção de CPB de unidade de decodificação comum pode especificar uma quantidade de tiques de relógio de sub- imagem a aguardar após a remoção a partir da CPB de uma última unidade de decodificação em uma unidade de acesso associada a uma mensagem SEI de período de armazenamento temporário mais recente em uma unidade de acesso precedente, antes da remoção a partir da CPB da primeira unidade de decodificação na unidade de acesso associada à mensagem SEI de tempo de imagem.
[0093] Em contrapartida, quando a unidade de decodificação é a uma unidade de decodificação diferente da primeira em uma unidade de acesso, o parâmetro de atraso de remoção de CPB de unidade de decodificação comum pode especificar uma quantidade de tiques de relógio de sub-imagem a aguardar após a remoção a partir da CPB de uma unidade de decodificação precedente na unidade de acesso associada à mensagem SEI de tempo de imagem.
[0094] Os parâmetros de atraso de remoção de CPB de unidade de decodificação podem especificar uma quantidade de tiques de relógio de sub-imagem a aguardar após a remoção a partir da CPB da última unidade de decodificação, antes da remoção a partir da CPB de uma i-ésima unidade de decodificação na unidade de acesso associada à mensagem SEI de tempo de imagem.
[0095] O dispositivo eletrônico pode calcular os parâmetros de atraso de remoção de CPB de unidade de decodificação de acordo com um resto de um contador de módulo 2 (cpb_removal_delay_length_minus1 + 1), em que cpb_removal_delay_length_minus1 + 1 é um comprimento de um parâmetro de atraso de remoção de CPB de unidade de decodificação comum.
[0096] O dispositivo eletrônico também pode gerar, quando a CPB suporta a operação em um nível de unidade de acesso, uma mensagem SEI de tempo de imagem que inclui um parâmetro de atraso de remoção de CPB que especifica quantos tiques de relógio aguardar após a remoção a partir da CPB de uma unidade de acesso associada a uma mensagem SEI de período de armazenamento temporário mais recente em uma unidade de acesso precedente, antes da remoção a partir da CPB dos dados de unidade de acesso associados à mensagem SEI de tempo de imagem.
[0097] O dispositivo eletrônico também pode determinar se a CPB suporta a operação em um nível de sub-imagem ou um nível de unidade de acesso. Isso pode incluir determinar um sinalizador de tempo de imagem que indica se uma memória temporária de imagem codificada (CPB) fornece parâmetros que suportam a operação em um nível de sub-imagem com base em um valor do sinalizador de tempo de imagem. O sinalizador de tempo de imagem pode ser incluído na mensagem SEI de tempo de imagem.
[0098] A determinação se deve incluir um parâmetro de atraso de remoção de CPB de unidade de decodificação comum pode incluir definir um sinalizador de atraso de remoção de CPB de unidade de decodificação comum para 1, quando o parâmetro de atraso de remoção de CPB de unidade de decodificação comum deve ser incluído na mensagem SEI de tempo de imagem. A mesma também pode incluir definir o sinalizador de atraso de remoção de CPB de unidade de decodificação comum para 0, quando o parâmetro de atraso de remoção de CPB de unidade de decodificação comum não deve ser incluído na mensagem SEI de tempo de imagem. O sinalizador de atraso de remoção de CPB de unidade de decodificação comum pode ser incluído na mensagem SEI de tempo de imagem.
[0099] O dispositivo eletrônico também pode gerar, quando a CPB suporta a operação em um nível de sub-imagem, parâmetros relacionados a unidades de camada de abstração de rede separadas (NAL) que indicam uma quantidade, deslocada em um, de unidades de NAL para cada unidade de decodificação em uma unidade de acesso. Alternativa ou adicionalmente, o dispositivo eletrônico pode gerar um parâmetro de NAL comum que indica uma quantidade, deslocada em um, de unidades de NAL comuns a cada unidade de decodificação em uma unidade de acesso.
[00100] Também é descrito um dispositivo eletrônico para armazenar temporariamente um fluxo de bits. O dispositivo eletrônico inclui um processador e instruções armazenadas na memória que está em comunicação eletrônica com o processador. O dispositivo eletrônico determina que uma CPB sinaliza parâmetros em um nível de sub-imagem para uma unidade de acesso. O dispositivo eletrônico também determina, quando uma mensagem de informações de otimização suplementar (SEI) de tempo de imagem recebida compreende o sinalizador de atraso de remoção de unidade de decodificação memória temporária de imagem codificada (CPB) comum, um parâmetro de atraso de remoção de CPB de unidade de decodificação comum aplicável a todas as unidades de codificação na unidade de acesso. O dispositivo eletrônico também determina, quando a mensagem SEI de tempo de imagem não compreende o sinalizador de atraso de remoção de CPB de unidade de decodificação comum, um parâmetro de atraso de remoção de CPB de unidade de decodificação separado para cada unidade de decodificação na unidade de acesso. O dispositivo eletrônico também remove as unidades de codificação a partir da CPB com o uso do parâmetro de atraso de remoção de CPB de unidade de decodificação comum ou dos parâmetros de atraso de remoção de CPB de unidade de decodificação separado. O dispositivo eletrônico também decodifica as unidades de decodificação na unidade de acesso.
[00101] Em uma configuração, o dispositivo eletrônico determina que um sinalizador de tempo de imagem é definido na mensagem SEI de tempo de imagem. O dispositivo eletrônico também pode definir um parâmetro de atraso de remoção de CPB, cpb_removal_delay, de acordo com [MATEMÁTICA 1]
Figure img0001
[00102] em que du_cpb_removal_delay[i] são os parâmetros de atraso de remoção de CPB de unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de codificação na unidade de acesso deslocada em um, e i é um índice.
[00103] Alternativamente, o dispositivo eletrônico pode definir um parâmetro de atraso de remoção de CPB, cpb_removal_delay, e du_cpb_removal_delay[num_decoding_units_minus1], a fim de satisfazer a equação [MATEMÁTICA 2]
Figure img0002
[00104] em que du_cpb_removal_delay[i] são os parâmetros de atraso de remoção de CPB de unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de codificação na unidade de acesso deslocada em um, e i é um índice.
[00105] Alternativamente, o dispositivo eletrônico pode definir um parâmetro de atraso de remoção de CPB, cpb_removal_delay, e du_cpb_removal_delay[num_decoding_units_minus1] de acordo com cpb_removal_delay*tc = du_cpb_removal_delay[num_decoding_units_minus1]* tc_sub em que du_cpb_removal_delay[num_decoding_units_minus1] é o parâmetro de atraso de remoção de CPB de unidade de decodificação para a num_decoding_units_minus1-ésima unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de codificação na unidade de acesso deslocada em um.
[00106] Em uma configuração, o dispositivo eletrônico determina que um sinalizador de tempo de imagem é definido na mensagem SEI de tempo de imagem. O dispositivo eletrônico também pode definir parâmetros de atraso de remoção de CPB, cpb_removal_delay, e du_cpb_removal_delay[num_decoding_units_minus1], a fim de satisfazer a equação: -1<=(cpb_removal_delay*tc - du_cpb_removal_delay[num_decoding_units_minus1]* tc,sub) <=1 em que du_cpb_removal_delay[num_decoding_units_minus1] é o parâmetro de atraso de remoção de CPB de unidade de decodificação para a num_decoding_units_minus1-ésima unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de codificação na unidade de acesso deslocada em um.
[00107] Uma variável ClockDiff pode ser definida como ClockDiff = (num_units_in_tick- (num_units_in_sub_tick*(num_decoding_units_minus1+1)) / time_scale), em que num_units_in_tick é o número de unidades de tempo de um relógio que opera na frequência time_scale Hz que corresponde a um incremento de um contador de tique de relógio, num_units_in_sub_tick é o número de unidades de tempo de um relógio que opera na frequência time_scale Hz que corresponde a um incremento de um contador de tique de relógio de sub-imagem, num_decoding_units_minus1+1 é uma quantidade de unidades de codificação na unidade de acesso, e time_scale é o número de unidades de tempo que passam em um segundo.
[00108] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1, a CPB está operando a nível de sub-imagem e ClockDiff é maior que zero, o tempo de remoção para a unidade de decodificação m, tr(m) é determinado de acordo com: tr(m) = tr,n(m) + tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub) + ClockDiff , em que tr,n(m) é o tempo de remoção nominal da unidade de decodificação m, tc_sub é um tique de relógio de sub-imagem, Ceil() é uma função de teto e taf(m) é o tempo de chegada final de unidade de decodificação m.
[00109] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1, a CPB está operando a um nível de unidade de acesso e ClockDiff é maior que zero, o tempo de remoção para a unidade de acesso n, tr(n) é determinado de acordo com: tr(n)= tr,n(n) + tc * Ceil((taf(n) - tr,n(n)) / tc) - ClockDiff, em que tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é um tique de relógio, Ceil() é uma função de teto e taf(n) é um tempo de chegada final da unidade de acesso n.
[00110] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m),um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + max((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), (tc * Ceil((taf(n) - tr,n(n)) / tc))), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00111] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para a unidade de acesso n, tr(n) de acordo com: tr(n) = tr,n(n) + max((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), (tc * Ceil((taf(n) - tr,n(n)) / tc))), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00112] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + min((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), (tc * Ceil((taf(n) - tr,n(n)) / tc))), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00113] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para a unidade de acesso n, tr(n) de acordo com: tr(n) = tr,n(n) + min((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), (tc * Ceil((taf(n) - tr,n(n)) / tc))), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00114] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + (tc * Ceil((taf(n) - tr,n(n)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00115] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para a unidade de acesso n, tr(n) de acordo com: tr(n) = tr,n(n) + (tc * Ceil((taf(n) - tr,n(n)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00116] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para uma unidade de decodificação m, a qual não é a última unidade de decodificação, é definido como tr(m) = taf(m), em que taf(m) é um tempo de chegada final da unidade de decodificação m. Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para uma unidade de decodificação m, a qual é a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + (tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio, taf(n) é um tempo de chegada final da unidade de acesso n, e taf(m) é um tempo de chegada final da última unidade de decodificação m na unidade de acesso n.
[00117] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para uma unidade de decodificação m, a qual não é a última unidade de decodificação, é definido como tr(m) = taf(m), em que taf(m) é um tempo de chegada final da unidade de decodificação m. Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para uma unidade de decodificação m, a qual é a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + (tc * Ceil((taf(m) - tr,n(m)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio, taf(n) é um tempo de chegada final da unidade de acesso n, e taf(m) é um tempo de chegada final da última unidade de decodificação m na unidade de acesso n.
[00118] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a unidade de decodificação m é definido como tr(m) = taf(m), em que tr,n(m) é o tempo de remoção nominal da unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio, taf(n) é um tempo de chegada final da unidade de acesso n, e taf(m) é um tempo de chegada final da unidade de decodificação m na unidade de acesso n.
[00119] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para unidade de acesso n, tr(n) de acordo com: tr(n) = taf(n), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00120] Adicionalmente, em alguns casos, um sinalizador pode ser enviado em parte do fluxo de bits para sinalizar quais das equações alternativas acima são usadas para decidir o tempo de remoção das unidades de decodificação e o tempo de remoção da unidade de acesso. Em um caso o sinalizador pode ser chamado de du_au_cpb_alignment_mode_flag. Se du_au_cpb_alignment_mode_flag for 1, então, as equações acima que alinham a operação da CPB que opera no modo à base de sub- imagem com a CPB que opera no modo de unidade de acesso são usadas. Se du_au_cpb_alignment_mode_flag for 0, então, as equações acima que não alinham a operação da CPB que opera no modo à base de sub-imagem com a CPB que opera no modo de unidade de acesso são usadas.
[00121] Em um caso, o sinalizador du_au_cpb_alignment_mode_flag pode ser sinalizado nas informações de usabilidade de vídeo (VUI). Em outro caso, o sinalizador du_au_cpb_alignment_mode_flag pode ser enviado na mensagem SEI de tempo de imagem. Em ainda outro caso, o sinalizador du_au_cpb_alignment_mode_flag pode ser enviado em alguma outra parte normativa do fluxo de bits. Um exemplo de semântica e sintaxe modificada de acordo com os sistemas e métodos revelados no presente documento é dado na Tabela (0) conforme exposto a seguir. [TABELA 0]
Figure img0003
[00122] Deve-se observar que símbolos (nomes) diferentes daqueles usados acima para diversas variáveis podem ser usados. Por exemplo, tr(n) da unidade de acesso n pode ser chamado de CpbRemovalTime(n), tr(m) da unidade de decodificação n pode ser chamado de CpbRemovalTime(m), tc_sub pode ser chamado de ClockSubTick, tc pode ser chamado de ClockTick, taf(n) da unidade de acesso m pode ser chamado de FinalArrivalTime(n) da unidade de acesso n, taf(m) da unidade de decodificação m pode ser chamado de FinalArrivalTime(m), tr,n(n) pode ser chamado de NominalRemovalTime(n) da unidade de acesso n, tr,n(m) pode ser chamado de NominalRemovalTime(m) da unidade de decodificação m.
[00123] Também é descrito um método para enviar uma mensagem por um dispositivo eletrônico. O método inclui determinar, quando uma memória temporária de imagem codificada (CPB) suporta a operação em um nível de sub-imagem, se deve incluir um parâmetro de atraso de remoção de CPB de unidade de decodificação comum em uma mensagem de informações de otimização suplementar (SEI) de tempo de imagem. O método inclui também gerar, quando o parâmetro de atraso de remoção de CPB de unidade de decodificação comum deve ser incluído na mensagem SEI de tempo de imagem, o parâmetro de atraso de remoção de CPB de unidade de decodificação comum, em que o parâmetro de atraso de remoção de CPB de unidade de decodificação comum é aplicável a todas as unidades de decodificação em uma unidade de acesso a partir da CPB. O método inclui também gerar, quando o parâmetro de atraso de remoção de CPB de unidade de decodificação comum não deve ser incluído na mensagem SEI de tempo de imagem, um parâmetro de atraso de remoção de CPB de unidade de decodificação separado para cada unidade de decodificação na unidade de acesso. O método inclui também enviar a mensagem SEI de tempo de imagem com o parâmetro de atraso de remoção de CPB de unidade de decodificação comum ou os parâmetros de atraso de remoção de CPB de unidade de decodificação.
[00124] Também é descrito um método para armazenar temporariamente um fluxo de bits por um dispositivo eletrônico. O método inclui determinar que uma CPB sinaliza parâmetros em um nível de sub-imagem para uma unidade de acesso. O método inclui também determinar, quando uma mensagem de informações de otimização suplementar (SEI) de tempo de imagem recebida compreende o sinalizador de atraso de remoção de unidade de decodificação memória temporária de imagem codificada (CPB) comum, um parâmetro de atraso de remoção de CPB de unidade de decodificação comum aplicável a todas as unidades de codificação na unidade de acesso. O método inclui também determinar, quando a mensagem SEI de tempo de imagem não compreende o sinalizador de atraso de remoção de CPB de unidade de decodificação comum, um parâmetro de atraso de remoção de CPB de unidade de decodificação separado para cada unidade de decodificação na unidade de acesso. O método inclui também remover as unidades de codificação a partir da CPB com o uso do parâmetro de atraso de remoção de CPB de unidade de decodificação comum ou dos parâmetros de atraso de remoção de CPB de unidade de decodificação separado. O método inclui também decodificar as unidades de decodificação na unidade de acesso.
[00125] Os sistemas e métodos revelados no presente documento descrevem dispositivos eletrônicos para enviar uma mensagem e armazenar temporariamente um fluxo de bits. Por exemplo, os sistemas e métodos revelados no presente documento descrevem o armazenamento temporário para fluxos de bits começando com parâmetros de sub-imagem. Em algumas configurações, os sistemas e métodos revelados no presente documento podem descrever a sinalização de parâmetros de decodificador hipotético de referência à base de sub-imagem (HRD). Por exemplo, os sistemas e métodos revelados no presente documento descrevem a modificação para uma mensagem de informações de otimização suplementar (SEI) de tempo de imagem. Os sistemas e métodos revelados no presente documento (por exemplo, a modificação de HRD) podem resultar na sinalização mais compacta de parâmetros quando cada sub-imagem chega e é removida a partir da CPB em intervalos regulares.
[00126] Adicionalmente, quando os parâmetros de atraso de remoção de CPB de nível de sub-imagem estão presentes, a memória temporária de imagem codificada (CPB) pode operar a nível de unidade de acesso ou nível de sub-imagem. Os presentes sistemas e métodos também podem impor uma restrição de fluxo de bits de modo que a operação da CPB à base de nível de sub-imagem e a operação da CPB a nível de unidade de acesso resultem no mesmo tempo da remoção de unidade de decodificação. Especificamente, o tempo de remoção da última unidade de decodificação em uma unidade de acesso sob operação no modo de sub-imagem e o tempo de remoção da unidade de acesso sob operação no modo de unidade de acesso serão os mesmos.
[00127] Deve-se observar que, embora o termo “hipotético” seja usado em referência a um HRD, o HRD pode ser implantado fisicamente. Por exemplo, “HRD” pode ser usado para descrever uma implantação de um decodificador real. Em algumas configurações, um HRD pode ser implantado a fim de determinar se um fluxo de bits está em conformidade com as especificações da codificação de vídeo de alta eficiência (HEVC). Por exemplo, um HRD pode ser usado para determinar se os fluxos de bits do tipo I e os fluxos de bits do tipo II estão em conformidade com as especificações de HEVC. Um fluxo de bits do tipo I pode conter apenas unidades de camada de acesso de rede (NAL) da camada de codificação de vídeo (VCL) e unidades de NAL de dados de preenchimento. Um fluxo de bits do tipo II pode conter outras unidades de NAL adicionais e elementos de sintaxe.
[00128] O documento da Joint Collaborative Team on Video Coding (JCTVC) JCTVC-I0333 inclui HRD à base de sub-imagem e suporta mensagens SEI de tempo de imagem. A funcionalidade tem sido incorporada na Minuta do Comitê de Codificação de Vídeo de Alta Eficiência (HEVC) (JCTVC-I1003), incorporada no presente documento a título de referência, em sua totalidade. B. Bros, W-J. Han, J-R. Ohm, G.J. Sullivan, Wang, e T-. Wiegand, “High efficiency video coding (HEVC) text specification draft 10 (para DFIS & Last Call)”, JCTVC-J10003_v34, Geneva, janeiro de 2013, está incorporado ao presente documento a título de referência, em sua totalidade. B. Bros, W-J. Han, J-R. Ohm, G.J. Sullivan, Wang, e T-. Wiegand, “High efficiency video coding (HEVC) text specification draft 10”, JCTVC- L1003, Geneva, janeiro de 2013, está incorporado ao presente documento a título de referência, em sua totalidade.
[00129] Um exemplo de semântica e sintaxe modificada de acordo com os sistemas e métodos revelados no presente documento é dado na Tabela (1) conforme exposto a seguir. [TABELA 1]
Figure img0004
[00130] Os exemplos relacionados à semântica de mensagem SEI de período de armazenamento temporário, de acordo com os sistemas e métodos revelados no presente documento, são dados conforme exposto a seguir. Em particular, os detalhes adicionais relacionados à semântica dos elementos de sintaxe modificados são dados conforme exposto a seguir. Quando NalHrdBpPresentFlag ou VclHrdBpPresentFlag são iguais a 1, uma mensagem SEI de período de armazenamento temporário pode ser associada a qualquer unidade de acesso no fluxo de bits, e uma mensagem SEI de período de armazenamento temporário pode ser associada a cada unidade de acesso IDR, com cada unidade de acesso CRA, e com cada unidade de acesso associada a uma mensagem SEI de ponto de recuperação. Para algumas aplicações, a presença frequente de uma mensagem SEI de período de armazenamento temporário pode ser desejável. Um período de armazenamento temporário é especificado como o conjunto de unidades de acesso entre duas instâncias da mensagem SEI de período de armazenamento temporário na ordem de decodificação.
[00131] “seq_parameter_set_id” especifica o conjunto de parâmetros de sequência que contém os atributos de HRD de sequência. O valor de seq_parameter_set_id pode ser igual ao valor de seq_parameter_set_id no conjunto de parâmetros de imagem mencionado pela imagem codificada primária associada à mensagem SEI de período de armazenamento temporário. O valor de seq_parameter_set_id pode ser na faixa de 0 a 31, inclusive.
[00132] “initial_cpb_removal_delay”[ SchedSelIdx ] especifica o atraso para a SchedSelIdx-ésima CPB entre o tempo de chegada na CPB do primeiro bit dos dados codificados associados à unidade de acesso associada à mensagem SEI de período de armazenamento temporário e o tempo de remoção a partir da CPB dos dados codificados associados à mesma unidade de acesso, para o primeiro período de armazenamento temporário após a inicialização de HRD. O elemento de sintaxe tem um comprimento em bits dado por initial_cpb_removal_delay_length_minus1 + 1. Isto é em unidades de um relógio de 90 kHz. initial_cpb_removal_delay[ SchedSelIdx ] pode não ser igual a 0 e pode não exceder 90000 * (CpbSize[ SchedSelIdx ] / BitRate[ SchedSelIdx ]), o equivalente de tempo do tamanho de CPB em unidades de relógio de 90 kHz.
[00133] “initial_cpb_removal_delay_offset”[ SchedSelIdx ] é usado para a SchedSelIdx-ésima CPB em combinação com o cpb_removal_delay para especificar o tempo de entrega inicial de unidades de acesso codificadas para a CPB. initial_cpb_removal_delay_offset[ SchedSelIdx ] é em unidades de um relógio de 90 kHz. O elemento de sintaxe initial_cpb_removal_delay_offset[ SchedSelIdx ] é um código de comprimento fixo cujo comprimento em bits é dado por initial_cpb_removal_delay_length_minus1 + 1. Esse elemento de sintaxe não é usado por decodificadores e é necessário apenas para o agendador de entrega (HSS) (por exemplo, conforme especificado no anexo C de JCTVC-I1003).
[00134] Sobre toda a sequência de vídeo codificada, a soma de initial_cpb_removal_delay[ SchedSelIdx ] e initial_cpb_removal_delay_offset[ SchedSelIdx ] pode ser constante para cada valor de SchedSelIdx.
[00135] “initial_du_cpb_removal_delay"[ SchedSelIdx ] especifica o atraso para a SchedSelIdx-ésima CPB entre o tempo de chegada à CPB do primeiro bit dos dados codificados associados à primeira unidade de decodificação na unidade de acesso associada à mensagem SEI de período de armazenamento temporário e o tempo de remoção a partir da CPB dos dados codificados associados à mesma unidade de decodificação, para o primeiro período de armazenamento temporário após a inicialização de HRD. O elemento de sintaxe tem um comprimento em bits dado por initial_cpb_removal_delay_length_minus1 + 1. Isto é em unidades de um relógio de 90 kHz. initial_du_cpb_removal_delay[ SchedSelIdx ] pode não ser igual a 0 e pode não exceder 90000 * (CpbSize[ SchedSelIdx ] / BitRate[ SchedSelIdx ]), o equivalente de tempo do tamanho de CPB em unidades de relógio de 90 kHz.
[00136] “initial_du_cpb_removal_delay_offset”[ SchedSelIdx ] é usado para a SchedSelIdx-ésima CPB em combinação com o cpb_removal_delay para especificar o tempo de entrega inicial de unidades de decodificação para a CPB.
[00137] initial_cpb_removal_delay_offset[ SchedSelIdx ] é em unidades de um relógio de 90 kHz. O elemento de sintaxe initial_du_cpb_removal_delay_offset[ SchedSelIdx ] é um código de comprimento fixo cujo comprimento em bits é dado por initial_cpb_removal_delay_length_minus1 + 1. Esse elemento de sintaxe não é usado por decodificadores e é necessário apenas para o agendador de entrega (HSS) (por exemplo, conforme especificado no anexo C de JCTVC-I1003).
[00138] Sobre toda a sequência de vídeo codificada, a soma de initial_du_cpb_removal_delay[ SchedSelIdx ] e initial_du_cpb_removal_delay_offset[ SchedSelIdx ] pode ser constante para cada valor de SchedSelIdx.
[00139] Os exemplos relacionados à semântica de mensagem SEI de tempo de imagem, de acordo com os sistemas e métodos revelados no presente documento, são dados conforme exposto a seguir. Em particular, os detalhes adicionais relacionados à semântica dos elementos de sintaxe modificados são dados conforme exposto a seguir.
[00140] A sintaxe da mensagem SEI de tempo de imagem depende do conteúdo do conjunto de parâmetros de sequência que é ativo para a imagem codificada associada à mensagem SEI de tempo de imagem. Contudo, exceto quando a mensagem SEI de tempo de imagem de uma unidade de acesso de renovação de decodificação instantânea (IDR) é precedida por uma mensagem SEI de período de armazenamento temporário dentro da mesma unidade de acesso, a ativação do conjunto de parâmetros de sequência associado (e, para imagens de IDR que não são a primeira imagem no fluxo de bits, a determinação que a imagem codificada é uma imagem de IDR) não ocorre até a decodificação da primeira unidade de camada de abstração de rede (NAL) de fatia codificada da imagem codificada. Uma vez que a unidade de NAL de fatia codificada da imagem codificada segue a mensagem SEI de tempo de imagem em ordem de unidade de NAL, pode haver casos em que é necessário que um decodificador armazene a carga útil de sequência de byte em bruto (RBSP) que contém a mensagem SEI de tempo de imagem até a determinação dos parâmetros do parâmetro de sequência que será ativo para a imagem codificada, e, então, realize a análise da mensagem SEI de tempo de imagem.
[00141] A presença da mensagem SEI de tempo de imagem no fluxo de bits é especificada conforme exposto a seguir. Se CpbDpbDelaysPresentFlag for igual a 1, uma mensagem SEI de tempo de imagem pode estar presente em cada unidade de acesso da sequência de vídeo codificada. De outro modo (CpbDpbDelaysPresentFlag é igual a 0), nenhuma mensagem SEI de tempo de imagem pode estar presente em qualquer unidade de acesso da sequência de vídeo codificada.
[00142] “cpb_removal_delay” especifica quantos tiques de relógio (consulte a subcláusula E.2.1 de JCTVC-I1003) aguardar após a remoção a partir da CPB da unidade de acesso associada à mensagem SEI de período de armazenamento temporário mais recente em uma unidade de acesso precedente antes da remoção a partir da memória temporária dos dados de unidade de acesso associados à mensagem SEI de tempo de imagem. Esse valor também é usado para calcular um tempo possível precoce de chegada de dados da unidade de acesso na CPB para o HSS, conforme especificado no anexo C de JCTVC-I1003. O elemento de sintaxe é um código de comprimento fixo cujo comprimento em bits é dado por cpb_removal_delay_length_minus1 + 1. O cpb_removal_delay é o resto de um contador de módulo 2(cpb_removal_delay_length_minus1 + 1) .
[00143] O valor de cpb_removal_delay_length_minus1 que determina o comprimento (em bits) do elemento de sintaxe cpb_removal_delay é o valor de cpb_removal_delay_length_minus1 codificado no conjunto de parâmetros de sequência que está ativo para a imagem codificada primária associada à mensagem SEI de tempo de imagem, embora cpb_removal_delay especifique um número de tiques de relógio em relação ao tempo de remoção da unidade de acesso precedente que contém uma mensagem SEI de período de armazenamento temporário, a qual pode ser uma unidade de acesso de uma sequência de vídeo codificada diferente.
[00144] “dpb_output_delay” é usado para computar o tempo de saída da memória temporária de imagem decodificada (DPB) da imagem. O mesmo especifica quantos tiques de relógio aguardar após a remoção da última unidade de decodificação em uma unidade de acesso a partir da CPB antes da imagem decodificada ser emitida a partir da DPB (consulte a subcláusula C.2 de JCTVC-I1003).
[00145] Em relação à DPB, uma imagem não é removida da DPB em seu tempo de saída, quando ainda é marcada como “usada para referência a curto prazo” ou “usada para referência a longo prazo”. Apenas um dpb_output_delay é especificado para uma imagem decodificada. O comprimento do elemento de sintaxe dpb_output_delay é dado em bits por dpb_output_delay_length_minus1 + 1. Quando max_dec_pic_buffering[ max_temporal_layers_minus1 ] é igual a 0, dpb_output_delay pode ser igual a 0.
[00146] O tempo de saída derivado a partir do dpb_output_delay de qualquer imagem que é emitida a partir de um decodificador de conformidade de tempo de saída, conforme especificado na subcláusula C.2 de JCTVC-I1003, pode preceder o tempo de saída derivado a partir do dpb_output_delay de todas as imagens em qualquer sequência de vídeo codificada subsequente em ordem de decodificação. A ordem de saída de imagem estabelecida pelos valores desse elemento de sintaxe pode ser a mesma ordem conforme estabelecido pelos valores de PicOrderCnt(), conforme especificado pela subcláusula. Para imagens que não são emitidas pelo processo “bumping” (mapa de rugosidade) da subcláusula, devido ao fato de que precedem, na ordem de decodificação, uma imagem de IDR com no_output_of_prior_pics_flag igual a 1 ou inferida a ser igual a 1, os tempos de saída derivados a partir de dpb_output_delay podem ser crescentes com o valor crescente de PicOrderCnt() em relação a todas as imagens dentro da mesma sequência de vídeo codificada.
[00147] “num_decoding_units_minus1” mais 1 especifica o número de unidades de decodificação na unidade de acesso que a mensagem SEI de tempo de imagem está associada. O valor de num_decoding_units_minus1 pode se situar na faixa de 0 a PicWidthInCtbs * PicHeightInCtbs - 1, inclusive.
[00148] “common_du_cpb_removal_delay_flag” igual a 1 especifica que o elemento de sintaxe common_du_cpb_removal_delay está presente.
[00149] “common_du_cpb_removal_delay_flag” igual a 0 especifica que o elemento de sintaxe common_du_cpb_removal_delay não está presente.
[00150] “common_du_cpb_removal_delay” especifica informações conforme exposto a seguir: Se uma unidade de decodificação for a uma primeira unidade de decodificação na unidade de acesso associada à mensagem SEI de tempo de imagem, então, common_du_cpb_removal_delay especifica quantos tiques de relógio de sub-imagem (consulte a subcláusula E.2.1 de JCTVC-I1003) aguardar após a remoção a partir da CPB da última unidade de decodificação na unidade de acesso associada à mensagem SEI de período de armazenamento temporário mais recente em uma unidade de acesso precedente, antes da remoção a partir da CPB da primeira unidade de decodificação na unidade de acesso associada à mensagem SEI de tempo de imagem.
[00151] De outro modo, common_du_cpb_removal_delay especifica quantos tiques de relógio de sub-imagem (consulte a subcláusula E.2.1 de JCTVC-I1003) aguardar após a remoção a partir da CPB da unidade de decodificação precedente na unidade de acesso associada à mensagem SEI de tempo de imagem, antes da remoção a partir da CPB da unidade de decodificação atual na unidade de acesso associada à mensagem SEI de tempo de imagem. Esse valor também é usado para calcular um tempo possível precoce de chegada de dados de unidade de decodificação na CPB para o HSS, conforme especificado no anexo C. O elemento de sintaxe é um código de comprimento fixo cujo comprimento em bits é dado por cpb_removal_delay_length_minus1 + 1. O common_du_cpb_removal_delay é o resto de um contador de módulo 2(cpb_removal_delay_length_minus1 + 1).
[00152] Uma forma alternativa de especificar “common_du_cpb_removal_delay” é conforme exposto a seguir.
[00153] common_du_cpb_removal_delay especifica quantos tiques de relógio de sub-imagem (consulte a subcláusula E.2.1 de JCTVC- I1003) aguardar após a remoção a partir da CPB da última unidade de decodificação, antes da remoção a partir da CPB da unidade de decodificação atual na unidade de acesso associada à mensagem SEI de tempo de imagem. Esse valor também é usado para calcular um tempo possível precoce de chegada de dados de unidade de decodificação na CPB para o HSS, conforme especificado no anexo C. O elemento de sintaxe é um código de comprimento fixo cujo comprimento em bits é dado por cpb_removal_delay_length_minus1 + 1. O common_du_cpb_removal_delay é o resto de um contador de módulo 2(cpb_removal_delay_length_minus1 + 1).
[00154] O valor de cpb_removal_delay_length_minus1 que determina o comprimento (em bits) common_du_cpb_removal_delay cpb_removal_delay_length_minus1 do elemento de sintaxe é o valor de codificado no conjunto de parâmetros de sequência que está ativo para a imagem codificada associada à mensagem SEI de tempo de imagem, embora common_du_cpb_removal_delay especifique um número de tiques de relógio de sub-imagem em relação ao tempo de remoção da primeira unidade de decodificação na unidade de acesso precedente que contém uma mensagem SEI de período de armazenamento temporário, a qual pode ser uma unidade de acesso de uma sequência de vídeo codificada diferente.
[00155] “num_nalus_in_du_minus1[ i ]” mais 1 especifica o número de unidades de NAL na i-ésima unidade de decodificação da unidade de acesso que a mensagem SEI de tempo de imagem está associada. O valor de num_nalus_in_du_minus1[ i ] pode se situar na faixa de 0 a PicWidthInCtbs * PicHeightInCtbs - 1, inclusive.
[00156] A primeira unidade de decodificação da unidade de acesso consiste nas primeiras unidades de NAL consecutivas num_nalus_in_du_minus1[ 0 ] + 1 na ordem de decodificação na unidade de acesso. A i-ésima (com i maior que 0) unidade de decodificação da unidade de acesso consiste nas unidades de NAL consecutivas num_nalus_in_du_minus1[ i ] + 1 imediatamente após a última unidade de NAL na unidade de decodificação anterior da unidade de acesso, na ordem de decodificação. Pode haver pelo menos uma unidade de NAL de VCL em cada unidade de decodificação. Todas as unidades de NAL não VCL associadas a uma unidade de NAL de VCL podem ser incluídas na mesma unidade de decodificação.
[00157] “du_cpb_removal_delay[ i ]” especifica quantos tiques de relógio de sub-imagem (consulte a subcláusula E.2.1 de JCTVC-I1003) aguardar após a remoção a partir da CPB da primeira unidade de decodificação na unidade de acesso associada à mensagem SEI de período de armazenamento temporário mais recente em uma unidade de acesso precedente, antes da remoção a partir da CPB da i-ésima unidade de decodificação atual na unidade de acesso associada à mensagem SEI de tempo de imagem. Esse valor também é usado para calcular um tempo possível precoce de chegada de dados da unidade de decodificação na CPB para o HSS, conforme especificado no anexo C de JCTVC-I1003. O elemento de sintaxe é um código de comprimento fixo cujo comprimento em bits é dado por cpb_removal_delay_length_minus1 + 1. O du_cpb_removal_delay[ i ] é o resto de um contador de módulo 2(cpb_removal_delay_length_minus1 + 1).
[00158] O valor de cpb_removal_delay_length_minus1 que determina que o comprimento (em bits) do elemento de sintaxe du_cpb_removal_delay[ i ] é o valor de cpb_removal_delay_length_minus1 codificado no conjunto de parâmetros de sequência que está ativo para a imagem codificada associada à mensagem SEI de tempo de imagem, embora du_cpb_removal_delay[ i ] especifique um número de tiques de relógio de sub-imagem em relação ao tempo de remoção da primeira unidade de decodificação na unidade de acesso precedente que contém uma mensagem SEI de período de armazenamento temporário, a qual pode ser uma unidade de acesso de uma sequência de vídeo codificada diferente.
[00159] Em uma configuração, o tempo da remoção de unidade de decodificação e decodificação de unidades de decodificação pode ser implantado conforme exposto a seguir.
[00160] Se SubPicCpbFlag for igual a 0, a variável CpbRemovalDelay(m) é definida para o valor de cpb_removal_delay na mensagem SEI de tempo de imagem associada à unidade de acesso que é a unidade de decodificação m, e a variável Tc é definida para tc. De outro modo, se SubPicCpbFlag for igual a 1 e common_du_cpb_removal_delay_flag for 0, a variável CpbRemovalDelay(m) é definida para o valor de du_cpb_removal_delay[ i ] para a unidade de decodificação m (com m que se situa na faixa de 0 a num_decoding_units_minus1) na mensagem SEI de tempo de imagem associada à unidade de acesso que contém a unidade de decodificação m, e a variável Tc é definida para tc_sub.
[00161] Em alguns casos, se SubPicCpbFlag for igual a 1 e common_du_cpb_removal_delay_flag for 0, a variável CpbRemovalDelay(m) é definida para o valor de (m+1)*du_cpb_removal_delay[ i ] para a unidade de decodificação m (com m que se situa na faixa de 0 a num_decoding_units_minus1) na mensagem SEI de tempo de imagem associada à unidade de acesso que contém a unidade de decodificação m, e a variável Tc é definida para tc_sub.
[00162] De outro modo, se SubPicCpbFlag for igual a 1 e common_du_cpb_removal_delay_flag for 1, a variável CpbRemovalDelay(m) é definida para o valor de common_du_cpb_removal_delay para a unidade de decodificação m na mensagem SEI de tempo de imagem associada à unidade de acesso que contém a unidade de decodificação m, e a variável Tc é definida para tc_sub.
[00163] Quando uma unidade de decodificação m é a unidade de decodificação com n igual a 0 (a primeira unidade de decodificação da unidade de acesso que inicializa o HRD), o tempo de remoção nominal da unidade de decodificação a partir da CPB é especificado por tr,n(0) = InitCpbRemovalDelay[ SchedSelIdx ] / 90000.
[00164] Quando uma unidade de decodificação m é a primeira unidade de decodificação da primeira unidade de acesso de um período de armazenamento temporário que não inicializa o HRD, o tempo de remoção nominal da unidade de decodificação a partir da CPB é especificado por tr,n(m) = tr,n(mb) + Tc * CpbRemovalDelay(m), em que tr,n(mb) é o tempo de remoção nominal da primeira unidade de decodificação do período de armazenamento temporário anterior.
[00165] Quando uma unidade de decodificação m é a primeira unidade de decodificação de um período de armazenamento temporário, mb é definido igual a m no tempo de remoção tr,n(m) da unidade de decodificação m. O tempo de remoção nominal tr,n(m) de uma unidade de decodificação m que não é a primeira unidade de decodificação de um período de armazenamento temporário é dado por tr,n(m) = tr,n(mb) + Tc * CpbRemovalDelay(m), em que tr,n(mb) é o tempo de remoção nominal da primeira unidade de decodificação do período de armazenamento temporário atual.
[00166] O tempo de remoção da unidade de decodificação m é especificado conforme exposto a seguir. Se low_delay_hrd_foi igual a 0 ou tr,n(m) >= taf(m), o tempo de remoção da unidade de decodificação m é especificado por tr(m) = tr,n(m). De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)), o tempo de remoção de unidade de decodificação m é especificado por tr(m) = tr,n(m) + Tc * Ceil((taf(m) - tr,n(m)) / Tc). O último caso (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) indica que o tamanho da unidade de decodificação m, b(m), é grande de modo que impeça a remoção no tempo de remoção nominal.
[00167] Em outro caso, o tempo de remoção da unidade de decodificação m é especificado conforme exposto a seguir. Se low_delay_hrd_flag foi igual a 0 ou tr,n(m) >= taf(m), o tempo de remoção da unidade de decodificação m é especificado por tr(m) = tr,n(m). De outro modo (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)), o tempo de remoção da unidade de decodificação m, a qual não é a última unidade de decodificação na unidade de acesso, é especificado por tr(m) = taf(m), e o tempo de remoção da unidade de decodificação m, a qual não é a última unidade de decodificação na unidade de acesso tr(m) = tr,n(m) + Tc * Ceil((taf(m) - tr,n(m)) / tc). O último caso (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) indica que o tamanho da unidade de decodificação m, b(m), é grande de modo que impeça a remoção no tempo de remoção nominal.
[00168] Em outro caso, o tempo de remoção da unidade de decodificação m é especificado conforme exposto a seguir. Se low_delay_hrd_foi igual a 0 ou tr,n(m) >= taf(m), o tempo de remoção da unidade de decodificação m é especificado por tr(m) = tr,n(m). De outro modo (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)), o tempo de remoção da unidade de decodificação m, a qual não é a última unidade de decodificação na unidade de acesso, é especificado por tr(m) = taf(m), e o tempo de remoção da unidade de decodificação m, a qual não é a última unidade de decodificação na unidade de acesso tr(m) = tr,n(m) + tc * Ceil((taf(m) - tr,n(m)) / tc). O último caso (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) indica que o tamanho da unidade de decodificação m, b(m), é grande de modo que impeça a remoção no tempo de remoção nominal.
[00169] Em outro caso, o tempo de remoção da unidade de decodificação m é especificado conforme exposto a seguir. Se low_delay_hrd_foi igual a 0 ou tr,n(m) >= taf(m), o tempo de remoção da unidade de decodificação m é especificado por tr(m) = tr,n(m). De outro modo (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)), o tempo de remoção de unidade de decodificação m é especificado por tr(m) = taf(m). O último caso (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) indica que o tamanho da unidade de decodificação m, b(m), é grande de modo que impeça a remoção no tempo de remoção nominal.
[00170] Quando SubPicCpbFlag é igual a 1, o tempo de remoção de CPB nominal da unidade de acesso n tr,n(n) é definido para o tempo de remoção de CPB nominal da última unidade de decodificação na unidade de acesso n, o tempo de remoção de CPB da unidade de acesso n tr(n) é definido para o tempo de remoção de CPB da última unidade de decodificação na unidade de acesso n.
[00171] Quando SubPicCpbFlag é igual a 0, cada unidade de decodificação é uma unidade de acesso, por conseguinte, o tempo de remoção de CPB nominal e o tempo de remoção de CPB da unidade de acesso n são o tempo de remoção de CPB nominal e o tempo de remoção de CPB da unidade de decodificação n.
[00172] No tempo de remoção de CPB da unidade de decodificação m, a unidade de decodificação é instantaneamente decodificada.
[00173] Outro exemplo de semântica e sintaxe modificada para uma mensagem SEI de tempo de imagem de acordo com os sistemas e métodos revelados no presente documento é dado na Tabela (2) conforme exposto a seguir. As modificações de acordo com os sistemas e métodos revelados no presente documento são denotadas em negrito. [TABELA 2]
Figure img0005
Tabela (2)
[00174] O exemplo ilustrado na Tabela (2) inclui um elemento de sintaxe common_num_nalus_in_du_minus1, o qual pode ser usado para determinar quantos dados deveriam ser removido da CPB, sob a remoção de uma unidade de decodificação. “common_num_nalus_in_du_minus1” mais 1 especifica o número de unidades de NAL em cada unidade de decodificação da unidade de acesso que a mensagem SEI de tempo de imagem está associada. O valor de common_num_nalus_in_du_minus1 pode se situar na faixa de 0 a PicWidthInCtbs * PicHeightInCtbs - 1, inclusive.
[00175] A primeira unidade de decodificação da unidade de acesso consiste nas primeiras unidades de NAL consecutivas common_num_nalus_in_du_minus1 + 1 na ordem de decodificação na unidade de acesso. A i-ésima (com i maior que 0) unidade de decodificação da unidade de acesso consiste nas unidades de NAL consecutivas common_num_nalus_in_du_minus1 + 1 imediatamente após a última unidade de NAL na unidade de decodificação anterior da unidade de acesso, na ordem de decodificação. Pode haver pelo menos uma unidade de NAL de VCL em cada unidade de decodificação. Todas as unidades de NAL não VCL associadas a uma unidade de NAL de VCL podem ser incluídas na mesma unidade de decodificação.
[00176] Outro exemplo de semântica e sintaxe modificada para uma mensagem SEI de tempo de imagem de acordo com os sistemas e métodos revelados no presente documento é dado na Tabela (3) conforme exposto a seguir. As modificações de acordo com os sistemas e métodos revelados no presente documento são denotadas em negrito. [TABELA 3]
Figure img0006
[00177] O exemplo ilustrado na Tabela (3) inclui um elemento de sintaxe “common_num_nalus_in_du_flag” que, quando igual a 1, especifica que o elemento de sintaxe “common_num_nalus_in_du_minus1” está presente. “common_num_nalus_in_du_flag “ igual a 0 especifica que o elemento de sintaxe “common_num_nalus_in_du_minus1 ” não está presente.
[00178] Em ainda outra modalidade, os sinalizadores common_du_cpb_removal_delay_flag e common_num_nalus_in_du_minus1, não podem ser enviados. Em vez disso, os elementos de sintaxe common_num_nalus_in_du_minus1 e common_du_cpb_removal_delay poderiam ser enviados sempre. Nesse caso, um valor de 0 (ou algum outro) para esses elementos de sintaxe poderia ser usado para indicar que esses elementos não são sinalizados.
[00179] Além das modificações para os elementos de sintaxe e semântica da mensagem SEI de tempo de imagem, os presentes sistemas e métodos também podem implantar uma restrição de fluxo de bits, de modo que a operação de CPB à base de sub-imagem e a operação de CPB a nível de unidade de acesso resultem no mesmo tempo da remoção de unidade de decodificação.
[00180] Quando sub_pic_cpb_params_present_flag é igual a 1, então, os parâmetros de atraso de remoção de CPB de nível de sub- imagem estão presentes, a CPB pode operar a nível de unidade de acesso ou nível de sub-imagem. sub_pic_cpb_params_present_flag igual a 0 especifica que os parâmetros de atraso de remoção de CPB de nível de sub-imagem não estão presentes e a CPB opera a nível de unidade de acesso. Quando sub_pic_cpb_params_present_flag não está presente, seu valor é inferido a ser igual a 0.
[00181] Para suportar a operação tanto a nível de unidade de acesso como a nível de sub-imagem, as restrições de fluxo de bits a seguir podem ser usadas: Se sub_pic_cpb_params_present_flag for 1, então, é exigência da conformidade de fluxo de bits que a seguinte restrição seja obedecida sob a sinalização dos valores para cpb_removal_delay e du_cpb_removal_delay[i] para todo i: [MATEMÁTICA 3]
Figure img0007
[00182] em que du_cpb_removal_delay[i] são os parâmetros de atraso de remoção de CPB de unidade de decodificação, tc é um tique de relógio, tc,sub é o tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de decodificação na unidade de acesso deslocada em um, e i é um índice. Em algumas modalidades, um parâmetro de tolerância poderia ser adicionado para satisfazer a restrição acima.
[00183] Para suportar a operação tanto a nível de unidade de acesso como a nível de sub-imagem, as restrições de fluxo de bits conforme exposto a seguir podem ser usadas: Seja a variável Tdu(k) definida como: [MATEMÁTICA 4]
Figure img0008
[00184] em que du_cpb_removal_delay_minus1k[ i ] e num_decoding_units_minus1k são parâmetros para I-ésima unidade de decodificação da k-ésima unidade de acesso (com k=0 para a unidade de acesso que inicializou o HRD e Tdu(k)=0 para k<1), e em que du_cpb_removal_delay_ minus1k[ i ]+1=du_cpb_removal_delay_minus1k[i] é o parâmetro de atraso de remoção de CPB de unidade de decodificação para a I-ésima unidade de decodificação da k-ésima unidade de acesso, e num_decoding_units_minus1k é o número de unidades de decodificação na k-ésima unidade de acesso, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, e i e k são índices. Então, quando o sinalizador de tempo de imagem (por exemplo, sub_pic_cpb_params_present_flag) é definido para 1, a restrição a seguir deverá ser verdadeira: (au_cpb_removal_delay_minus1 + 1) * tc == Tdu(k), em que (au_cpb_removal_delay_minus1 + 1)=cpb_removal_delay, o atraso de remoção de CPB. Dessa forma, nesse caso, o atraso de remoção de CPB (au_cpb_removal_delay_minus1 + 1) é definido de modo que a operação de operação de CPB à base de sub-imagem e operação de CPB à base de unidade de acesso resultem no mesmo tempo da remoção de unidade de acesso e última unidade de decodificação da remoção de unidade de acesso.
[00185] Para suportar a operação tanto a nível de unidade de acesso como a nível de sub-imagem, as restrições de fluxo de bits a seguir podem ser usadas: Se sub_pic_cpb_params_present_flag for 1, então, é exigência da conformidade de fluxo de bits que a seguinte restrição seja obedecida sob a sinalização dos valores para cpb_removal_delay e du_cpb_removal_delay[i] para todo i: [MATEMÁTICA 5]
Figure img0009
[00186] em que du_cpb_removal_delay[i] são os parâmetros de atraso de remoção de CPB de unidade de decodificação, tc é um tique de relógio, tc,sub é o tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de decodificação na unidade de acesso deslocada em um, e i é um índice.
[00187] Para suportar a operação tanto a nível de unidade de acesso como a nível de sub-imagem, as restrições de fluxo de bits a seguir podem ser usadas: Se sub_pic_cpb_params_present_flag for 1, então, é exigência da conformidade de fluxo de bits que a restrição a seguir seja obedecida sob a sinalização dos valores para cpb_removal_delay e du_cpb_removal_delay[num_decoding_units_minus1]: cpb_removal_delay*tc = du_cpb_removal_delay[num_decoding_units_minus1]* tc,sub em que du_cpb_removal_delay[num_decoding_units_minus1] é o parâmetro de atraso de remoção de CPB de unidade de decodificação para o num_decoding_units_minus1”ésima unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de decodificação na unidade de acesso deslocada em um. Em algumas modalidades, um parâmetro de tolerância poderia ser adicionado para satisfazer a restrição acima.
[00188] Para suportar a operação tanto a nível de unidade de acesso como a nível de sub-imagem, as restrições de fluxo de bits a seguir podem ser usadas: Se sub_pic_cpb_params_present_flag for 1, então, é exigência da conformidade de fluxo de bits que a seguinte restrição seja obedecida sob a sinalização dos valores para cpb_removal_delay e du_cpb_removal_delay[i] para todo i: - 1<=(cpb_removal_delay*tc - du_cpb_removal_delay[num_decoding_units_minus1]* tc,sub) <=1 em que du_cpb_removal_delay[num_decoding_units_minus1] é o parâmetro de atraso de remoção de CPB de unidade de decodificação para a num_decoding_units_minus1-ésima unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de codificação na unidade de acesso deslocada em um.
[00189] Adicionalmente, os presentes sistemas e métodos podem modificar o tempo da remoção de unidade de decodificação. Quando os parâmetros de atraso de remoção de CPB de nível de sub-imagem estão presentes, o tempo de remoção da unidade de decodificação para “imagens grandes” (quando low_delay_hrd_flag é 1 e tr,n(m) < taf(m)) pode ser alterado para compensar a diferença que pode surgir devido ao contador de tique de relógio e contador de tique de relógio de sub-imagem.
[00190] Quando sub_pic_cpb_params_present_flag é igual a 1, então, os parâmetros de atraso de remoção de CPB de nível de sub- imagem estão presentes e a CPB pode operar a nível de unidade de acesso ou nível de sub-imagem. sub_pic_cpb_params_present_flag igual a 0 especifica que os parâmetros de atraso de remoção de CPB de nível de sub-imagem não estão presentes e a CPB opera a nível de unidade de acesso. Quando sub_pic_cpb_params_present_flag não está presente, seu valor é inferido a ser igual a 0.
[00191] Especificamente, em um exemplo, o tempo da remoção de unidade de decodificação e decodificação da implantação de unidade de decodificação é conforme exposto a seguir. A variável SubPicCpbPreferredFlag é especificada por meios externos, ou quando não especificada por meios externos, é definida para 0. A variável SubPicCpbFlag é derivada conforme exposto a seguir: SubPicCpbFlag = SubPicCpbPreferredFlag && sub_pic_cpb_params_present_flag. Se SubPicCpbFlag for igual a 0, a CPB opera a nível de unidade de acesso e cada unidade de decodificação é uma unidade de acesso. De outro modo, a CPB opera a nível de sub-imagem e cada unidade de decodificação é um subconjunto de uma unidade de acesso.
[00192] Se SubPicCpbFlag for igual a 0, a variável CpbRemovalDelay(m) é definida para o valor de cpb_removal_delay na mensagem SEI de tempo de imagem associada à unidade de acesso que é a unidade de decodificação m, e a variável Tc é definida para tc. De outro modo, a variável CpbRemovalDelay(m) é definida para o valor de du_cpb_removal_delay[ i ] para a unidade de decodificação m na mensagem SEI de tempo de imagem associada à unidade de acesso que contém a unidade de decodificação m, e a variável Tc é definida para tc_sub.
[00193] Quando uma unidade de decodificação m é a unidade de decodificação com n igual a 0 (a primeira unidade de decodificação da unidade de acesso que inicializa o HRD), o tempo de remoção nominal da unidade de decodificação a partir da CPB é especificado por tr,n(0) = InitCpbRemovalDelay[ SchedSelIdx ] / 90000.
[00194] Quando uma unidade de decodificação m é a primeira unidade de decodificação da primeira unidade de acesso de um período de armazenamento temporário que não inicializa o HRD, o tempo de remoção nominal da unidade de decodificação a partir da CPB é especificado por tr,n(m) = tr,n(mb) + Tc * CpbRemovalDelay(m), em que tr,n(mb) é o tempo de remoção nominal da primeira unidade de decodificação do período de armazenamento temporário anterior.
[00195] Quando uma unidade de decodificação m é a primeira unidade de decodificação de um período de armazenamento temporário, mb é definido igual a m no tempo de remoção tr,n(m) da unidade de decodificação m.
[00196] O tempo de remoção nominal tr,n(m) de uma unidade de decodificação m que não é a primeira unidade de decodificação de um período de armazenamento temporário é dado por tr,n(m) = tr,n(mb) + Tc * CpbRemovalDelay(m), em que tr,n(mb) é o tempo de remoção nominal da primeira unidade de decodificação do período de armazenamento temporário atual.
[00197] O tempo de remoção da unidade de decodificação m é especificado conforme exposto a seguir. A variável ClockDiff é definida como ClockDiff = (num_units_in_tick- (num_units_in_sub_tick*(num_decoding_units_minus1+1)) / time_scale). Em algum caso, pode ser exigência de uma conformidade de fluxo de bits que os parâmetros num_units_in_tick, num_units_in_sub_tick, num_decoding_units_minus1 sejam sinalizados de modo que a equação a seguir seja satisfeita. (num_units_in_tick- (num_units_in_sub_tick*(num_decoding_units_minus1+1))) >=0
[00198] Em outro algum caso, pode ser exigência de uma conformidade de fluxo de bits que os parâmetros num_units_in_tick, num_units_in_sub_tick, num_decoding_units_minus1 podem ser sinalizados de modo que a equação a seguir seja satisfeita. (num_units_in_tick- (num_units_in_sub_tick*(num_decoding_units_minus1+1))) <=0. Se low_delay_hrd_flag for igual a 0 ou tr,n(m) >= taf(m), o tempo de remoção de unidade de decodificação m é especificado por tr(m) = tr,n(m).
[00199] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)), e quando sub_pic_cpb_params_present_flag é igual a 1 e a CPB está operando a nível de sub-imagem, e se ClockDiff for maior que zero, o tempo de remoção de unidade de decodificação m, quando é a última unidade de decodificação da unidade de acesso n, é especificado por tr(m) = tr,n(m) + Tc * Ceil((taf(m) - tr,n(m)) / Tc) + ClockDiff.
[00200] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)), e quando sub_pic_cpb_params_present_flag é igual a 1 e a CPB está operando a nível de unidade de acesso e se ClockDiff for menor que zero, o tempo de remoção de unidade de acesso n é especificado por tr(m) = tr,n(m) + tc * Ceil((taf(m) - tr,n(m)) / tc) - ClockDiff.
[00201] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)), o tempo de remoção de unidade de decodificação m é especificado por tr(m) = tr,n(m) + Tc * Ceil((taf(m) - tr,n(m)) / Tc). O último caso (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) indica que o tamanho da unidade de decodificação m, b(m), é grande de modo que impeça a remoção no tempo de remoção nominal.
[00202] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) e quando um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a última unidade de decodificação m de unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + min((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), (tc * Ceil((taf(n) - tr,n(n)) / tc))), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógioetaf(n) é um tempo de chegada final da unidade de acesso n.
[00203] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(n) < taf(n)) e quando um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para unidade de acesso n, tr(n) de acordo com: tr(n) = tr,n(n) + min((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), (tc * Ceil((taf(n) - tr,n(n)) / tc))), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00204] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) e um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a última unidade de decodificação m de unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + (tc * Ceil((taf(n) - tr,n(n)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00205] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(n) < taf(n)) e um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para unidade de acesso n, tr(n) de acordo com: tr(n) = tr,n(n) + (tc * Ceil((taf(n) - tr,n(n)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub- imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00206] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) e um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a unidade de decodificação, a qual não é a última unidade de decodificação da unidade de acesso, é definido como tr(m) = taf(m), em que taf(m) é um tempo de chegada final da unidade de decodificação m. E o tempo de remoção da última unidade de decodificação m da unidade de acesso, tr(m) é definido de acordo com: tr(m) = tr,n(m) + (tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n e taf(m) é um tempo de chegada final da última unidade de decodificação m na unidade de acesso n.
[00207] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) e um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a unidade de decodificação, a qual não é a última unidade de decodificação da unidade de acesso, é definido como tr(m) = taf(m), em que taf(m) é um tempo de chegada final da unidade de decodificação m. E o tempo de remoção da última unidade de decodificação m da unidade de acesso, tr(m) é definido de acordo com: tr(m) = tr,n(m) + (tc * Ceil((taf(m) - tr,n(m)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n e taf(m) é um tempo de chegada final da última unidade de decodificação m na unidade de acesso n.
[00208] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(m) < taf(m)) e um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a unidade de decodificação é definido como tr(m) = taf(m), em que tr,n(m) é o tempo de remoção nominal da unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n e taf(m) é um tempo de chegada final da unidade de decodificação m na unidade de acesso n.
[00209] De outro modo, (low_delay_hrd_flag é igual a 1 e tr,n(n) < taf(n)) e um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para unidade de acesso n, tr(n) de acordo com: tr(n) = taf(n), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00210] Quando SubPicCpbFlag é igual a 1, o tempo de remoção de CPB nominal da unidade de acesso n tr,n(n) é definido para o tempo de remoção de CPB nominal da última unidade de decodificação na unidade de acesso n, o tempo de remoção de CPB da unidade de acesso n tr(n) é definido para o tempo de remoção de CPB da última unidade de decodificação na unidade de acesso n.
[00211] Quando SubPicCpbFlag é igual a 0, cada unidade de decodificação é uma unidade de acesso, por conseguinte, o tempo de remoção de CPB nominal e o tempo de remoção de CPB da unidade de acesso n são o tempo de remoção de CPB nominal e o tempo de remoção de CPB da unidade de decodificação n. No tempo de remoção de CPB da unidade de decodificação m, a unidade de decodificação é instantaneamente decodificada.
[00212] Conforme ilustrado pelo mencionado anteriormente, os sistemas e métodos revelados no presente documento fornecem sintaxe e semântica que modificam um fluxo de bits de mensagem SEI de tempo de imagem que carrega parâmetros à base de sub-imagem. Em algumas configurações, os sistemas e métodos revelados no presente documento podem ser aplicados a especificações de HEVC.
[00213] Por conveniência, várias definições são dadas conforme exposto a seguir, as quais podem ser aplicadas aos sistemas e métodos revelados no presente documento. Um ponto de acesso aleatório pode ser qualquer ponto em um fluxo de dados (por exemplo, fluxo de bits) em que a decodificação do fluxo de bits não exige acesso a qualquer ponto em um fluxo de bits que precede o ponto de acesso aleatório, para decodificar uma imagem atual e todas as imagens subsequentes à dita imagem atual em ordem de saída.
[00214] Um período de armazenamento temporário pode ser especificado como um conjunto de unidades de acesso entre duas instâncias da mensagem SEI de período de armazenamento temporário na ordem de decodificação. As informações de otimização suplementar (SEI) podem conter informações que não são necessárias para decodificar as amostras de imagens codificadas a partir de unidades de NAL de VCL. As mensagens SEI podem ajudar em procedimentos relacionados à decodificação, exibição ou outros propósitos. Os decodificadores de conformidade podem não ser exigidos para processar essas informações para a conformidade de ordem de saída às especificações de HEVC (o anexo C das especificações de HEVC (JCTVC-I1003) inclui especificações para conformidade, por exemplo). Algumas informações de mensagem SEI podem ser usadas para verificar a conformidade de fluxo de bits e para conformidade de decodificador de tempo de saída.
[00215] Uma mensagem SEI de período de armazenamento temporário pode ser uma mensagem SEI relacionada ao período de armazenamento temporário. Uma mensagem SEI de tempo de imagem pode ser uma mensagem SEI relacionada ao tempo de remoção de CPB. Essas mensagens podem definir sintaxe e semântica que definem o tempo de chegada de fluxo de bits e tempo de remoção de imagem codificada.
[00216] Uma memória temporária de imagem codificada (CPB) pode ser uma memória temporária de primeiro a entrar primeiro a sair que contém unidades de acesso na ordem de decodificação especificada em um decodificador hipotético de referência (HRD). Uma unidade de acesso pode ser um conjunto de unidades de camada de acesso de rede (NAL) que são consecutivas na ordem de decodificação e contêm exatamente uma imagem codificada. Além das unidades de NAL de fatia codificada da imagem codificada, a unidade de acesso pode conter, também, outras unidades de NAL que não contêm fatias da imagem codificada. A decodificação de uma unidade de acesso sempre resulta em uma imagem decodificada. Uma unidade de NAL pode ser uma estrutura de sintaxe que contém uma indicação do tipo de dados a seguir e bytes que contêm esses dados sob a forma de uma carga útil de sequência de byte em bruto intercalada, conforme necessário, com bytes de prevenção de simulação.
[00217] Para uso no presente documento, o termo “comum” se refere geralmente a um elemento de sintaxe ou uma variável que é aplicável a mais de uma coisa. Por exemplo, no contexto de elementos de sintaxe em uma mensagem SEI de tempo de imagem, o termo “comum” pode significar que o elemento de sintaxe (por exemplo, common_du_cpb_removal_delay) é aplicável a todas as unidades de decodificação em uma unidade de acesso associada à mensagem SEI de tempo de imagem. Adicionalmente, as unidades de dados que são descritas em termos de “n” e “m” geralmente se referem a unidades de acesso e unidades de decodificação, respectivamente.
[00218] Diversas configurações são agora descritas com referência às Figuras, em que os números de referência similares podem indicar elementos funcionalmente similares. Os sistemas e métodos, conforme geralmente descrito e ilustrado nas Figuras no presente documento, poderiam ser dispostos e projetados em uma ampla variedade de configurações diferentes. Dessa forma, a seguinte descrição mais detalhada de várias configurações, conforme representado nas Figuras, não se destina a limitar o escopo, conforme reivindicado, mas é somente representativa dos sistemas e métodos.
[00219] A Figura 1A é um diagrama de blocos que ilustra um exemplo de um ou mais dispositivos eletrônicos 102, nos quais os sistemas e métodos para enviar uma mensagem e armazenar em memória temporária um fluxo de bits podem ser implantados. Nesse exemplo, o dispositivo eletrônico A 102a e o dispositivo eletrônico B 102b são ilustrados. Entretanto, deveria ser observado que um ou mais recursos e funcionalidade descritos em relação ao dispositivo eletrônico A 102a e dispositivo eletrônico B 102b podem ser combinados em um único dispositivo eletrônico, em algumas configurações.
[00220] O dispositivo eletrônico A 102a inclui um codificador 104. O codificador 104 inclui um módulo de geração de mensagem 108. Cada um dos elementos incluídos no dispositivo eletrônico A 102a (por exemplo, o codificador 104 e o módulo de geração de mensagem 108) pode ser implantado em hardware, software ou uma combinação de ambos.
[00221] O dispositivo eletrônico A 102a pode obter uma ou mais imagens de entrada 106. Em algumas configurações, a(s) imagem(ns) de entrada 106 podem ser capturadas no dispositivo eletrônico A 102a com o uso de um sensor de imagem, podem ser recuperadas a partir da memória e/ou podem ser recebidas a partir de outro dispositivo eletrônico.
[00222] O codificador 104 pode codificar a(s) imagem(ns) de entrada 106 para produzir dados codificados. Por exemplo, o codificador 104 pode codificar uma série de imagens de entrada 106 (por exemplo, vídeo). Em uma configuração, o codificador 104 pode ser um codificador HEVC. Os dados codificados podem ser dados digitais (por exemplo, parte de um fluxo de bits 114). O codificador 104 pode gerar sinalização de sobrecarga com base no sinal de entrada.
[00223] O módulo de geração de mensagem 108 pode gerar uma ou mais mensagens. Por exemplo, o módulo de geração de mensagem 108 pode gerar uma ou mais mensagens SEI ou outras mensagens. Para uma CPB que suporta a operação em um nível de sub-imagem, o dispositivo eletrônico 102 pode enviar parâmetros de sub-imagem, (por exemplo, parâmetro de atraso de remoção de CPB). Especificamente, o dispositivo eletrônico 102 (por exemplo, o codificador 104) pode determinar se deve incluir um parâmetro de atraso de remoção de CPB de unidade de decodificação comum em uma mensagem SEI de tempo de imagem. Por exemplo, o dispositivo eletrônico pode definir um sinalizador (por exemplo, common_du_cpb_removal_delay_flag) para um quando o codificador 104 está incluindo um parâmetro de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay) na mensagem SEI de tempo de imagem. Quando o parâmetro de atraso de remoção de CPB de unidade de decodificação comum é incluído, o dispositivo eletrônico pode gerar o parâmetro de atraso de remoção de CPB de unidade de decodificação comum que é aplicável a todas as unidades de decodificação em uma unidade de acesso. Em outras palavras, em vez de incluir um parâmetro de atraso de remoção de CPB de unidade de decodificação para cada unidade de decodificação em uma unidade de acesso, um parâmetro comum pode se aplicar a todas as unidades de decodificação na unidade de acesso à qual a mensagem SEI de tempo de imagem está associada.
[00224] Em contrapartida, quando o parâmetro de atraso de remoção de CPB de unidade de decodificação comum não está incluído na mensagem SEI de tempo de imagem, o dispositivo eletrônico 102 pode gerar um atraso de remoção de CPB de unidade de decodificação separado para cada unidade de decodificação na unidade de acesso à qual a mensagem SEI de tempo de imagem está associada. Um módulo de geração de mensagem 108 pode realizar um ou mais procedimentos descritos em conexão com a Figura 2 e Figura 3 abaixo.
[00225] Em algumas configurações, o dispositivo eletrônico A 102a pode enviar a mensagem para o dispositivo eletrônico B 102b como parte do fluxo de bits 114. Em algumas configurações, o dispositivo eletrônico A 102a pode enviar a mensagem para o dispositivo eletrônico B 102b através de uma transmissão separada 110. Por exemplo, a transmissão separada pode não ser parte do fluxo de bits 114. Por exemplo, uma mensagem SEI de tempo de imagem ou outra mensagem pode ser enviada com o uso de algum mecanismo fora de banda. Deve-se observar que, em algumas configurações, a outra mensagem pode incluir um ou mais recursos de uma mensagem SEI de tempo de imagem descrita acima. Adicionalmente, a outra mensagem, em um ou mais aspectos, pode ser utilizada de modo similar à mensagem SEI descrita acima.
[00226] O codificador 104 (e módulo de geração de mensagem 108, por exemplo) pode produzir um fluxo de bits 114. O fluxo de bits 114 pode incluir dados de imagem codificada com base na(s) imagem(s) de entrada 106. Em algumas configurações, o fluxo de bits 114 pode incluir também dados de sobrecarga, tais como uma mensagem SEI de tempo de imagem ou outra mensagem, cabeçalho(s) de fatia, PPS(s), etc. À medida que imagens de entrada 106 adicionais são codificadas, o fluxo de bits 114 pode incluir uma ou mais imagens codificadas. Por exemplo, o fluxo de bits 114 pode incluir uma ou mais imagens codificadas com dados de sobrecarga correspondentes (por exemplo, uma mensagem SEI de tempo de imagem ou outra mensagem).
[00227] O fluxo de bits 114 pode ser fornecido para um decodificador 112. Em um exemplo, o fluxo de bits 114 pode ser transmitido para o dispositivo eletrônico B 102b com o uso de um enlace com fio ou sem fio. Em alguns casos, isso pode ser feito sobre uma rede, tal como a Internet ou rede de área local (LAN). Conforme ilustrado na Figura 1A, o decodificador 112 pode ser implantado no dispositivo eletrônico B 102b separadamente do codificador 104 no dispositivo eletrônico A 102a. Entretanto, deve-se observar que o codificador 104 e o decodificador 112 podem ser implantados no mesmo dispositivo eletrônico em algumas configurações. Em uma implantação, em que o codificador 104 e o decodificador 112 são implantados no mesmo dispositivo eletrônico, por exemplo, o fluxo de bits 114 pode ser fornecido sobre um barramento para o decodificador 112 ou armazenado na memória para a recuperação através do decodificador 112.
[00228] O decodificador 112 pode ser implantado em hardware, software ou uma combinação de ambos. Em uma configuração, o decodificador 112 pode ser um decodificador HEVC. O decodificador 112 pode receber (por exemplo, obter) o fluxo de bits 114. O decodificador 112 pode gerar uma ou mais imagens decodificadas 118 com base no fluxo de bits 114. A(s) imagem(ns) decodificada(s) 118 pode(m) ser exibida(s), reproduzida(s), armazenada(s) na memória e/ou transmitida(s) para outro dispositivo, etc.
[00229] O decodificador 112 pode incluir uma CPB 120. A CPB 120 pode armazenar temporariamente imagens codificadas. A CPB 120 pode usar parâmetros encontrados em uma mensagem SEI de tempo de imagem para determinar quando remover os dados. Quando a CPB 120 suporta a operação em um nível de sub-imagem, as unidades de decodificação individuais podem ser removidas em vez de toda a unidade de acessos de uma vez. O decodificador 112 pode incluir uma memória temporária de imagem decodificada (DPB) 122. Cada imagem decodificada é colocada na DPB 122 para ser feita referência pelo processo de decodificação, assim como para saída e corte. Uma imagem decodificada é removida da DPB no último momento de saída da DPB ou no momento que se torna não mais necessária para a referência de interpredição.
[00230] O decodificador 112 pode receber uma mensagem (por exemplo, a mensagem SEI de tempo de imagem ou outra mensagem). O decodificador 112 também pode determinar se a mensagem recebida inclui um parâmetro de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay). Isso pode incluir identificar um sinalizador (por exemplo, common_du_cpb_removal_delay_flag) que é definido quando o parâmetro comum está presente na mensagem SEI de tempo de imagem. Se o parâmetro comum estiver presente, o decodificador 112 pode determinar o parâmetro de atraso de remoção de CPB de unidade de decodificação comum aplicável a todas as unidades de decodificação na unidade de acesso. Se o parâmetro comum não estiver presente, o decodificador 112 pode determinar um parâmetro de atraso de remoção de CPB de unidade de decodificação separado para cada unidade de decodificação na unidade de acesso. O decodificador 112 também pode remover as unidades de decodificação a partir da CPB 120 com o uso do parâmetro de atraso de remoção de CPB de unidade de decodificação comum ou dos parâmetros de atraso de remoção de CPB de unidade de decodificação separados. A CPB 120 pode realizar um ou mais procedimentos descritos em conexão com a Figura 4 e Figura 5 abaixo.
[00231] O HRD descrito acima pode ser um exemplo do decodificador 112 ilustrado na Figura 1A. Dessa forma, um dispositivo eletrônico 102 pode operar de acordo com o HRD e CPB 120 e DPB 122 descritos acima, em algumas configurações.
[00232] Deve-se observar que um ou mais elementos ou partes dos mesmos incluídos no(s) dispositivo(s) eletrônico(s) 102 podem ser implantados em hardware. Por exemplo, um ou mais dentre esses elementos ou partes dos mesmos podem ser implantados como um circuito eletrônico, conjunto de circuitos ou componentes de hardware, etc. Deve-se observar também que uma ou mais funções ou métodos descritos no presente documento podem ser implantadas em e/ou realizadas com o uso de hardware. Por exemplo, um ou mais métodos descritos no presente documento podem ser implantados em e/ou realizados com o uso de um grupo de circuitos integrados, um circuito integrado para aplicação específica (ASIC), um circuito integrado de grande escala (LSI) ou circuito integrado, etc..
[00233] A Figura 1B é um diagrama de blocos que ilustra outro exemplo de um codificador 1908 e um decodificador 1972. Nesse exemplo, o dispositivo eletrônico A 1902 e o dispositivo eletrônico B 1970 são ilustrados. Entretanto, deveria ser observado que os recursos e funcionalidade descritos em relação ao dispositivo eletrônico A 1902 e dispositivo eletrônico B 1970 podem ser combinados em um único dispositivo eletrônico, em algumas configurações.
[00234] O dispositivo eletrônico A 1902 inclui um codificador 1908. O codificador 1908 pode incluir um codificador de camada-base 1910 e um codificador de camada de otimização 1920. O codificador de vídeo 1908 é adequado para codificação de vídeo escalonável e codificação de vídeo de visualização múltipla, conforme descrito posteriormente. O codificador 1908 pode ser implantado em hardware, software ou uma combinação de ambos. Em uma configuração, o codificador 1908 pode ser um codificador de codificação de vídeo de alta eficiência (HEVC), que inclui escalonável e/ou visualização múltipla. Outros codificadores podem ser usados de modo semelhante. O dispositivo eletrônico A 1902 pode obter uma fonte 1906. Em algumas configurações, a fonte 1906 pode ser capturada no dispositivo eletrônico A 1902 com o uso de um sensor de imagem, recuperada a partir da memória ou recebida a partir de outro dispositivo eletrônico.
[00235] O codificador 1908 pode codificar a fonte 1906 para produzir um fluxo de bits de camada-base 1934 e um fluxo de bits de camada de otimização 1936. Por exemplo, o codificador 1908 pode codificar uma série de imagens (por exemplo, vídeo) na fonte 1906. Em particular, para codificação de vídeo escalonável para escalabilidade de SNR também conhecida como escalabilidade de qualidade, a mesma fonte 1906 pode ser fornecida para o codificador de camada-base e o codificador de camada de otimização. Em particular, para a codificação de vídeo escalonável para escalabilidade espacial, uma fonte com qualidade de resolução reduzida pode ser usada para o codificador de camada-base. Em particular, para a codificação de visualização múltipla, uma fonte de visualização diferente pode ser usada para o codificador de camada-base e o codificador de camada de otimização. O codificador 1908 pode ser similar ao codificador 1782 descrito posteriormente em conexão com a Figura 6B.
[00236] Os fluxos de bits 1934, 1936 podem incluir dados de imagem codificada com base na fonte 1906. Em algumas configurações, os fluxos de bits 1934, 1936 também podem incluir dados de sobrecarga, tais como informações de cabeçalho de fatia, informações de PPS, etc.. À medida que imagens adicionais na fonte 1906 são codificadas, os fluxos de bits 1934, 1936 podem incluir uma ou mais imagens codificadas.
[00237] Os fluxos de bits 1934, 1936 podem ser fornecidos para o decodificador 1972. O decodificador 1972 pode incluir um decodificador de camada-base 1980 e um decodificador de camada de otimização 1990. O decodificador de vídeo 1972 é adequado para decodificação de vídeo escalonável e decodificação de vídeo de visualização múltipla. Em um exemplo, o fluxo de bits 1934, 1936 pode ser transmitido para o dispositivo eletrônico B 1970 com o uso de um enlace com fio ou sem fio. Em alguns casos, isso pode ser feito sobre uma rede, tal como a Internet ou rede de área local (LAN). Conforme ilustrado na Figura 1B, o decodificador 1972 pode ser implantado no dispositivo eletrônico B 1970 separadamente do codificador 1908 no dispositivo eletrônico A 1902. Entretanto, deve-se observar que o codificador 1908 e o decodificador 1972 podem ser implantados no mesmo dispositivo eletrônico em algumas configurações. Em uma implantação, em que o codificador 1908 e o decodificador 1972 são implantados no mesmo dispositivo eletrônico, por exemplo, os fluxos de bits 1934, 1936 podem ser fornecidos sobre um barramento para o decodificador 1972 ou armazenados na memória para a recuperação através do decodificador 1972. O decodificador 1972 pode fornecer uma camada-base decodificada 1992 e imagem(ns) de camada de otimização decodificada 1994 como saída.
[00238] O decodificador 1972 pode ser implantado em hardware, software ou uma combinação de ambos. Em uma configuração, o decodificador 1972 pode ser um decodificador de codificação de vídeo de alta eficiência (HEVC), que inclui escalonável e/ou visualização múltipla. Outros decodificadores podem ser usados de modo semelhante. O decodificador 1972 pode ser similar ao decodificador 1812 descrito posteriormente em conexão com a Figura 7B. Além disso, o codificador de camada-base e/ou o codificador de camada de otimização pode incluir, cada um, um módulo de geração de mensagem, tal como aquele descrito em relação à Figura 1A. Além disso, o decodificador de camada-base e/ou o decodificador de camada de otimização pode incluir uma memória temporária de imagem codificada e/ou uma memória temporária de imagem decodificada, tal como aquela descrita em relação à Figura 1A. Além disso, os dispositivos eletrônicos da Figura 1B podem operar de acordo com as funções dos dispositivos eletrônicos da Figura 1A, conforme aplicável.
[00239] A Figura 2 é um fluxograma que ilustra uma configuração de um método 200 para enviar uma mensagem. O método 200 pode ser realizado por um codificador 104 ou uma de suas subpartes (por exemplo, um módulo de geração de mensagem 108). O codificador 104 pode determinar 202 um sinalizador de tempo de imagem (por exemplo, sub_pic_cpb_params_present_flag) que indica se uma CPB 120 suporta a operação em um nível de sub-imagem. Por exemplo, quando o sinalizador de tempo de imagem é definido para 1, a CPB 120 pode operar em um nível de unidade de acesso ou um nível de sub-imagem. Deve-se observar que até quando o sinalizador de tempo de imagem é definido para 1, a decisão sobre se operar realmente no nível de sub-imagem é deixada para o próprio decodificador 112.
[00240] O codificador 104 também pode determinar 204 um ou mais atrasos de remoção para as unidades de decodificação em uma unidade de acesso. Por exemplo, o codificador 104 pode determinar um único parâmetro de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay) que é aplicável a todas as unidades de decodificação na unidade de acesso a partir da CPB 120. Alternativamente, o codificador 104 pode determinar um atraso de remoção de CPB de unidade de decodificação separado (por exemplo, du_cpb_removal_delay[i]) para cada unidade de decodificação na unidade de acesso.
[00241] O codificador 104 também pode determinar 206 um ou mais parâmetros de NAL que indicam uma quantidade, deslocada em um, de unidades de NAL em cada unidade de decodificação no ponto de acesso. Por exemplo, o codificador 104 pode determinar um único parâmetro de NAL comum (por exemplo, common_num_nalus_in_du_minus1) que é aplicável a todas as unidades de decodificação na unidade de acesso a partir da CPB 120. Alternativamente, o codificador 104 pode determinar um atraso de remoção de CPB de unidade de decodificação separado (por exemplo, num_nalus_in_du_minus1[i]) para cada unidade de decodificação na unidade de acesso.
[00242] O codificador 104 também pode enviar 208 uma mensagem SEI de tempo de imagem que inclui o sinalizador de tempo de imagem, os atrasos de remoção e os parâmetros de NAL. A mensagem SEI de tempo de imagem pode incluir também outros parâmetros (por exemplo, cpb_removal_delay, dpb_output_delay, etc.). Por exemplo, o dispositivo eletrônico 102 pode transmitir a mensagem através de um ou mais dentre transmissão sem fio, transmissão com fio, barramento de dispositivo, rede, etc. Por exemplo, o dispositivo eletrônico A 102a pode transmitir a mensagem para o dispositivo eletrônico B 102b. A mensagem pode ser parte do fluxo de bits 114, por exemplo. Em algumas configurações, o dispositivo eletrônico A 102a pode enviar 208 a mensagem para o dispositivo eletrônico B 102b em uma transmissão separada 110 (que não é parte do fluxo de bits 114).
[00243] Por exemplo, a mensagem pode ser enviada com o uso de algum mecanismo fora de banda. Em algum caso, as informações indicadas em 204, 206 podem ser enviadas em uma mensagem SEI diferente da mensagem SEI de tempo de imagem. Em ainda outro caso, as informações indicadas em 204, 206 podem ser enviadas em um conjunto de parâmetros, por exemplo, conjunto de parâmetros de vídeo e/ou conjunto de parâmetros de sequência e/ou conjunto de parâmetros de imagem e/ou conjunto de parâmetros de adaptação e/ou cabeçalho de fatia.
[00244] A Figura 3 é um fluxograma que ilustra uma configuração de um método 300 para determinar um ou mais atrasos de remoção para unidades de decodificação em uma unidade de acesso. Em outras palavras, o método 300 ilustrado na Figura 3 pode ilustrar adicionalmente a etapa 204 no método 200 ilustrado na Figura 2. O método 300 pode ser realizado por um codificador 104. O codificador 104 pode determinar 302 se deve incluir um parâmetro de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay).
[00245] Isso pode incluir determinar se um sinalizador de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay_flag) é definido. Um codificador 104 pode enviar esse parâmetro comum no caso em que as unidades de decodificação são removidas a partir da CPB em intervalo regular. Isso pode ser o caso, por exemplo, quando cada unidade de decodificação corresponde a determinado número de fileiras da imagem ou tem alguma outra estrutura regular.
[00246] Por exemplo, o sinalizador de atraso de remoção de CPB de unidade de decodificação comum pode ser definido para 1, quando o parâmetro de atraso de remoção de CPB de unidade de decodificação comum deve ser incluído na mensagem SEI de tempo de imagem e 0 quando o mesmo não deve ser incluído. Se sim (por exemplo, o sinalizador é definido para 1), o codificador 104 pode determinar 304 um parâmetro de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay) que é aplicável a todas as unidades de decodificação em uma unidade de acesso. Se não (por exemplo, o sinalizador é definido para 0), o codificador 104 pode determinar 306 os parâmetros de atraso de remoção de CPB de unidade de decodificação separados (por exemplo, du_cpb_removal_delay[i]) para cada unidade de decodificação em uma unidade de acesso.
[00247] Se o parâmetro de atraso de remoção de CPB de unidade de decodificação comum estiver presente em uma mensagem SEI de tempo de imagem, o mesmo pode especificar uma quantidade de tiques de relógio de sub-imagem a aguardar após a remoção a partir da CPB 120 de uma unidade de decodificação imediatamente precedente antes da remoção a partir da CPB 120 de uma unidade de decodificação atual na unidade de acesso associada à mensagem SEI de tempo de imagem.
[00248] Por exemplo, quando uma unidade de decodificação é a uma primeira unidade de decodificação em uma unidade de acesso, o parâmetro de atraso de remoção de CPB 120 de unidade de decodificação comum pode especificar uma quantidade de tiques de relógio de sub-imagem a aguardar após a remoção a partir da CPB 120 de uma última unidade de decodificação em uma unidade de acesso associada a uma mensagem SEI de período de armazenamento temporário mais recente em uma unidade de acesso precedente, antes da remoção a partir da CPB 120 da primeira unidade de decodificação na unidade de acesso associada à mensagem SEI de tempo de imagem.
[00249] Quando a unidade de decodificação é a uma unidade de decodificação diferente de primeira em uma unidade de acesso, o parâmetro de atraso de remoção de CPB de unidade de decodificação comum pode especificar uma quantidade de tiques de relógio de sub- imagem a aguardar após a remoção a partir da CPB 120 de uma unidade de decodificação precedente na unidade de acesso associada à mensagem SEI de tempo de imagem.
[00250] Em contrapartida, quando um parâmetro de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay) não é enviado em uma mensagem SEI de tempo de imagem, os parâmetros de atraso de remoção de CPB de unidade de decodificação separados (por exemplo, du_cpb_removal_delay[i]) podem ser incluídos na mensagem SEI de tempo de imagem para cada unidade de decodificação em uma unidade de acesso. Os parâmetros de atraso de remoção de CPB de unidade de decodificação (por exemplo, du_cpb_removal_delay[i]) podem especificar uma quantidade de tiques de relógio de sub- imagem a aguardar após a remoção a partir da CPB 120 da última unidade de decodificação, antes da remoção a partir da CPB 120 de uma i-ésima unidade de decodificação na unidade de acesso associada à mensagem SEI de tempo de imagem. Os parâmetros de atraso de remoção de CPB de unidade de decodificação podem ser calculados de acordo com um resto de um contador de módulo cpb_removal_delay_length_minus1 + 1 é um comprimento de um parâmetro de atraso de remoção de CPB de unidade de decodificação comum.
[00251] A Figura 4 é um fluxograma que ilustra uma configuração de um método 400 para armazenar temporariamente um fluxo de bits. O método 400 pode ser realizado por um decodificador 112 em um dispositivo eletrônico 102 (por exemplo, dispositivo eletrônico B 102b), o qual pode receber 402 uma mensagem (por exemplo, uma mensagem SEI de tempo de imagem ou outra mensagem). Por exemplo, o dispositivo eletrônico 102 pode receber 402 a mensagem através de um ou mais dentre transmissão sem fio, transmissão com fio, barramento de dispositivo, rede, etc. Por exemplo, o dispositivo eletrônico B 102b pode receber 402 a mensagem a partir do dispositivo eletrônico A 102a. A mensagem pode ser parte do fluxo de bits 114, por exemplo. Em um outro exemplo, o dispositivo eletrônico B 102b pode receber a mensagem a partir do dispositivo eletrônico A 102a em uma transmissão separada 110 (que não é parte do fluxo de bits 114, por exemplo). Por exemplo, a mensagem SEI de tempo de imagem pode ser recebida com o uso de algum mecanismo fora de banda. Em algumas configurações, a mensagem pode incluir um ou mais dentre um sinalizador de tempo de imagem, um ou mais atrasos de remoção para unidades de decodificação em uma unidade de acesso e um ou mais parâmetros de NAL. Dessa forma, a recepção 402 da mensagem pode incluir receber um ou mais dentre um sinalizador de tempo de imagem, um ou mais atrasos de remoção para unidades de decodificação em uma unidade de acesso e um ou mais parâmetros de NAL.
[00252] O decodificador 112 pode determinar 404 se uma CPB 120 opera em um nível de unidade de acesso ou um nível de sub-imagem. Por exemplo, um decodificador 112 pode decidir operar com base em sub-imagem se o mesmo desejar alcançar baixa latência. Alternativamente, a decisão pode ser com base em se o decodificador 112 tem recursos suficientes para suportar a operação à base de sub- imagem. Se a CPB 120 operar em um nível de sub-imagem, o decodificador pode determinar 406 um ou mais atrasos de remoção para as unidades de decodificação em uma unidade de acesso. Por exemplo, o decodificador 112 pode determinar um único parâmetro de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay) que é aplicável a todas as unidades de decodificação na unidade de acesso. Alternativamente, o decodificador 112 pode determinar um atraso de remoção de CPB de unidade de decodificação separado (por exemplo, du_cpb_removal_delay[i]) para cada unidade de decodificação na unidade de acesso. Em outras palavras, a mensagem SEI de tempo de imagem pode incluir um parâmetro comum aplicável a todas as unidades de decodificação em uma unidade de acesso ou parâmetros separados para cada unidade de decodificação.
[00253] O decodificador 112 também pode remover 408 unidades de decodificação com base nos atrasos de remoção para as unidades de decodificação, isto é, com o uso de um parâmetro comum aplicável a todas as unidades de decodificação em uma unidade de acesso ou parâmetros separados para cada unidade de decodificação. O decodificador 112 também pode decodificar 410 as unidades de decodificação.
[00254] O decodificador 112 pode usar uma variável ClockDiff quando determinar um tempo de remoção para determinar a partir de diversos parâmetros sinalizados. Especificamente, ClockDiff pode ser determinada de acordo com ClockDiff = (num_units_in_tick- (num_units_in_sub_tick*(num_decoding_units_minus1+1)) / time_scale), em que num_units_in_tick é o número de unidades de tempo de um relógio que opera na frequência time_scale Hz que corresponde a um incremento de um contador de tique de relógio, num_units_in_sub_tick é o número de unidades de tempo de um relógio que opera na frequência time_scale Hz que corresponde a um incremento de um contador de tique de relógio de sub-imagem, num_decoding_units_minus1+1 é uma quantidade de unidades de codificação na unidade de acesso, e time_scale é o número de unidades de tempo que passam em um segundo.
[00255] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1, a CPB está operando a nível de sub-imagem e ClockDiff é maior que zero, o tempo de remoção para a unidade de decodificação m, tr(m) é determinado de acordo com: tr(m) = tr,n(m) + tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub) + ClockDiff , em que tr,n(m) é o tempo de remoção nominal da unidade de decodificação m, tc_sub é um tique de relógio de sub-imagem, Ceil() é uma função de teto e taf(m) é o tempo de chegada final de unidade de decodificação m.
[00256] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1, a CPB está operando a um nível de unidade de acesso e ClockDiff é maior que zero, o tempo de remoção para a unidade de acesso n, tr(n) é determinado de acordo com: tr(n)= tr,n(n) + tc * Ceil((taf(n) - tr,n(n)) / tc) - ClockDiff, em que tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é um tique de relógio, Ceil() é uma função de teto e taf(n) é um tempo de chegada final da unidade de acesso n.
[00257] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m),um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + max((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), (tc * Ceil((taf(n) - tr,n(n)) / tc))), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00258] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para a unidade de acesso n, tr(n) de acordo com: tr(n) = tr,n(n) + max((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), (tc * Ceil((taf(n) - tr,n(n)) / tc))), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00259] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + min((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub), (tc * Ceil((taf(n) - tr,n(n)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00260] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para a unidade de acesso n, tr(n) de acordo com: tr(n) = tr,n(n) + min((tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), (tc * Ceil((taf(n) - tr,n(n)) / tc))), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00261] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + (tc * Ceil((taf(n) - tr,n(n)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00262] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de unidade de acesso, o tempo de remoção para a unidade de acesso n, tr(n) de acordo com: tr(n) = tr,n(n) + (tc * Ceil((taf(n) - tr,n(n)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio e taf(n) é um tempo de chegada final da unidade de acesso n.
[00263] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a unidade de decodificação, a qual não é a última unidade de decodificação da unidade de acesso é definida como tr(m) = taf(m), em que taf(m) é um tempo de chegada final da unidade de decodificação m. E o tempo de remoção para a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + (tc_sub * Ceil((taf(m) - tr,n(m)) / tc_sub)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio, taf(n) é um tempo de chegada final da unidade de acesso n e taf(m) é um tempo de chegada final da última unidade de decodificação na unidade de acesso n.
[00264] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a unidade de decodificação, a qual não é a última unidade de decodificação da unidade de acesso é definida como tr(m) = taf(m), em que taf(m) é um tempo de chegada final da unidade de decodificação m. E o tempo de remoção para a última unidade de decodificação m da unidade de acesso, tr(m) de acordo com: tr(m) = tr,n(m) + (tc * Ceil((taf(m) - tr,n(m)) / tc)), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio, taf(n) é um tempo de chegada final da unidade de acesso n e taf(m) é um tempo de chegada final da última unidade de decodificação na unidade de acesso n.
[00265] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) (por exemplo, low_delay_hrd_flag) é definido para 1, tr,n(m) < taf(m), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a nível de sub-imagem, o tempo de remoção para a unidade de decodificação é definido como tr(m) = taf(m), em que tr,n(m) é o tempo de remoção nominal da unidade de decodificação m, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio, taf(n) é um tempo de chegada final da unidade de acesso n e taf(m) é um tempo de chegada final da unidade de decodificação na unidade de acesso n.
[00266] Quando um sinalizador de decodificador hipotético de referência de atraso baixo (HRD) é definido para 1, tr,n(n) < taf(n), um sinalizador de tempo de imagem é definido para 1 e a CPB está operando a unidade de acesso, o tempo de remoção para unidade de acesso n, tr(n) de acordo com: tr(n) = taf(n), em que tr,n(m) é o tempo de remoção nominal da última unidade de decodificação n, tc_sub é o tique de relógio de sub-imagem, Ceil() é uma função de teto, taf(m) é um tempo de chegada final da última unidade de decodificação m, tr,n(n) é o tempo de remoção nominal da unidade de acesso n, tc é o tique de relógio etaf(n) é um tempo de chegada final da unidade de acesso n.
[00267] Se a CPB operar em um nível de unidade de acesso, o decodificador 112 pode determinar 412 um parâmetro de atraso de remoção de CPB. Isso pode ser incluído na mensagem SEI de tempo de imagem recebida (por exemplo, cpb_removal_delay). O decodificador 112 também pode remover 414 uma unidade de acesso com base no parâmetro de atraso de remoção de CPB e decodificar 416 a unidade de acesso. Em outras palavras, o decodificador 112 pode decodificar todas as unidades de acesso de uma vez, em vez das unidades de decodificação dentro da unidade de acesso.
[00268] A Figura 5 é um fluxograma que ilustra uma configuração de um método 500 para determinar um ou mais atrasos de remoção para unidades de decodificação em uma unidade de acesso. Em outras palavras, o método 500 ilustrado na Figura 5 pode ilustrar adicionalmente a etapa 406 no método 400 ilustrado na Figura 4. O método 500 pode ser realizado por um decodificador 112. O decodificador 112 pode determinar 502 se uma mensagem SEI de tempo de imagem recebida inclui um parâmetro de atraso de remoção de CPB de unidade de decodificação comum. Isso pode incluir determinar se um sinalizador de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay_flag) é definido. Se sim, o decodificador 112 pode determinar 504 um parâmetro de atraso de remoção de CPB de unidade de decodificação comum (por exemplo, common_du_cpb_removal_delay) que é aplicável a todas as unidades de decodificação em uma unidade de acesso. Se não, o decodificador 112 pode determinar 506 parâmetros de atraso de remoção de CPB de unidade de decodificação separados (por exemplo, du_cpb_removal_delay[i]) para cada unidade de decodificação em uma unidade de acesso.
[00269] Além de modificar a semântica da mensagem SEI de tempo de imagem, os presentes sistemas e métodos também podem impor uma restrição de fluxo de bits, de modo que a operação da operação de CPB à base de sub-imagem e da operação de CPB a nível de unidade de acesso resultem no mesmo tempo da remoção de unidade de decodificação. Especificamente, quando o sinalizador de tempo de imagem (por exemplo, sub_pic_cpb_params_present_flag) é definido para 1, o atraso de remoção de CPB pode ser definido de acordo com [MATEMÁTICA 6]
Figure img0010
[00270] em que du_cpb_removal_delay[i] são os parâmetros de atraso de remoção de CPB de unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de codificação na unidade de acesso deslocada em um, e i é um índice.
[00271] Alternativamente, o atraso de remoção de CPB pode ser definido conforme descrito a seguir: Seja a variável Tdu(k) definida como: [MATEMÁTICA 7]
Figure img0011
[00272] em que du_cpb_removal_delay_minus1k[i] e num_decoding_units_minus1k são parâmetros para I-ésima unidade de decodificação da k-ésima unidade de acesso (com k=0 para a unidade de acesso que inicializou o HRD e Tdu(k)=0 para k<1), e em que du_cpb_removal_delay_ minus1k[i]+1=du_cpb_removal_delay_minus1k[i] é o parâmetro de atraso de remoção de CPB de unidade de decodificação para a I- ésima unidade de decodificação da k-ésima unidade de acesso, e num_decoding_units_minus1k é o número de unidades de decodificação na k-ésima unidade de acesso, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, e i e k são índices. Então, quando o sinalizador de tempo de imagem (por exemplo, sub_pic_cpb_params_present_flag) é definido para 1, a restrição a seguir deverá ser verdadeira:
[00273] (au_cpb_removal_delay_minus1 + 1) * tc ==Tdu(k), em que (au_cpb_removal_delay_minus1 + 1)=cpb_removal_delay, o atraso de remoção de CPB. Dessa forma, nesse caso, o atraso de remoção de CPB (au_cpb_removal_delay_minus1 + 1) é definido de modo que a operação de operação de CPB à base de sub-imagem e operação de CPB à base de unidade de acesso resultem no mesmo tempo da remoção de unidade de acesso e última unidade de decodificação da remoção de unidade de acesso.
[00274] Alternativamente, o atraso de remoção de CPB pode ser definido de acordo com [MATEMÁTICA 8]
Figure img0012
[00275] em que du_cpb_removal_delay[i] são os parâmetros de atraso de remoção de CPB de unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de codificação na unidade de acesso deslocada em um, e i é um índice.
[00276] Alternativamente, cpb_removal_delay e du_cpb_removal_delay[num_decoding_units_minus1] podem ser definidos de acordo com: cpb_removal_delay*tc = du_cpb_removal_delay[num_decoding_units_minus1]* tc,sub em que du_cpb_removal_delay[num_decoding_units_minus1] é o parâmetro de atraso de remoção de CPB de unidade de decodificação para a num_decoding_units_minus1-ésima unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de decodificação na unidade de acesso deslocada em um.
[00277] Além de modificar a semântica da mensagem SEI de tempo de imagem, os presentes sistemas e métodos também podem impor uma restrição de fluxo de bits, de modo que a operação da operação de CPB à base de sub-imagem e da operação de CPB a nível de unidade de acesso resultem no mesmo tempo da remoção de unidade de decodificação. Especificamente, quando o sinalizador de tempo de imagem (por exemplo, sub_pic_cpb_params_present_flag) é definido para 1, os valores para cpb_removal_delay e du_cpb_removal_delay[num_decoding_units_minus1] podem ser definidos de modo a satisfazer: -1<=(cpb_removal_delay*tc - du_cpb_removal_delay[num_decoding_units_minus1]* tc,sub) <=1 em que du_cpb_removal_delay[num_decoding_units_minus1] é o parâmetro de atraso de remoção de CPB de unidade de decodificação para a num_decoding_units_minus1-ésima unidade de decodificação, tc é um tique de relógio, tc,sub é um tique de relógio de sub-imagem, num_decoding_units_minus1 é uma quantidade de unidades de codificação na unidade de acesso deslocada em um.
[00278] A Figura 6A é um diagrama de blocos que ilustra uma configuração de um codificador 604 em um dispositivo eletrônico 602. Deve-se observar que um ou mais elementos ilustrados conforme incluídos no dispositivo eletrônico 602 podem ser implantados em hardware, software ou uma combinação de ambos. Por exemplo, o dispositivo eletrônico 602 inclui um codificador 604, o qual pode ser implantado em hardware, software ou uma combinação de ambos. Por exemplo, o codificador 604 pode ser implantado como um circuito, circuito integrado, circuito integrado para aplicação específica (ASIC), processador em comunicação eletrônica com a memória com instruções executáveis, firmware, arranjo de portas programável por campo (FPGA), etc., ou uma combinação dos mesmos. Em algumas configurações, o codificador 604 pode ser um codificador HEVC.
[00279] O dispositivo eletrônico 602 pode incluir uma fonte 622. A fonte 622 pode fornecer imagem ou dados de imagem (por exemplo, vídeo) como uma ou mais imagens de entrada 606 para o codificador 604. Os exemplos da fonte 622 podem incluir sensores de imagem, memória, interfaces de comunicação, interfaces de rede, receptores sem fio, portas, etc..
[00280] Uma ou mais imagens de entrada 606 podem ser fornecidas para um módulo de predição intraquadro e memória de reconstrução 624. Um dispositivo de entrada 606 também pode ser fornecido para um módulo de estimação de movimento e compensação de movimento 646 e para um módulo de subtração 628.
[00281] O módulo de predição intraquadro e memória de reconstrução 624 podem gerar informações de modo intra 640 e um sinal intra 626 com base em uma ou mais imagens de entrada 606 e dados reconstruídos 660. O módulo de estimação de movimento e compensação de movimento 646 pode gerar informações de modo inter 648 e um sinal inter 644 com base em uma ou mais imagens de entrada 606 e uma imagem de referência 678 a partir da memória temporária de imagem decodificada 676. Em algumas configurações, a memória temporária de imagem decodificada 676 pode incluir dados a partir de uma ou mais imagens de referência na memória temporária de imagem decodificada 676.
[00282] O codificador 604 pode selecionar entre o sinal intra 626 e o sinal inter 644 de acordo com um modo. O sinal intra 626 pode ser usado para explorar características espaciais dentro de uma imagem em um modo de codificação intra. O sinal inter 644 pode ser usado a fim de explorar características temporais dentro de imagens em um modo de codificação inter. Enquanto no modo de codificação intra, o sinal intra 626 pode ser fornecido para o módulo de subtração 628 e as informações de modo intra 640 podem ser fornecidas para um módulo de codificação de entropia 642. Enquanto no modo de codificação inter, o sinal inter 644 pode ser fornecido para o módulo de subtração 628 e as informações de modo inter 648 podem ser fornecidas para um módulo de codificação de entropia 642.
[00283] O sinal intra 626 ou sinal inter 644 (dependendo do modo) é subtraído de uma imagem de entrada 606 no módulo de subtração 628 a fim de produzir um resíduo de predição 630. O resíduo de predição 630 é fornecido para um módulo de transformação 632. O módulo de transformação 632 pode comprimir o resíduo de predição 630 para produzir um sinal transformado 634 que é fornecido para um módulo de quantização 636. O módulo de quantização 636 quantiza o sinal transformado 634 para produzir coeficientes quantizados e transformados (TQCs) 638.
[00284] Os TQCs 638 são fornecidos para um módulo de codificação de entropia 642 e um módulo de quantização inversa 650. O módulo de quantização inversa 650 realiza a quantização inversa nos TQCs 638 para produzir um sinal quantizado inverso 652 que é fornecido para um módulo de transformação inversa 654. O módulo de transformação inversa 654 descomprime o sinal quantizado inverso 652 para produzir um sinal descomprimido 656 que é fornecido para um módulo de reconstrução 658.
[00285] O módulo de reconstrução 658 pode produzir dados reconstruídos 660 com base no sinal descomprimido 656. Por exemplo, o módulo de reconstrução 658 pode reconstruir imagens (modificadas). Os dados reconstruídos 660 podem ser fornecidos para um filtro de deblocagem 662 e para o módulo de intrapredição e memória temporária de reconstrução 624. O filtro de deblocagem 662 pode produzir um sinal filtrado 664 com base nos dados reconstruídos 660.
[00286] O sinal filtrado 664 pode ser fornecido para um módulo de deslocamento adaptável de amostra (SAO) 666. O módulo SAO 666 pode produzir informações de SAO 668 que são fornecidas para o módulo de codificação de entropia 642 e um sinal de SAO 670 que é fornecido para um filtro de loop adaptável (ALF) 672. O ALF 672 produz um sinal de ALF 674 que é fornecido para a memória temporária de imagem decodificada 676. O sinal de ALF 674 pode incluir dados a partir de uma ou mais imagens que podem ser usadas como imagens de referência.
[00287] O módulo de codificação de entropia 642 pode codificar os TQCs 638 para produzir fluxo de bits A 614a (por exemplo, dados de imagem codificada). Por exemplo, o módulo de codificação de entropia 642 pode codificar os TQCs 638 com o uso de codificação de comprimento variável adaptável ao contexto (CAVLC) ou codificação aritmética binária adaptável ao contexto (CABAC). Em particular, o módulo de codificação de entropia 642 pode codificar os TQCs 638 com base em uma ou mais dentre as informações de modo intra 640, informações de modo inter 648 e informações de SAO 668. O fluxo de bits A 614a (por exemplo, dados de imagem codificada) podem ser fornecidos para um módulo de geração de mensagem 608. O módulo de geração de mensagem 608 pode ser configurado de modo similar ao módulo de geração de mensagem 108 descrito em conexão com a Figura 1. Adicional ou alternativamente, o módulo de geração de mensagem 608 pode realizar um ou mais procedimentos descritos em conexão com a Figura 2 e Figura 3.
[00288] Por exemplo, o módulo de geração de mensagem 608 pode gerar uma mensagem (por exemplo, mensagem SEI de tempo de imagem ou outra mensagem) que inclui parâmetros de sub-imagem. Os parâmetros de sub-imagem podem incluir um ou mais atrasos de remoção para unidades de decodificação (por exemplo, common_du_cpb_removal_delay ou du_cpb_removal_delay[i]) e um ou mais parâmetros de NAL (por exemplo, common_num_nalus_in_du_minus1 ou num_nalus_in_du_minus1[i]). Em algumas configurações, a mensagem pode ser inserida no fluxo de bits A 614a para produzir o fluxo de bits B 614b. Dessa forma, a mensagem pode ser gerada depois que todo o fluxo de bits A 614a é gerado (por exemplo, depois que a maioria do fluxo de bits B 614b é gerada), por exemplo. Em outras configurações, a mensagem pode não ser inserida no fluxo de bits A 614a (em tal caso, o fluxo de bits B 614b pode ser igual ao fluxo de bits A 614a), mas pode ser fornecida em uma transmissão separada 610.
[00289] Em algumas configurações, o dispositivo eletrônico 602 envia o fluxo de bits 614 para outro dispositivo eletrônico. Por exemplo, o fluxo de bits 614 pode ser fornecido para uma interface de comunicação, interface de rede, transmissor sem fio, porta, etc. Por exemplo, o fluxo de bits 614 pode ser transmitido para outro dispositivo eletrônico através da LAN, da Internet, uma estação de base de telefone celular, etc.. O fluxo de bits 614 pode ser, adicional ou alternativamente, armazenado na memória ou outro componente no dispositivo eletrônico 602.
[00290] A Figura 6B é um diagrama de blocos que ilustra uma configuração de um codificador de vídeo 1782 em um dispositivo eletrônico 1702. O codificador de vídeo 1782 pode incluir um codificador de camada de otimização 1706, um codificador de camada-base 1709, um bloco de aumento em escala de resolução 1770 e uma interface de saída 1780. O codificador de vídeo da Figura 6B, por exemplo, é adequado para codificação de vídeo escalonável e codificação de vídeo de visualização múltipla, conforme descrito no presente documento.
[00291] O codificador de camada de otimização 1706 pode incluir uma entrada de vídeo 1781 que recebe uma imagem de entrada 1704. A saída da entrada de vídeo 1781 pode ser fornecida para um somador/subtrator 1783 que recebe uma saída de uma seleção de predição 1750. A saída do somador/subtrator 1783 pode ser fornecida para um bloco de transformar e quantizar 1752. A saída do bloco de transformar e quantizar 1752 pode ser fornecida para um bloco de codificação de entropia 1748 e um bloco de escalonamento e transformada inversa 1772. Depois que a codificação de entropia 1748 é realizada, a saída do bloco de codificação de entropia 1748 pode ser fornecida para a interface de saída 1780. A interface de saída 1780 pode emitir tanto o fluxo de bits de vídeo de camada-base codificado 1707 como o fluxo de bits de vídeo de camada de otimização codificado 1710.
[00292] A saída do bloco de escalonamento e transformada inversa 1772 pode ser fornecida para um somador 1779. O somador 1779 também pode receber a saída da seleção de predição 1750. A saída do somador 1779 pode ser fornecida para um bloco de deblocagem 1751. A saída do bloco de deblocagem 1751 pode ser fornecida para uma memória temporária de referência 1794. Uma saída da memória temporária de referência 1794 pode ser fornecida para um bloco de compensação de movimento 1754. A saída do bloco de compensação de movimento 1754 pode ser fornecida para a seleção de predição 1750. Uma saída da memória temporária de referência 1794 também pode ser fornecida para um preditor intra 1756. A saída do preditor intra 1756 pode ser fornecida para a seleção de predição 1750. A seleção de predição 1750 também pode receber uma saída do bloco de aumento em escala de resolução 1770.
[00293] O codificador de camada-base 1709 pode incluir uma entrada de vídeo 1762 que recebe uma imagem de entrada com resolução reduzida, ou outro conteúdo de imagem adequado para combinar com outra imagem, ou uma imagem de entrada de visualização alternativa ou a mesma imagem de entrada 1703 (isto é, igual à imagem de entrada 1704 recebida pelo codificador de camada de otimização 1706). A saída da entrada de vídeo 1762 pode ser fornecida para o loop de predição de codificação 1764. A codificação de entropia 1766 pode ser fornecida na saída do loop de predição de codificação 1764. A saída do loop de predição de codificação 1764 também pode ser fornecida para uma memória temporária de referência 1768. A memória temporária de referência 1768 pode fornecer retroalimentação para o loop de predição de codificação 1764. A saída da memória temporária de referência 1768 também pode ser fornecida para o bloco de aumento em escala de resolução 1770. Uma vez que a codificação de entropia 1766 tem sido realizada, a saída pode ser fornecida para a interface de saída 1780. O fluxo de bits de vídeo de camada-base codificado 1707 e/ou o fluxo de bits de vídeo de camada de otimização codificado 1710 podem ser fornecidos para um ou mais módulos de geração de mensagem, conforme desejado.
[00294] A Figura 7A é um diagrama de blocos que ilustra uma configuração de um decodificador 712 em um dispositivo eletrônico 702. O decodificador 712 pode ser incluído em um dispositivo eletrônico 702. Por exemplo, o decodificador 712 pode ser um decodificador HEVC. O decodificador 712 e um ou mais elementos ilustrados conforme incluídos no decodificador 712 podem ser implantados em hardware, software ou uma combinação de ambos. O decodificador 712 pode receber um fluxo de bits 714 (por exemplo, uma ou mais imagens codificadas e dados de sobrecarga incluídos no fluxo de bits 714) para a decodificação. Em algumas configurações, o fluxo de bits 714 recebido pode incluir dados de sobrecarga recebidos, tais como uma mensagem (por exemplo, mensagem SEI de tempo de imagem ou outras mensagens), cabeçalho de fatia, PPS, etc. Em algumas configurações, o decodificador 712 pode receber adicionalmente uma transmissão separada 710. A transmissão separada 710 pode incluir uma mensagem (por exemplo, uma mensagem SEI de tempo de imagem ou outra mensagem). Por exemplo, uma mensagem SEI de tempo de imagem ou outra mensagem pode ser recebida em uma transmissão separada 710 em vez do fluxo de bits 714. Contudo, deve-se observar que a transmissão separada 710 pode ser opcional e pode não ser utilizada em algumas configurações.
[00295] O decodificador 712 inclui uma CPB 720. A CPB 720 pode ser configurada de modo similar à CPB 120 descrita em conexão com a Figura 1 acima. Adicional ou alternativamente, o decodificador 712 pode realizar um ou mais procedimentos descritos em conexão com a Figura 4 e Figura 5. Por exemplo, o decodificador 712 pode receber uma mensagem (por exemplo, mensagem SEI de tempo de imagem ou outra mensagem) com parâmetros de sub-imagem e remover e decodificar unidades de decodificação em uma unidade de acesso com base nos parâmetros de sub-imagem. Deve-se observar que uma ou mais unidades de acesso podem ser incluídas no fluxo de bits e podem incluir um ou mais dentre dados de imagem codificada e dados de sobrecarga.
[00296] A memória temporária de imagem codificada (CPB) 720 pode fornecer dados de imagem codificada para um módulo de decodificação de entropia 701. Os dados de imagem codificada podem ser decodificados por entropia por um módulo de decodificação de entropia 701, produzindo, assim, um sinal de informações de movimento 703 e coeficientes quantizados, escalonados e/ou transformados 705.
[00297] O sinal de informações de movimento 703 pode ser combinado com uma porção de um sinal de quadro de referência 798 a partir de uma memória temporária de imagem decodificada 709 em um módulo de compensação de movimento 780, o qual pode produzir um sinal de predição interquadro 782. Os coeficientes quantizados, escalonados e/ou transformados 705 podem ser quantizado inversamente, escalonados de transformados inversamente por um módulo inverso 707, produzindo, assim, um sinal residual decodificado 784. O sinal residual decodificado 784 pode ser adicionado a um sinal de predição 792 para produzir um sinal combinado 786. O sinal de predição 792 pode ser um sinal selecionado a partir do sinal de predição interquadro 782 produzido pelo módulo de compensação de movimento 780 ou um sinal de predição intraquadro 790 produzido por um módulo de predição intraquadro 788. Em algumas configurações, essa seleção de sinal pode ser com base (por exemplo, controlada por) no fluxo de bits 714.
[00298] O sinal de predição intraquadro 790 pode ser previsto a partir de informações decodificadas anteriormente do sinal combinado 786 (no quadro atual, por exemplo). O sinal combinado 786 também pode ser filtrado por um filtro de deblocagem 794. O sinal filtrado resultante 796 pode ser gravado na memória temporária de imagem decodificada 709. O sinal filtrado resultante 796 pode incluir uma imagem decodificada. A memória temporária de imagem decodificada 709 pode fornecer uma imagem decodificada que pode ser emitida 718. Em alguns casos, 709 pode ser considerada como a memória de quadro.
[00299] A Figura 7B é um diagrama de blocos que ilustra uma configuração de um decodificador 1812 em um dispositivo eletrônico 1802. O decodificador de vídeo 1812 pode incluir um decodificador de camada de otimização 1815 e um decodificador de camada-base 1813. O decodificador de vídeo 812 também pode incluir uma interface 1889 e aumento em escala de resolução 1870. O decodificador de vídeo da Figura 7B, por exemplo, é adequado para decodificação de vídeo escalonável e decodificação de vídeo de visualização múltipla, conforme descrito no presente documento.
[00300] A interface 1889 pode receber um fluxo de vídeo codificado 1885. O fluxo de vídeo codificado 1885 pode consistir em fluxo de vídeo codificado de camada-base e fluxo de vídeo codificado de camada de otimização. Esses dois fluxos podem ser enviados separadamente ou em conjunto. A interface 1889 pode fornecer parte ou todo o fluxo de vídeo codificado 1885 para um bloco de decodificação de entropia 1886 no decodificador de camada-base 1813. A saída do bloco de decodificação de entropia 1886 pode ser fornecida para um loop de predição de decodificação 1887. A saída do loop de predição de decodificação 1887 pode ser fornecida para uma memória temporária de referência 1888. A memória temporária de referência pode fornecer retroalimentação para o loop de predição de decodificação 1887. A memória temporária de referência 1888 também pode emitir o fluxo de vídeo de camada-base decodificado 1884.
[00301] A interface 1889 também pode fornecer parte ou todo o fluxo de vídeo codificado 1885 para um bloco de decodificação de entropia 1890 no decodificador de camada de otimização 1815. A saída do bloco de decodificação de entropia 1890 pode ser fornecida para um bloco de quantização inversa 1891. A saída do bloco de quantização inversa 1891 pode ser fornecida para um somador 1892. O somador 1892 pode adicionar a saída do bloco de quantização inversa 1891 e a saída de um bloco de seleção de predição 1895. A saída do somador 1892 pode ser fornecida para um bloco de deblocagem 1893. A saída do bloco de deblocagem 1893 pode ser fornecida para uma memória temporária de referência 1894. A memória temporária de referência 1894 também pode emitir o fluxo de vídeo de camada de otimização decodificado 1882. A saída da memória temporária de referência 1894 também pode ser fornecida para um preditor intra 1897. O decodificador de camada de otimização 1815 pode incluir compensação de movimento 1896. A compensação de movimento 1896 pode ser realizada após o aumento em escala de resolução 1870. O bloco de seleção de predição 1895 pode receber a saída do preditor intra 1897 e a saída da compensação de movimento 1896. Além disso, o decodificador pode incluir uma ou mais memórias temporárias de imagem codificada, conforme desejado, tal como em conjunto com a interface 1889.
[00302] A Figura 8 ilustra diversos componentes que podem ser utilizados em um dispositivo eletrônico de transmissão 802. Um ou mais dispositivos eletrônicos 102, 602, 702 descritos no presente documento podem ser implantados de acordo com o dispositivo eletrônico de transmissão 802 ilustrado na Figura 8.
[00303] O dispositivo eletrônico de transmissão 802 inclui um processador 817 que controla a operação do dispositivo eletrônico 802. O processador 817 também pode ser mencionado como uma CPU. A memória 811, a qual pode incluir tanto memória somente para leitura (ROM), memória de acesso aleatório (RAM) como qualquer tipo de dispositivo que pode armazenar informações, fornece instruções 813a (por exemplo, instruções executáveis) e dados 815a para o processador 817. Uma porção da memória 811 também pode incluir memória de acesso aleatório não volátil (NVRAM). A memória 811 pode ser em comunicação eletrônica com o processador 817.
[00304] As instruções 813b e os dados 815b também podem residir no processador 817. As instruções 813b e/ou os dados 815b carregados no processador 817 também podem incluir instruções 813a e/ou dados 815a a partir da memória 811 que foram carregados para a execução ou processamento através do processador 817. As instruções 813b podem ser executadas pelo processador 817 para implantar os sistemas e métodos revelados no presente documento. Por exemplo, as instruções 813b podem ser executáveis para realizar um ou mais dentre os métodos 200, 300, 400, 500 descritos acima.
[00305] O dispositivo eletrônico de transmissão 802 pode incluir uma ou mais interfaces de comunicação 819 para a comunicação com outros dispositivos eletrônicos (por exemplo, dispositivo eletrônico de recepção). As interfaces de comunicação 819 podem ser com base na tecnologia de comunicação com fio, tecnologia de comunicação sem fio, ou ambas. Os exemplos de uma interface de comunicação 819 incluem uma porta serial, uma porta paralela, um barramento serial universal (USB), um adaptador de Ethernet, uma interface de barramento IEEE 1394, uma interface de barramento de interface de sistema de computador pequeno (SCSI), uma porta de comunicação infravermelha (IR), um adaptador de comunicação sem fio Bluetooth, um transceptor sem fio de acordo com as especificações do projeto de parceira de 3a geração (3GPP), e assim por diante.
[00306] O dispositivo eletrônico de transmissão 802 pode incluir um ou mais dispositivos de saída 823 e um ou mais dispositivos de entrada 821. Os exemplos de dispositivos de saída 823 incluem um alto-falante, impressora, etc. Um tipo de dispositivo de saída que pode ser incluído em um dispositivo eletrônico 802 é um dispositivo de exibição 825. Os dispositivos de exibição 825 usados com as configurações reveladas no presente documento podem utilizar qualquer tecnologia de projeção de imagem adequada, tal como um tubo de raio de catodo (CRT), tela de cristal líquido (LCD), diodo emissor de luz (LED), plasma de gás, eletroluminescência, ou similares. Um controlador de exibição 827 pode ser fornecido para converter os dados armazenados na memória 811 em texto, gráficos e/ou imagens em movimento (conforme for adequado) mostradas no visor 825. Os exemplos de dispositivos de entrada 821 incluem um teclado, mouse, microfone, dispositivo de controle remoto, botão, joystick, trackball, touchpad, tela sensível ao toque, caneta óptica, etc..
[00307] Os diversos componentes do dispositivo eletrônico de transmissão 802 são acoplados em conjunto por um sistema de barramento 829, o qual pode incluir um barramento de potência, um barramento de sinal de controle e um barramento de sinal de estado, além de um barramento de dados. Contudo, por uma questão de clareza, os diversos barramentos são ilustrados na Figura 8 como o sistema de barramento 829. O dispositivo eletrônico de transmissão 802 ilustrado na Figura 8 é um diagrama de blocos funcional em vez de uma listagem de componentes específicos.
[00308] A Figura 9 é um diagrama de blocos que ilustra diversos componentes que podem ser utilizados em um dispositivo eletrônico de recepção 902. Um ou mais dispositivos eletrônicos 102, 602, 702 descritos no presente documento podem ser implantados de acordo com o dispositivo eletrônico de recepção 902 ilustrado na Figura 9.
[00309] O dispositivo eletrônico de recepção 902 inclui um processador 917 que controla a operação do dispositivo eletrônico 902. O processador 917 também pode ser mencionado como uma CPU. A memória 911, a qual pode incluir tanto memória somente para leitura (ROM), memória de acesso aleatório (RAM) como qualquer tipo de dispositivo que pode armazenar informações, fornece instruções 913a (por exemplo, instruções executáveis) e dados 915a para o processador 917. Uma porção da memória 911 também pode incluir memória de acesso aleatório não volátil (NVRAM). A memória 911 pode ser em comunicação eletrônica com o processador 917.
[00310] As instruções 913b e os dados 915b também podem residir no processador 917. As instruções 913b e/ou os dados 915b carregados no processador 917 também podem incluir instruções 913a e/ou dados 915a a partir da memória 911 que foram carregados para a execução ou processamento através do processador 917. As instruções 913b podem ser executadas pelo processador 917 para implantar os sistemas e métodos revelados no presente documento. Por exemplo, as instruções 913b podem ser executáveis para realizar um ou mais dentre os métodos 200, 300, 400, 500 descritos acima.
[00311] O dispositivo eletrônico de recepção 902 pode incluir uma ou mais interfaces de comunicação 919 para a comunicação com outros dispositivos eletrônicos (por exemplo, um dispositivo eletrônico de transmissão). A interface de comunicação 919 podem ser com base na tecnologia de comunicação com fio, tecnologia de comunicação sem fio, ou ambas. Os exemplos de uma interface de comunicação 919 incluem uma porta serial, uma porta paralela, um barramento serial universal (USB), um adaptador de Ethernet, uma interface de barramento IEEE 1394, uma interface de barramento de interface de sistema de computador pequeno (SCSI), uma porta de comunicação infravermelha (IR), um adaptador de comunicação sem fio Bluetooth, um transceptor sem fio de acordo com as especificações do projeto de parceira de 3a geração (3GPP), e assim por diante.
[00312] O dispositivo eletrônico de recepção 902 pode incluir um ou mais dispositivos de saída 923 e um ou mais dispositivos de entrada 921. Os exemplos de dispositivos de saída 923 incluem um alto- falante, impressora, etc. Um tipo de dispositivo de saída que pode ser incluído em um dispositivo eletrônico 902 é um dispositivo de exibição 925. Os dispositivos de exibição 925 usados com as configurações reveladas no presente documento podem utilizar qualquer tecnologia de projeção de imagem adequada, tal como um tubo de raio de catodo (CRT), tela de cristal líquido (LCD), diodo emissor de luz (LED), plasma de gás, eletroluminescência, ou similares. Um controlador de exibição 927 pode ser fornecido para converter os dados armazenados na memória 911 em texto, gráficos e/ou imagens em movimento (conforme for adequado) mostradas no visor 925. Os exemplos de dispositivos de entrada 921 incluem um teclado, mouse, microfone, dispositivo de controle remoto, botão, joystick, trackball, touchpad, tela sensível ao toque, caneta óptica, etc..
[00313] Os diversos componentes do dispositivo eletrônico de recepção 902 são acoplados em conjunto por um sistema de barramento 929, o qual pode incluir um barramento de potência, um barramento de sinal de controle e um barramento de sinal de estado, além de um barramento de dados. Contudo, por uma questão de clareza, os diversos barramentos são ilustrados na Figura 9 como o sistema de barramento 929. O dispositivo eletrônico de recepção 902 ilustrado na Figura 9 é um diagrama de blocos funcional em vez de uma listagem de componentes específicos.
[00314] A Figura 10 é um diagrama de blocos que ilustra uma configuração de um dispositivo eletrônico 1002 em que sistemas e métodos para enviar uma mensagem podem ser implantados. O dispositivo eletrônico 1002 inclui meios de codificação 1031 e meios de transmissão 1033. Os meios de codificação 1031 e meios de transmissão 1033 podem ser configurados para realizar uma ou mais funções descritas em conexão com uma ou mais dentre a Figura 1, a Figura 2, a Figura 3, a Figura 6 e a Figura 8 acima. Por exemplo, os meios de codificação 1031 e os meios de transmissão 1033 podem gerar um fluxo de bits 1014. A Figura 8 acima ilustra um exemplo de uma estrutura de aparelho concreta da Figura 10. Outras diversas estruturas podem ser implantadas para realizar uma ou mais funções da Figura 1, da Figura 2, da Figura 3, da Figura 6 e da Figura 8. Por exemplo, um DSP pode ser realizado por meio de software.
[00315] A Figura 11 é um diagrama de blocos que ilustra uma configuração de um dispositivo eletrônico 1102 em que sistemas e métodos para armazenar temporariamente um fluxo de bits 1114 podem ser implantados. O dispositivo eletrônico 1102 inclui meios de recepção 1135 e meios de decodificação 1137. Os meios de recepção 1135 e meios de decodificação 1137 podem ser configurados para realizar uma ou mais funções descritas em conexão com uma ou mais dentre a Figura 1, a Figura 4, a Figura 5, a Figura 7 e a Figura 9 acima. Por exemplo, os meios de recepção 1135 e meios de decodificação 1137 podem receber um fluxo de bits 1114. A Figura 9 acima ilustra um exemplo de uma estrutura de aparelho concreta da Figura 11. Outras diversas estruturas podem ser implantadas para realizar uma ou mais funções da Figura 1, da Figura 4, da Figura 5, da Figura 7 e da Figura 9. Por exemplo, um DSP pode ser realizado por meio de software.
[00316] A Figura 12 é um fluxograma que ilustra uma configuração de um método 1200 para a operação da memória temporária de imagem decodificada (DPB). O método 1200 pode ser realizado por um codificador 104 ou uma de suas subpartes (por exemplo, um módulo de memória temporária de imagem decodificada 676). O método 1200 pode ser realizado por um decodificador 112 em um dispositivo eletrônico 102 (por exemplo, dispositivo eletrônico B 102b). Adicional ou alternativamente, o método 1200 pode ser realizado por um decodificador 712 ou uma de suas subpartes (por exemplo, um módulo de memória temporária de imagem decodificada 709). O decodificador pode analisar o primeiro cabeçalho de fatia de uma imagem 1202. A saída e remoção de imagens a partir da DPB antes da decodificação da imagem atual (mas após a análise do cabeçalho de fatia da primeira fatia da imagem atual) acontece instantaneamente quando a primeira unidade de decodificação da unidade de acesso que contém a imagem atual é removida da CPB e prossegue conforme exposto a seguir.
[00317] - O processo de decodificação para o conjunto de imagens de referência (RPS) é invocado. O conjunto de imagens de referência é um conjunto de imagens de referência associado a uma imagem, que consiste em todas as imagens de referência que são anteriores à imagem associada na ordem de decodificação, que podem ser usadas para a interpredição da imagem associada ou qualquer imagem que segue a imagem associada na ordem de decodificação.
[00318] - O fluxo de bits do vídeo pode incluir uma estrutura de sintaxe que é colocada em pacotes de dados lógicos geralmente mencionados como unidades de camada de abstração de rede (NAL). Cada unidade de NAL inclui um cabeçalho de unidade de NAL, tal como um cabeçalho de unidade de NAL de dois bytes (por exemplo, 16 bits), para identificar o propósito da carga útil de dados associada. Por exemplo, cada fatia codificada (e/ou imagem) pode ser codificada em uma ou mais unidades de NAL de fatia (e/ou imagem). Outras unidades de NAL podem ser incluídas para outras categorias de dados, tais como, por exemplo, informações de otimização suplementar, fatia codificada de imagem de acesso de subcamada temporal (TSA), imagem de acesso de subcamada temporal em etapas (STSA), fatia codificada de não TSA, imagem posterior de não STSA, fatia codificada de imagem de acesso de enlace desfeito, fatia codificada de imagem de renovação decodificada instantânea, fatia codificada de imagem de acesso aleatório limpo, fatia codificada de imagem posterior decodificável, fatia codificada de imagem descartada ou marcada, conjunto de parâmetros de vídeo, conjunto de parâmetros de sequência, conjunto de parâmetros de imagem, delimitador de unidade de acesso, fim de sequência, fim de fluxo de bits, dados de preenchimento e/ou mensagem de informações de otimização de sequência. A Tabela (4) ilustra um exemplo de códigos de unidade de NAL e classes do tipo de unidade de NAL. Outros tipos de unidade de NAL podem ser incluídos, conforme desejado. Deve-se compreender, também, que os valores de tipo de unidade de NAL para as unidades de NAL mostradas na Tabela (4) podem ser reorganizados e redesignados. Além disso, tipos de unidade de NAL adicionais podem ser adicionados. Além disso, alguns tipos de unidade de NAL podem ser removidos.
[00319] Uma imagem de ponto de acesso aleatório intra (IRAP) é uma imagem codificada para qual cada unidade de NAL de camada de codificação de vídeo tem nal_unit_type na faixa de BLA_W_LP a RSV_IRAP_VCL23, inclusive conforme mostrado na Tabela (4). Uma imagem IRAP contém apenas fatias codificadas Intra (I). Uma imagem de renovação de decodificação instantânea (IDR) é uma imagem IRAP para qual cada unidade de NAL de camada de codificação de vídeo tem nal_unit_type igual a IDR_W_RADL ou IDR_N_LP, conforme mostrado na Tabela (4). Uma imagem de renovação de decodificação instantânea (IDR) contém apenas fatias I, e pode ser a primeira imagem no fluxo de bits na ordem de decodificação, ou pode aparecer posteriormente no fluxo de bits. Cada imagem IDR é a primeira imagem de uma sequência de vídeo codificada (CVS) na ordem de decodificação. Uma imagem de acesso de enlace desfeito (BLA) é uma imagem IRAP para qual cada unidade de NAL de camada de codificação de vídeo tem nal_unit_type igual a BLA_W_LP, BLA_W_RADL, ou BLA_N_LP, conforme mostrado na Tabela (4). Uma BLA contém apenas fatias I, e pode ser a primeira imagem no fluxo de bits na ordem de decodificação, ou pode aparecer posteriormente no fluxo de bits. Cada imagem BLA começa uma nova sequência de vídeo codificada, e tem o mesmo efeito sobre o processo de decodificação que uma imagem IDR. Contudo, uma imagem BLA contém elementos de sintaxe que especificam um conjunto de imagens de referência não vazio. [TABELA 4]
Figure img0013
Figure img0014
Figure img0015
[00320] Com referência à Tabela (5), a sintaxe de cabeçalho de unidade de NAL pode incluir dois bytes de dados, ou seja, 16 bits. O primeiro bit é um “forbidden_zero_bit” que é sempre definido para zero no início de uma unidade de NAL. Os próximos seis bits são um “nal_unit_type” que especifica o tipo de estrutura de dados de cargas úteis de sequência de byte em bruto (“RBSP”) contida na unidade de NAL, conforme mostrado na Tabela (4). Os próximos 6 bits são um “nuh_layer_id” que especifica o identificador da camada. Em alguns casos, esses seis bits podem ser especificados como “nuh_reserved_zero_6bits”, em vez disso. O nuh_reserved_zero_6bits pode ser igual a 0 na especificação de base do padrão. Em uma codificação de vídeo escalonável e/ou extensões de sintaxe, nuh_layer_id pode especificar que essa unidade de NAL particular pertence à camada identificada pelo valor desses 6 bits. O próximo elemento de sintaxe é “nuh_temporal_id_plus1”. O nuh_temporal_id_plus1 menos 1 pode especificar um identificador temporal para a unidade de NAL. O identificador temporal de variável TemporalId pode ser especificado como TemporalId = nuh_temporal_id_plus1 - 1. O identificador temporal TemporalId é usado para identificar uma subcamada temporal. A variável HighestTid identifica a subcamada temporal maior a ser decodificada. [TABELA 5]
Figure img0016
[00321] A Tabela (6) mostra uma estrutura de sintaxe de conjunto de parâmetros de sequência (SPS) exemplificadora.
[00322] pic_width_in_luma_samples especifica a largura de cada imagem decodificada em unidades de amostras de luminância. pic_width_in_luma_samples deverá não ser igual a 0.
[00323] pic_height_in_luma_samples especifica a altura de cada imagem decodificada em unidades de amostras de luminância. pic_height_in_luma_samples deverá não ser igual a 0.
[00324] sps_max_sub_layers_minus1 mais 1 especifica o número máximo de subcamadas temporais que podem estar presentes em cada CVS com referência a SPS. O valor de sps_max_sub_layers_minus1 deverá se situar na faixa de 0 a 6, inclusive.
[00325] O sinalizador sps_sub_layer_ordering_info_present_flag igual a 1 especifica que os elementos de sintaxe sps_max_dec_pic_buffering_minus1[ i ], sps_max_num_reorder_pics[ i ] e sps_max_latency_increase_plus1[ i ] estão presentes para subcamadas sps_max_sub_layers_minus1 + 1. sps_sub_layer_ordering_info_present_flag igual a 0 especifica que o valores de sps_max_dec_pic_buffering_minus1[ sps_max_sub_layers_minus1 ], sps_max_num_reorder_pics[ sps_max_sub_layers_minus1 ] e sps_max_latency_increase_plus1[ sps_max_sub_layers_minus1 ] se aplicam a todas as subcamadas.
[00326] sps_max_dec_pic_buffering_minus1[ i ] mais 1 especifica o tamanho exigido máximo da memória temporária de imagem decodificada para a CVS em unidades de memórias temporárias de armazenamento de imagem, quando HighestTid é igual a i. O valor de sps_max_dec_pic_buffering_minus1[ i ] deverá se situar na faixa de 0 a MaxDpbSize - 1, inclusive, em que MaxDpbSize especifica o tamanho máximo de memória temporária de imagem decodificada em unidades de memórias temporárias de armazenamento de imagem. Quando i é maior que 0, sps_max_dec_pic_buffering_minus1[ i ] deverá ser maior ou igual a sps_max_dec_pic_buffering_minus1[ i - 1 ]. Quando sps_max_dec_pic_buffering_minus1[ i ] não está presente para i na faixa de 0 a sps_max_sub_layers_minus1 - 1, inclusive, devido ao fato de que sps_sub_layer_ordering_info_present_flag é igual a 0, deduz-se que seja igual a sps_max_dec_pic_buffering_minus1[ sps_max_sub_layers_minus1 ].
[00327] sps_max_num_reorder_pics[ i ] indica o número permitido máximo de imagens que podem preceder qualquer imagem na CVS na ordem de decodificação e seguir essa imagem na ordem de saída, quando HighestTid é igual a i. O valor de sps_max_num_reorder_pics[ i ] deverá se situar na faixa de 0 a sps_max_dec_pic_buffering_minus1[ i ], inclusive. Quando i é maior que 0, sps_max_num_reorder_pics[ i ] deverá ser maior ou igual a sps_max_num_reorder_pics[ i - 1 ]. Quando sps_max_num_reorder_pics[ i ] não está presente para i na faixa de 0 a sps_max_sub_layers_minus1 - 1, inclusive, devido ao fato de que sps_sub_layer_ordering_info_present_flag é igual a 0, deduz-se que seja igual a sps_max_num_reorder_pics[ sps_max_sub_layers_minus1 ].
[00328] sps_max_latency_increase_plus1[ i ] não igual a 0 é usado para computar o valor de SpsMaxLatencyPictures[ i ], o qual especifica o número máximo de imagens que podem preceder qualquer imagem na CVS na ordem de saída e seguir essa imagem na ordem de decodificação, quando HighestTid é igual a i.
[00329] Quando sps_max_latency_increase_plus1[ i ] não é igual a 0, o valor de SpsMaxLatencyPictures[ i ] é especificado conforme exposto a seguir:
[00330] SpsMaxLatencyPictures[ i ] = sps_max_num_reorder_pics[ i ] + sps_max_latency_increase_plus1[ i ] - 1
[00331] Quando sps_max_latency_increase_plus1[ i ] é igual a 0, nenhum limite correspondente é expresso.
[00332] O valor de sps_max_latency_increase_plus1[ i ] deverá se situar na faixa de 0 a 232 - 2, inclusive. Quando sps_max_latency_increase_plus1[ i ] não está presente para i na faixa de 0 a sps_max_sub_layers_minus1 - 1, inclusive, devido ao fato de que sps_sub_layer_ordering_info_present_flag é igual a 0, deduz-se que seja igual a sps_max_latency_increase_plus1[ sps_max_sub_layers_minus1 ]. [TABELA 6]
Figure img0017
[00333] Quando a imagem atual é uma imagem IRAP, o seguinte se aplica:
[00334] - Se a imagem atual for uma imagem IDR, uma imagem BLA, a primeira imagem no fluxo de bits na ordem de decodificação, ou a primeira imagem que segue um fim de unidade de NAL de sequência na ordem de decodificação, uma variável NoRaslOutputFlag é definida igual a 1.
[00335] - De outro modo, se algum meio externo estiver disponível para definir uma variável HandleCraAsBlaFlag para um valor para a imagem atual, a variável HandleCraAsBlaFlag é definida igual ao valor fornecido por esse meio externo e a variável NoRaslOutputFlag é definida igual a HandleCraAsBlaFlag.
[00336] - De outro modo, a variável HandleCraAsBlaFlag é definida igual a 0 e a variável NoRaslOutputFlag é definida igual a 0.
[00337] Se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1 que é não imagem 0, as seguintes etapas ordenadas são aplicadas:
[00338] 1. A variável NoOutputOfPriorPicsFlag é derivada para o decodificador sob o teste conforme exposto a seguir:
[00339] - Se a imagem atual for uma imagem CRA, NoOutputOfPriorPicsFlag é definido igual a 1 (independentemente do valor de no_output_of_prior_pics_flag).
[00340] - De outro modo, se o valor de pic_width_in_luma_samples, pic_height_in_luma_samples ou sps_max_dec_pic_buffering_minus1[ HighestTid ] derivado a partir do SPS ativo for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples ou sps_max_dec_pic_buffering_minus1[ HighestTid ], respectivamente, derivado a partir do SPS ativo para a imagem precedente, NoOutputOfPriorPicsFlag pode (mas não deve) ser definido para 1 pelo decodificador sob teste, independentemente do valor de no_output_of_prior_pics_flag.
[00341] - De outro modo, NoOutputOfPriorPicsFlag é definido igual a no_output_of_prior_pics_flag.
[00342] 2. O valor de NoOutputOfPriorPicsFlag derivado para o decodificador sob teste é aplicado para o HRD conforme exposto a seguir:
[00343] - Se NoOutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem na DPB são esvaziadas sem saída das imagens que as mesmas contêm, e a integralidade de DPB é definida igual a 0.
[00344] - De outro modo (NoOutputOfPriorPicsFlag é igual a 0), todas as memórias temporárias de armazenamento de imagem que contêm uma imagem que é marcada como “não necessária para saída” e “não usada para referência” são esvaziadas (sem saída), e todas as memórias temporárias de armazenamento de imagem não vazias na DPB são esvaziadas mediante a invocação repetida do processo de “bumping” 1204, e a integralidade de DPB é definida igual a 0.
[00345] - De outro modo (a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a 1), todas as memórias temporárias de armazenamento de imagem que contêm uma imagem que é marcada como “não necessária para saída” e “não usada para referência” são esvaziadas (sem saída). Para cada memória temporária de armazenamento de imagem que é esvaziada, a integralidade de DPB é diminuída em um. Quando uma ou mais dentre as seguintes condições são verdadeiras, o processo “bumping” 1204 é invocado repetidamente, enquanto que diminui adicionalmente a integralidade de DPB em um para cada memória temporária de armazenamento de imagem adicional que é esvaziada, até que nenhuma das seguintes condições seja verdadeira:
[00346] 1. O número de imagens com esse valor particular nuh_layer_id na DPB que são marcadas como “necessárias para saída” é maior que sps_max_num_reorder_pics[ HighestTid ] a partir do conjunto de parâmetros de sequência ativo (quando esse valor particular nuh_layer_id é igual a 0) ou a partir do conjunto de parâmetros de sequência de camada ativo para esse valor particular nuh_layer_id.
[00347] 2. Se sps_max_latency_increase_plus1[ HighestTid ] a partir do conjunto de parâmetros de sequência ativo (quando esse valor particular nuh_layer_id é igual a 0) ou a partir do conjunto de parâmetros de sequência de camada ativo para esse valor particular nuh_layer_id não é igual a 0 e existe pelo menos uma imagem com esse valor particular nuh_layer_id na DPB que é marcada como “necessária para saída” para qual a variável associada PicLatencyCount é maior ou igual a SpsMaxLatencyPictures[ HighestTid ] para esse valor particular nuh_layer_id.
[00348] 3. O número de imagens com esse valor particular nuh_layer_id na DPB é maior ou igual a sps_max_dec_pic_buffering[ HighestTid ] + 1 a partir do conjunto de parâmetros de sequência ativo (quando esse valor particular nuh_layer_id é igual a 0) ou a partir do conjunto de parâmetros de sequência de camada ativo para esse valor particular nuh_layer_id.
[00349] O processo de decodificação de imagem no bloco 1206 (marcação e decodificação de imagem) acontece instantaneamente quando a última unidade de decodificação de unidade de acesso contendo a imagem atual é removida da CPB.
[00350] Para cada imagem com valor nuh_layer_id igual ao valor nuh_layer_id da imagem atual na DPB que é marcada como “necessária para saída”, a variável associada PicLatencyCount é definida igual a PicLatencyCount + 1.
[00351] A imagem atual é considerada como decodificada depois que a última unidade de decodificação da imagem é decodificada. A imagem decodificada atual é armazenada em uma memória temporária de armazenamento de imagem vazia na DPB, e o seguinte se aplica:
[00352] - Se a imagem decodificada atual tiver PicOutputFlag igual a 1, a mesma é marcada como “necessária para saída” e sua variável associada PicLatencyCount é definida igual a 0.
[00353] - De outro modo (a imagem decodificada atual tem PicOutputFlag igual a 0), a mesma é marcada como “não necessária para saída”.
[00354] A imagem decodificada atual é marcada como “usada para referência a curto prazo”.
[00355] Quando uma ou mais dentre as seguintes condições são verdadeiras, o processo de “bumping” adicional 1208 é invocado repetidamente até que nenhuma das seguintes condições seja verdadeira:
[00356] O número de imagens com o valor nuh_layer_id igual ao valor nuh_layer_id da imagem atual na DPB que são marcadas como “necessárias para saída” é maior que sps_max_num_reorder_pics[ HighestTid ] a partir do conjunto de parâmetros de sequência ativo (quando o valor nuh_layer_id da imagem atual é igual a 0) ou a partir do conjunto de parâmetros de sequência de camada ativo para o valor nuh_layer_id da imagem atual.
[00357] - sps_max_latency_increase_plus1[ HighestTid ] a partir do conjunto de parâmetros de sequência ativo (quando o valor nuh_layer_id da imagem atual é igual a 0) ou a partir do conjunto de parâmetros de sequência de camada ativo para o valor nuh_layer_id da imagem atual não é igual a 0 e existe pelo menos uma imagem com esse valor particular nuh_layer_id na DPB que é marcada como “necessária para saída” para qual a variável associada PicLatencyCount é maior ou igual a SpsMaxLatencyPictures[ HighestTid ] para esse valor particular nuh_layer_id.
[00358] O processo “bumping” 1204 e processo bumping adicional 1208 são idênticos em termos das etapas e consistem nas seguintes etapas ordenadas: As imagens que são primeiras para saída são selecionadas como aquelas que têm o valor menor de contagem de ordem de imagem (PicOrderCntVal) de todas as imagens na DPB marcadas como “necessárias para saída”. Uma contagem de ordem de imagem é uma variável que está associada a cada imagem, identifica exclusivamente a imagem associada entre todas as imagens na CVS, e, quando a imagem associada deve ser emitida a partir da memória temporária de imagem decodificada, indica a posição da imagem associada na ordem de saída, em relação às posições de ordem de saída das outras imagens na mesma CVS que devem ser emitidas a partir da memória temporária de imagem decodificada.
[00359] - Essas imagens são cortadas, com o uso da janela de corte de conformidade especificada no conjunto de parâmetros de sequência ativo para a imagem com nuh_layer_id igual a 0 ou no conjunto de parâmetros de sequência de camada ativo para um valor nuh_layer_id igual àquele da imagem, as imagens cortadas são emitidas em ordem ascendente de nuh_layer_id, e as imagens são marcadas como “não necessárias para saída”.
[00360] - Cada memória temporária de armazenamento de imagem que contém uma imagem marcada como “não usada para referência” e que incluiu uma das imagens que foi cortada e emitida é esvaziada.
[00361] Com referência à Figura 13A, conforme anteriormente descrito, a sintaxe de cabeçalho de unidade de NAL pode incluir dois bytes de dados, ou seja, 16 bits. O primeiro bit é um “forbidden_zero_bit” que é sempre definido para zero no início de uma unidade de NAL. Os próximos seis bits são um “nal_unit_type” que especifica o tipo de estrutura de dados de cargas úteis de sequência de byte em bruto (“RBSP”) contida na unidade de NAL. Os próximos 6 bits são um “nuh_reserved_zero_6bits”. O nuh_reserved_zero_6bits pode ser igual a 0 na especificação de base do padrão. Outros valores de nuh_reserved_zero_6bits podem ser especificados conforme desejado. Os decodificadores podem ignorar (isto é, remover do fluxo de bits e descartar) todas as unidades de NAL com valores de nuh_reserved_zero_6bits não iguais a 0, quando manipula um fluxo com base na especificação de base do padrão. Em uma extensão escalonável ou outra extensão nuh_reserved_zero_6bits pode especificar outros valores, para sinalizar extensões de sintaxe e/ou codificação de vídeo escalonável. Em alguns casos, o elemento de sintaxe nuh_reserved_zero_6bits pode ser chamado de reserved_zero_6bits. Em alguns casos, o elemento de sintaxe nuh_reserved_zero_6bits pode ser chamado de layer_id_plus1 ou layer_id, conforme ilustrado na Figura 13B e Figura 13C. Nesse caso, o elemento layer_id será layer_id_plus1 menos 1. Nesse caso, pode ser usado para sinalizar informações relacionadas à camada de vídeo codificado escalonável. O próximo elemento de sintaxe é “nuh_temporal_id_plus1”. nuh_temporal_id_plus1 menos 1 pode especificar um identificador temporal para a unidade de NAL. O identificador temporal de variável TemporalId pode ser especificado como TemporalId = nuh_temporal_id_plus1 - 1.
[00362] Com referência à Figura 14, é ilustrada uma estrutura de sintaxe de unidade de NAL geral. A sintaxe de dois byte de cabeçalho de unidade de NAL da Figura 13 é incluída na referência a nal_unit_header() da Figura 14. O resto da sintaxe de unidade de NAL se refere principalmente a RBSP.
[00363] Uma técnica existente para usar o “nuh_reserved_zero_6bits” é sinalizar as informações de codificação de vídeo escalonável mediante a divisão dos 6 bits do nuh_reserved_zero_6bits em campos de bit distintos, ou seja, um ou mais dentre uma ID de dependência, uma ID de qualidade, uma ID de visualização e um sinalizador de profundidade, cada um dos quais se refere à identificação de uma camada diferente do vídeo codificado escalonável. Consequentemente, os 6 bits indicam qual camada da técnica de codificação escalonável essa unidade particular de NAL pertence. Então, em uma carga útil de dados, tal como uma sintaxe de extensão de conjunto de parâmetros de vídeo (“VPS”) (“scalability_type”), conforme ilustrado na Figura 15, as informações sobre a camada são definidas. A sintaxe de extensão de VPS da Figura 15 inclui 4 bits para tipo de escalabilidade (elemento de sintaxe scalability_type) que especifica os tipos de escalabilidade em uso na sequência de vídeo codificada e as dimensões sinalizadas através de layer_id_plus1 (ou layer_id) no cabeçalho de unidade de NAL. Quando o tipo de escalabilidade é igual a 0, a sequência de vídeo codificada está em conformidade com a especificação de base, dessa forma, layer_id_plus1 de todas as unidades de NAL é igual a 0 e não existem unidades de NAL que pertencem a uma visualização ou camada de otimização. Os valores maiores do tipo de escalabilidade são interpretados conforme ilustrado na Figura 16.
[00364] O layer_id_dim_len[ i ] especifica o comprimento, em bits, da i-ésima ID de dimensão de escalabilidade. A soma dos valores layer_id_dim_len[ i ] para todos os valores de i na faixa de 0 a 7 é menor ou igual a 6. O vps_extension_byte_alignment_reserved_zero_bit é zero. O vps_layer_id[ i ] especifica o valor de layer_id da i-ésima camada à qual as seguintes informações de dependência de camada se aplicam. O num_direct_ref_layers[ i ] especifica o número de camadas que a i- ésima camada depende diretamente. O ref_layer_id[ i ][ j ] identifica a j-ésima camada que a i-ésima camada depende diretamente.
[00365] Dessa maneira, a técnica existente sinaliza os identificadores de escalabilidade na unidade de NAL e no conjunto de parâmetros de vídeo para alocar os bits entre os tipos de escalabilidade listados na Figura 16. Então, para cada tipo de escalabilidade, a Figura 16 define quantas dimensões são suportadas. Por exemplo, o tipo de escalabilidade 1 tem 2 dimensões (isto é, espacial e qualidade). Para cada uma das dimensões, o layer_id_dim_len[i] define o número de bits alocados para cada uma dentre essas duas dimensões, em que a soma total de todos os valores de layer_id_dim_len[i] é menor ou igual a 6, o qual é o número de bits no nuh_reserved_zero_6bits do cabeçalho de unidade de NAL. Dessa forma, em combinação, a técnica identifica quais tipos de escalabilidade estão em uso e como os 6 bits do cabeçalho de unidade de NAL são alocados entre a escalabilidade.
[00366] Embora tal combinação fixa de dimensões de escalabilidade diferentes, conforme ilustrado na Figura 16, seja adequada para muitas aplicações, existem combinações desejáveis que não estão incluídas. Com referência à Figura 17, uma sintaxe de extensão de conjunto de parâmetros de vídeo modificada especifica um tipo de escalabilidade para cada bit no elemento de sintaxe nuh_reserved_zero_6bits. O vps_extension_byte_alignment_reserved_zero_bit é definido para 0. O max_num_layers_minus1_bits indica o número total de bits usados para o elemento de sintaxe nos primeiros dois bytes do cabeçalho de unidade de NAL na Figura 13, mencionado como layer_id_plus1 ou nuh_reserved_zero_6bits. . O scalability_map[i] especifica o tipo de escalabilidade para cada bit no elemento de sintaxe layer_id_plus1. Em alguns casos, o elemento de sintaxe layer_id_plus1 pode ser chamado, em vez disso, de elemento de sintaxe nuh_reserved_zero_6bits ou rserved_zero_6bits. O mapa de escalabilidade para todos os bits do elemento de sintaxe layer_id_plus1 especifica em conjunto a escalabilidade em uso na sequência de vídeo codificada. O valor real do identificador para cada um dos tipos de escalabilidade é sinalizado através daqueles bits correspondentes no campo layer_id_plus1 (nuh_reserved_zero_6bits) no cabeçalho de unidade de NAL. Quando scalability_map[i] é igual a 0 para todos os valores de i, a sequência de vídeo codificada está em conformidade com a especificação de base, dessa forma, o valor layer_id_plus1 de unidades de NAL é igual a 0 e não existem unidades de NAL que pertencem a uma visualização ou camada de otimização. O vps_layer_id[ i ] especifica o valor de layer_id da i-ésima camada à qual as seguintes informações de dependência de camada se aplicam. O num_direct_ref_layers[ i ] especifica o número de camadas que a i- ésima camada depende diretamente. O ref_layer_id[ i ][ j ] identifica a j-ésima camada que a i-ésima camada depende diretamente.
[00367] Os valores maiores de scalability_map[i] são interpretados conforme mostrado na Figura 18. O scalability_map [i] inclui as dimensões de escalabilidade de (0) nenhuma; (1) espacial; (2) qualidade; (3) profundidade; (4) visualização múltipla; (5) não especificado; (6) reservado; e (7) reservado.
[00368] Portanto, cada bit no cabeçalho de unidade de NAL é interpretado com base nos 3 bits no conjunto de parâmetros de vídeo conforme é a dimensão de escalabilidade (por exemplo, nenhuma, espacial, qualidade, profundidade, visualização múltipla, não especificado, reservado). Por exemplo, para sinalizar que todos os bits em layer_id_plus1 correspondem à escalabilidade espacial, os valores scalability_map na VPS podem ser como 001 001 001 001 001 001 para os 6 bits do cabeçalho de unidade de NAL. Além disso, por exemplo, para sinalizar que 3 bits em layer_id_plus1 correspondem à escalabilidade espacial e 3 bits correspondem à escalabilidade de qualidade, os valores scalability_map na VPS podem ser como 001 001 001 010 010 010 para os 6 bits do cabeçalho de unidade de NAL.
[00369] Com referência à Figura 19, outra modalidade inclui o conjunto de parâmetros de vídeo que sinaliza o número de dimensões de escalabilidade nos 6 bits do cabeçalho de unidade de NAL com o uso do num_scalability_dimensions_minus1. O num_scalability_dimensions_minus1 mais 1 indica o número de dimensões de escalabilidade sinalizado através dos elementos de sintaxe layer_id_plus1; nuh_reserved_zero_6bits e/ou reserved_zero_6bits. O scalability_map[i] tem a mesma semântica conforme descrito acima em relação à Figura 17. O num_bits_for_scalability_map[i] especifica o comprimento em bits para a I-ésima dimensão de escalabilidade. A soma de todos dentre o num_bits_for_scalability_map[i] para i=0, ..num_scalability_dimensions_minus1 é igual a seis (ou de outro modo igual ao número de bits usados para os elementos de sintaxe layer_id_plus1; vps_reserved_zero_6bits; max_num_layers_minus1; reserved_zero_6bits; nuh_reserved_zero_6bits).
[00370] Em relação à Figura 17 e Figura 19, outras variações podem ser usadas, se for desejado. Em uma modalidade, por exemplo, o scalability_map[i] pode ser sinalizado com u(4) (ou u(n) com n>3 ou n<3). Nesse caso, os valores maiores de scalability_map[i] podem ser especificados como reservados para fluxos de bits que estão em conformidade com um perfil particular da técnica de vídeo. Por exemplo, os valores de mapa de escalabilidade 6..15 podem ser especificados como “reservados” sob a sinalização de scalability_map[i] com u(4). Em uma outra modalidade, por exemplo, scalability_map[i] pode ser sinalizado com ue(v) ou algum outro esquema de codificação. Em uma outra modalidade, por exemplo, uma restrição pode ser especificada de modo que os valores scalability_map[i] sejam dispostos em ordem não decrescente monotônica (ou não crescente). Isso resulta em diversos campos de dimensão de escalabilidade no campo layer_id_plus1 em cabeçalho de unidade de NAL sendo contíguos.
[00371] Outra técnica existente para sinalizar a codificação de vídeo escalonável com o uso do elemento de sintaxe “layer_id_plus1” ou “nuh_reserved_zero_6bits” é mapear o layer_id_plus1 no cabeçalho de unidade de NAL em uma identificação de camada mediante a sinalização de uma tabela de pesquisa geral no conjunto de parâmetros de vídeo. Com referência à Figura 20, a técnica existente inclui um conjunto de parâmetros de vídeo que especifica o número de tipos de dimensão e identificações de dimensão para a i-ésima camada da tabela de pesquisa. Em particular, o vps_extension_byte_alignment_reserved_zero_bit é zero. O num_dimensions_minus1[i] mais 1 especifica o número de tipos de dimensão (dimension_type[i][j]) e identificadores de dimensão (dimension_id[i][j]) para a i-ésima camada. O dimension_type[i][j] especifica o j-ésimo tipo de dimensão de escalabilidade da i-ésima camada, o qual tem layer_id ou layer_id_plus1 igual a i, conforme especificado na Figura 31. Conforme ilustrado na Figura 21, as dimensões que são identificadas incluem (0) índice de ordem de visualização; (1) sinalizador de profundidade; (2) ID de dependência; (3) ID de qualidade; (4) a (15) reservado. O dimension_id[i][j] especifica o identificador do j-ésimo tipo de dimensão de escalabilidade da i-ésima camada, que quando não presente é inferida como sendo 0. O num_direct_ref_layers[i] especifica o número de camadas que a i-ésima camada depende diretamente. O ref_layer_id[i][j] identifica a j-ésima camada que a i-ésima camada depende diretamente. Infelizmente, a modalidade proposta ilustrada na Figura 20 resulta em uma tabela de pesquisa grande difícil de manipular.
[00372] Com referência à Figura 22, uma extensão de conjunto de parâmetros de vídeo modificada inclui uma máscara de escalabilidade que é usada em combinação com uma dimensão de escalabilidade. O scalability_mask sinaliza um padrão de 0 e 1 bits com cada bit que corresponde a uma dimensão de escalabilidade conforme indicado pela sintaxe de mapa de escalabilidade da Figura 23. Um valor de 1 para uma dimensão de escalabilidade particular indica que essa dimensão de escalabilidade está presente nessa camada (I-ésima camada). Um valor de 0 para uma dimensão de escalabilidade particular indica que essa dimensão de escalabilidade não está presente nessa camada (I-ésima camada). Por exemplo, um conjunto de bits de 00100000 se refere à escalabilidade de qualidade. O valor de identificador real da dimensão de escalabilidade particular que está presente é indicado pelo valor scalability_id[j] sinalizado. Os valores de num_scalability_types[i] são iguais à soma de número de bits no scalability_mask que tem valor de 1. Dessa forma [MATEMÁTICA 9]
Figure img0018
[00373] O scalability_id[j] indica o valor de identificador da j-ésima dimensão de escalabilidade para o tipo de valores de escalabilidade que são sinalizados pelo valor scalability_mask.
[00374] Com referência à Figura 24, uma modificação da Figura 22, inclui a máscara de escalabilidade que é sinalizada fora do loop. Isso resulta em uma máscara comum para cada identificação de camada. Com referência à Figura 25, nessa modificação, um conjunto de parâmetros de vídeo exemplificador correspondente pode incluir a identificação escalonável com a máscara de escalabilidade não sendo incluída. Nesse caso, o elemento de sintaxe scalable_id[j] tem alguma interpretação como o elemento de sintaxe scalability_id[j] na Figura 22.
[00375] Com referência à Figura 26, uma modificação da Figura 22, inclui a máscara de escalabilidade (scalability_mask) que é sinalizada fora do loop. Isso resulta em uma máscara comum para cada identificação de camada. O scalability_mask sinaliza um padrão de 0 e 1 bits com cada bit que corresponde a uma dimensão de escalabilidade conforme indicado pela sintaxe de mapa de escalabilidade da Figura 27. Um valor de 1 para uma dimensão de escalabilidade particular indica que essa dimensão de escalabilidade está presente nessa camada (i-ésima camada). Um valor de 0 para uma dimensão de escalabilidade particular indica que essa dimensão de escalabilidade não está presente nessa camada (i-ésima camada). Por exemplo, um conjunto de bits de 00100000 se refere à escalabilidade de qualidade. O valor de identificador real da dimensão de escalabilidade particular que está presente é indicado pelo valor scalability_id[j] sinalizado. Os valores de num_scalability_types[i] são iguais à soma de número de bits no scalability_mask que tem valor de 1. Dessa forma [MATEMÁTICA 10]
Figure img0019
Nesse caso, a variável scalability_id[j] pode ser, em vez disso, chamada de variável dimension_id[i][j]. dimension_id[i][j] especifica o identificador de escalabilidade da j-ésima dimensão de escalabilidade da i-ésima camada. Então, uma variável ScalabilityId[i][j] é derivada conforme exposto a seguir. [TABELA 7]
Figure img0020
[00376] Em que o ScalabilityId [i][k] sinaliza ID de dimensão para o tipo de escalabilidade correspondente conforme exposto a seguir. [TABELA 8]
Figure img0021
[00377] Em que DependencyId[i][1] é o ID de dependência para a dimensão de escalabilidade espacial para a i-ésima camada, QualityId[i][2] é o ID de qualidade para a dimensão de escalabilidade de qualidade para a i-ésima camada, depthFlag[i][3] é o sinalizador de profundidade / ID de profundidade para a dimensão de escalabilidade de profundidade para a i-ésima camada, e ViewId[i][4] é o ID de visualização para a dimensão de escalabilidade de visualização múltipla para a i-ésima camada.
[00378] Também na Figura 26, avc_base_codec_flag igual a 1 especifica que a camada-base está em conformidade com Rec. ITU-T H.264 | ISO/IEC 14496-10, e avc_base_codec_flag igual a 1 especifica HEVC. vps_nuh_layer_id_presnet_flag indica se a variável layer_id_in_nuh[i] que sinaliza o valor de layer_id no cabeçalho de unidade de NAL é sinalizada.
[00379] Em uma outra modalidade, um ou mais dentre os elementos de sintaxe scalability_mask[i], scalability_mask, scalability_id[j] podem ser sinalizados com o uso de número diferente de bits além de u(8). Por exemplo, poderiam ser sinalizados com u(16) (ou u(n) com n>8 ou n<8). Em uma outra modalidade, um ou mais dentre esses elementos de sintaxe poderiam ser sinalizados com ue(v). Em uma outra modalidade, o scalability_mask pode ser sinalizado no cabeçalho de unidade de NAL em elementos de sintaxe layer_id_plus1; vps_reserved_zero_6bits; max_num_layers_minus1; reserved_zero_6bits; e/ou nuh_reserved_zero_6bits. Em algumas modalidades, o sistema pode fazer isso apenas para unidades de NAL de VPS ou apenas para unidades de NAL não VPS, ou para todas as unidades de NAL. Em ainda outra modalidade, scalability_mask pode ser sinalizado por imagem em qualquer lugar no fluxo de bits. Por exemplo, pode ser sinalizado em cabeçalho de fatia, conjunto de parâmetros de imagem, conjunto de parâmetros de vídeo, ou qualquer outro conjunto de parâmetros ou qualquer outra parte normativa do fluxo de bits.
[00380] Deve-se observar que as Figuras 13, 15, 18, 20, 21, 22, 23 e descrição correspondente se referem a 6 bits, uma vez que o elemento de sintaxe nuh_reserved_zero_6bits ou layer_id_plus1 no cabeçalho de unidade de NAL da Figura 13 tem 6 bits. Contudo, toda a descrição acima pode ser adequadamente modificada se esse elemento de sintaxe usou um número diferente de bits além de 6 bits. Por exemplo, se esse elemento de sintaxe (nuh_reserved_zero_6bits ou layer_id_plus1) usou, em vez disso, 9 bits, então, na Figura 17 o valor de max_num_layer_minus1 bits será 9 e o scalability_map[i] será sinalizado para cada um dentre os 9 bits em vez de 6 bits.
[00381] Com referência à Figura 24, uma modificação da Figura 22 fornece sintaxe para sinalizar informações de dependência de camada. Novo elemento de sintaxe layer_dependency_information_pattern é definido.
[00382] layer_dependency_information_pattern sinaliza um padrão de 0 e 1 bits com o comprimento igual a vps_max_layers_minus1. Um valor de 0 para i-ésimo bit indica que a camada com layer_id (i+1) é uma camada independente. Um valor de 1 para i-ésimo bit indica que a camada com layer_id (i+1) é uma camada dependente que depende de uma ou mais dentre as outras camadas.
[00383] Os valores de NumDepLayers são iguais à soma de número de bits no layer_dependency_information_pattern que tem valor de 1. Dessa forma [MATEMÁTICA 11]
Figure img0022
[00384] Com referência à Figura 29, uma modificação da Figura 26 fornece sintaxe para sinalizar informações de dependência de camada. Novo elemento de sintaxe layer_dependency_flag[i] é definido. layer_dependency_flag[i] sinaliza se uma camada depende de outras camadas. Um valor de 0 para o sinalizador indica que a camada com layer_id i é uma camada independente. Um valor de 1 para i-ésimo bit indica que a camada com layer_id i é uma camada dependente.
[00385] Com referência à Figura 30, uma modificação da Figura 26 fornece sintaxe para sinalizar informações de dependência de camada. Novo elemento de sintaxe layer_dependency_map[i] é definido. layer_dependency_map[i] sinaliza um padrão de 0 e 1 bits com o comprimento igual a vps_max_layers_minus1. Um valor de 0 para k-ésimo bit de layer_dependency_map[i] indica que a camada i não depende da camada com layer_id (k+1). Um valor de 1 para k- ésimo bit de layer_dependency_map[i] indica que a camada i depende da camada com layer_id (k+1).
[00386] Com referência à Figura 31, uma modificação da Figura 26 fornece sintaxe para sinalizar informações de dependência de camada. Novo elemento de sintaxe layer_dependency_information_pattern é definido.
[00387] layer_dependency_information_pattern sinaliza um padrão de 0 e 1 bits com o comprimento igual a vps_max_layers_minus1. Um valor de 0 para i-ésimo bit indica que a camada com layer_id (i+1) é uma camada independente. Um valor de 1 para i-ésimo bit indica que a camada com layer_id (i+1) é uma camada dependente que depende de uma ou mais dentre as outras camadas. Os valores de NumDepLayers são iguais à soma de número de bits no layer_dependency_information_pattern que tem valor de 1. Dessa forma [MATEMÁTICA 12]
Figure img0023
[00388] layer_dependency_map[i] sinaliza um padrão de 0 e 1 bits com o comprimento igual a vps_max_layers_minus1. Um valor de 0 para k-ésimo bit de layer_dependency_map[i] indica que a camada i não depende da camada com layer_id (k+1). Um valor de 1 para k- ésimo bit de layer_dependency_map[i] indica que a camada i depende da camada com layer_id (k+1).
[00389] Com referência à Figura 32, uma modificação da Figura 26 fornece sintaxe para sinalizar informações de dependência de camada. A Figura 28 é uma sintaxe variante com base na sintaxe na Figura 27. Novo elemento de sintaxe layer_dependency_information_pattern é definido.
[00390] layer_dependency_information_pattern sinaliza um padrão de 0 e 1 bits com o comprimento igual a vps_max_layers_minus1. Um valor de 0 para i-ésimo bit indica que a camada com layer_id (i+1) é uma camada independente. Um valor de 1 para i-ésimo bit indica que a camada com layer_id (i+1) é uma camada dependente que depende de uma ou mais dentre as outras camadas.
[00391] Os valores de NumDepLayers são iguais à soma de número de bits no layer_dependency_information_pattern que tem valor de 1. Dessa forma [MATEMÁTICA 13]
Figure img0024
[00392] Os elementos de sintaxe num_direct_ref_layers[i] e ref_layer_id[i][j] são sinalizados apenas quando layer_dependency_information_pattern(i) tem um valor de 1. Em que layer_depdndency_information_pattern(i) é o i-ésimo bit do elemento de sintaxe layer_dependency_pattern.
[00393] Com referência à Figura 33, uma modificação da Figura 26 fornece sintaxe para sinalizar informações de dependência de camada. A Figura 29 é uma sintaxe variante com base na sintaxe na Figura 31. Novo elemento de sintaxe layer_dependency_information_pattern é definido.
[00394] layer_dependency_information_pattern sinaliza um padrão de 0 e 1 bits com o comprimento igual a vps_max_layers_minus1. Um valor de 0 para i-ésimo bit indica que a camada com layer_id (i+1) é uma camada independente. Um valor de 1 para i-ésimo bit indica que a camada com layer_id (i+1) é uma camada dependente que depende de uma ou mais dentre as outras camadas.
[00395] Os valores de NumDepLayers são iguais à soma de número de bits no layer_dependency_information_pattern que tem valor de 1. Dessa forma [MATEMÁTICA 14]
Figure img0025
[00396] layer_dependency_map[i] sinaliza um padrão de 0 e 1 bits com o comprimento igual a vps_max_layers_minus1. Um valor de 0 para k-ésimo bit de layer_dependency_map[i] indica que a camada i não depende da camada com layer_id (k+1). Um valor de 1 para k-ésimo bit de layer_dependency_map[i] indica que a camada i depende da camada com layer_id (k+1). Os elementos de sintaxe layer_dependency_map[i] são sinalizados apenas quando layer_dependency_information_pattern(i) tem um valor de 1. Em que layer_depdndency_information_pattern(i) é o i-ésimo bit do elemento de sintaxe layer_dependency_pattern.
[00397] Em uma outra modalidade, o elemento de sintaxe layer_dependency_information_pattern pode ser sinalizado como um conjunto de valores de sinalizador de 1 bit. Nesse caso, um total de valores de 1 bit vps_max_layers_minus1 será sinalizado como: [TABELA 9]
Figure img0026
[00398] Em uma outra modalidade, o elemento de sintaxe layer_dependency_map[i] pode ser sinalizado como um conjunto de valores de sinalizador de 1 bit. Nesse caso, um total de valores de 1 bit vps_max_layers_minus1 será sinalizado como: [TABELA 10]
Figure img0027
[00399] Em uma outra modalidade, um ou mais dentre os elementos de sintaxe layer_dependency_information_pattern, layer_dependency_map podem ser sinalizados com o uso de um número fixo conhecido de bits em vez de u(v). Por exemplo, poderiam ser sinalizados com o uso de u(64).
[00400] Em uma outra modalidade, um ou mais dentre os elementos de sintaxe layer_dependency_information_pattern, layer_dependency_map podem ser sinalizados com ue(v) ou algum outro esquema de codificação.
[00401] Em uma outra modalidade, os nomes de diversos elementos de sintaxe e sua semântica podem ser alterados adicionando-se um plus1 ou plus2 ou subtraindo-se um minus1 ou um minus2, em comparação com a sintaxe e semântica descrita.
[00402] Em ainda outra modalidade, diversos elementos de sintaxe, tais como layer_dependency_information_pattern, layer_dependency_map, layer_dependency_flag[i] etc. podem ser sinalizados por imagem em qualquer lugar no fluxo de bits. Por exemplo, podem ser sinalizados em cabeçalho de fatia, pps/ sps/ vps/ aps ou qualquer outro conjunto de parâmetros ou outra parte normativa do fluxo de bits.
[00403] Conforme anteriormente descrito, a codificação de vídeo escalonável é uma técnica de codificação de um fluxo de bits de vídeo que contém também um ou mais fluxos de bits de subconjunto. Um fluxo de bits de vídeo de subconjunto pode ser derivado deixando-se os pacotes a partir do vídeo maior para reduzir a largura de banda exigida para o fluxo de bits de subconjunto. O fluxo de bits de subconjunto pode representar uma resolução espacial inferior (tela menor), resolução temporal inferior (taxa de quadros menor) ou um sinal de vídeo de qualidade inferior. Por exemplo, um fluxo de bits de vídeo pode incluir 5 fluxos de bits de subconjunto, em que cada um dos fluxos de bits de subconjunto adiciona conteúdo adicional a um fluxo de bits de base. Hannuksela, et al., “Test Model for Scalable Extensions of High Efficiency Video Coding (HEVC)” JCTVC-L0453, Shanghai, outubro de 2012, está incorporado ao presente documento a título de referência, em sua totalidade. Chen, et al., “SHVC Draft Text 1,” JCTVC-L1008, Geneva, março de 2013, está incorporado ao presente documento a título de referência, em sua totalidade. Wang, et al., “AHG9: On VPS and SPS in HEVC 3DV and scalable extensions,” JCTVC-M0268, Incheon, abril de 2013, está incorporado ao presente documento a título de referência, em sua totalidade.
[00404] Conforme anteriormente descrito, a codificação de vídeo de visualização múltipla é uma técnica de codificação de um fluxo de bits de vídeo que contém também um ou mais fluxos de bits representativos de visualizações alternativas. Por exemplo, as visualizações múltiplas podem ser um par de visualizações para vídeo estereoscópico. Por exemplo, as visualizações múltiplas podem representar visualizações múltiplas da mesma cena a partir de pontos de vista diferentes. As visualizações múltiplas contêm geralmente uma grande quantidade de dependências estatísticas intervisualização, uma vez que as imagens são da mesma cena a partir de pontos de vista diferentes. Portanto, a predição intervisualização e temporal combinada pode alcançar a codificação de visualização múltipla eficaz. Por exemplo, um quadro pode ser previsto de maneira eficaz não apenas a partir de quadros relacionados de maneira temporal, mas também a partir dos quadros de pontos de vista vizinhos. Hannuksela, et al., “Common specification text for scalable and multi-view extensions,” JCTVC-L0452, Geneva, janeiro de 2013, está incorporado ao presente documento a título de referência, em sua totalidade. Tech, et. al. “MV-HEVC Draft Text 3 (ISO/IEC 23008-2:201x/PDAM2),” JCT3V-C1004_d3, Geneva, janeiro de 2013, está incorporado ao presente documento a título de referência, em sua totalidade.
[00405] Chen, et al., “SHVC Draft Text 1,” JCTVC-L1008, Geneva, janeiro de 2013; Hannuksela, et al. “Test Model for Scalable Extensions of High Efficiency Video Coding (HEVC),” JCTVC-L0453- spec-text, Shanghai, outubro de 2012; e Hannuksela, “Draft Text for Multiview Extension of High Efficiency Video Coding (HEVC),” JCTVC- L0452-spec-text-r1, Shanghai, outubro de 2012; cada um dos quais está incorporado ao presente documento a título de referência, em sua totalidade.JCTVC-L0452 e JCTVC-L0453 têm, cada um, o conceito de pontos de operação de saída. Esse foi posteriormente alterado para o conceito de conjuntos de camadas de saída em JCTVC-L1008. Para os elementos de sintaxe num_output_operation_points, output_op_point_index[] e output_layer_flag[][] são definidos para os pontos de operação de saída para JCTVC-L0453 e LCTVC-L0452, e modificados para num_output_layer_sets, output_layer_set_idx[] e output_layer_flag[][] em JCTVC-L1008. Em cada um dentre tais documentos, uma mensagem SEI de alteração de dependência de camada é definida. A mensagem SEI permite a sinalização das alterações de informações de dependência de camada a partir da unidade de acesso atual contendo a mensagem SEI.
[00406] Chen, et al., “SHVC Draft Text 1,” JCTVC-L1008, Geneva, janeiro de 2013; Hannuksela, et al. “Test Model for Scalable Extensions of High Efficiency Video Coding (HEVC),” JCTVC-L0453- spec-text, Shanghai, outubro de 2012; e Hannuksela, “Draft Text for Multiview Extension of High Efficiency Video Coding (HEVC),” JCTVC- L0452-spec-text-r1, Shanghai, outubro de 2012; cada um dos quais está incorporado ao presente documento a título de referência, em sua totalidade, cada um tem uma memória temporária de imagem decodificada (DPB) de ordem de saída que opera com base no uso de elementos de sintaxe sps_max_num_reorder_pics[HighestTid], sps_max_latency_increase_plus1[HighestTid] e sps_max_dec_pic_buffering[HighestTid] para a saída e remoção de imagens 0 a partir da DPB. Essas informações são sinalizadas no conjunto de parâmetros de vídeo para a camada-base, o qual fornece informações de memória temporária para o conteúdo de vídeo incluindo as camadas de otimização, se houver.
[00407] Com referência agora à Figura 34, outro exemplo de um conjunto de parâmetros de vídeo é ilustrado. Em particular, o conjunto de parâmetros de vídeo da Figura 34 inclui referência a uma extensão de conjunto de parâmetros de vídeo associada (vps_extension). A vps_extension pode ser sinalizada com o vps_extension_flag, o vps_extension2_flag e/ou o vps_extension_data_flag.
[00408] Com referência agora à Figura 35, outro exemplo de uma extensão de conjunto de parâmetros de vídeo é ilustrado. Em particular, a extensão de conjunto de parâmetros de vídeo da Figura 35 inclui referência a num_output_layer_sets, o qual define aquelas camadas de um conjunto de camadas de um fluxo de bits que podem ser emitidas para um visualizador pelo decodificador. num_output_layer_sets especifica o número de conjuntos de camadas para os quais as camadas de saída são especificadas com output_layer_set_index[ i ] e output_layer_flag[ lsIdx ][ j ]. Quando não presente, o valor de num_output_layer_sets é inferido como sendo igual a 0. Um conjunto de camadas que descreve camadas de saída é um conjunto de camadas de saída.
[00409] O output_layer_set_idx[ i ] especifica o índice lsIdx do conjunto de camadas para qual output_layer_flag[ lsIdx][ j ] está presente.
[00410] O output_layer_flag[ lsIdx ][ j ] igual a 1 especifica que a camada com nuh_layer_id igual a j é uma camada de saída alvo do lsIdx-ésimo conjunto de camadas. Um valor de output_layer_flag[ lsIdx ][ j ] igual a 0 especifica que a camada com nuh_layer_id igual a j não é uma camada de saída alvo do lsIdx-ésimo conjunto de camadas.
[00411] Com o num_output_layer_sets sendo definido na vps_extension da maneira descrita, o num_output_layer_sets pode ser atualizado enviando-se um novo conjunto de parâmetros de vídeo em conjunto com uma extensão de conjunto de parâmetros de vídeo correspondente. Infelizmente, o envio do novo conjunto de parâmetros de vídeo em conjunto com a extensão de conjunto de parâmetros de vídeo correspondente resulta em uma redução significativa na largura de banda disponível. Adicionalmente, um novo conjunto de parâmetros de vídeo poderia ser apenas ativado em determinados tipos de imagem, por exemplo, em tipos de imagem de ponto de acesso aleatório intra.
[00412] Como um exemplo, um fluxo de bits pode incluir uma camada-base 0 e quatro camadas de otimização, ou seja, camada de otimização 1, camada de otimização 2, camada de otimização 3 e camada de otimização 4. Um primeiro conjunto de camadas pode ser a camada-base 0 e a camada de otimização 1. Um segundo conjunto de camadas pode ser a camada-base 0, a camada de otimização 1 e a camada de otimização 2. Um terceiro conjunto de camadas pode ser a camada-base 0, a camada de otimização 1 e a camada de otimização 3. Um quarto conjunto de camadas pode ser a camada-base 0 e a camada de otimização 4. Os conjuntos de camadas de saída definem as camadas particulares de um conjunto de camadas que podem ser fornecidas como uma saída. Por exemplo, o conjunto de camadas de saída 1 pode ser camada 0 é uma saída e a camada 1 não é uma saída. Por exemplo, o conjunto de camadas de saída 2 pode ser a camada 0 é uma saída, a camada 1 é uma saída e a camada 2 não é saída. Por exemplo, o conjunto de camadas de saída 3 pode ser a camada 0 não é uma saída, a camada 1 não é uma saída e a camada 3 é saída. Por exemplo, o conjunto de camadas de saída 4 pode ser camada 0 é saída e a camada 4 não é saída. Um número limitado de camadas de saída é útil para acomodar capacidades de decodificação limitadas. Em alguns casos, é desejável desabilitar algumas dependências entre diferentes camadas para acomodar capacidades de decodificação de outras camadas e/ou decodificador. Quando algumas dependências de camada alteram, pode ser desejável, de modo semelhante, habilitar, desabilitar e/ou adicionar outras camadas como camadas de saída. Como um exemplo, a alteração de dependência de camada poderia exigir que menos camadas fossem decodificadas para decodificar uma camada alvo particular (por exemplo, uma visualização em MV-HEVC). Dessa forma, um decodificador poderia decodificar e emitir uma camada (por exemplo, uma visualização adicional) após uma alteração de dependência de camada que o mesmo não poderia anteriormente devido a sua limitação de hardware. Atualmente, não existe mecanismo para permitir a sinalização de uma alteração nos conjuntos de camadas de saída sem enviar um novo conjunto de parâmetros de vídeo.
[00413] Com referência à Figura 36, uma sintaxe de mensagem SEI pode ser usada para facilitar as alterações dos conjuntos de camadas de saída, ou seja, output_layer_sets_change(payloadSize). Essa mensagem SEI indica que as informações de conjuntos de camadas de saída se alteram começando com a unidade de acesso atual contendo a mensagem SEI e são interpretadas em relação ao conjunto de parâmetros de vídeo ativo. Mais de um conjunto de parâmetros de vídeo pode ser incluído com o fluxo de bits, e o conjunto de parâmetros de vídeo ativo é alterado, conforme desejado. Quando presente, a mensagem SEI de alteração de conjuntos de camadas de saída se aplica ao conjunto de unidades de acesso alvo que consiste na unidade de acesso atual e todas as unidades de acesso subsequentes, em ordem de decodificação, até a próxima mensagem SEI de alteração de conjuntos de camadas de saída ou ao final da sequência de vídeo codificada, qualquer um que for primeiro na ordem de decodificação. As mensagens SEI de alteração de conjuntos de camadas de saída não têm, de preferência, um efeito acumulativo.
[00414] O “active_vps_id” identifica um conjunto de parâmetros de vídeo ativo que contém as informações de conjuntos de camada de saída aos quais a alteração ou adição são aplicadas. O valor de active_vps_id é igual ao valor do video_parameter_set_id do conjunto de parâmetros de vídeo ativo para as unidades de NAL de VCL da unidade de acesso que contém a mensagem SEI.
[00415] O “num_changed_output_layer_sets” especifica o número de conjuntos de camada de saída alterados para os quais as camadas de saída são especificadas na seção de extensão vps do conjunto de parâmetros de vídeo ativo identificado através de active_vps_id. O valor de num_changed_output_layer_sets deve estar em uma faixa de 0 a num_output_layer_sets, inclusive. Quando não estiver presente, o valor de num_changed_output_layer_sets é inferido igual a 0.
[00416] O “changed_output_ layer_sets_idx_entry”[ i ] identifica a entrada de índice na lista de camada de saída estabelece as entradas na extensão vps identificada através de active_vps_id para o qual as alterações de output_layer_flag[ clsIdx ][ j ] se aplicam. O valor de changed_output_layer_set_idx_entry[ i ] deve estar em uma faixa de 0 a num_output_layer_sets, inclusive. O changed_output_layer_sets_idx_entry[ i ] não é igual a changed_output_layer_sets_idx_entry[ j ] para qualquer j não igual a i.
[00417] O “output_layer_flag”[ clsIdx ][ j ] igual a 1 especifica uma camada com nuh_layer_id igual a j é uma camada-alvo de saída do conjunto de camadas clsIdx-ésimo. Um valor de output_layer_flag[ clsIdx ][ j ] igual a 0 especifica que a camada com nuh_layer_id igual a j não é uma camada-alvo de saída do conjunto de camadas clsIdx- ésimo.
[00418] Quando output_layer_flag[ clsIdx ][ j ] não está presente para clsIdx em uma faixa de 0 a vps_num_layer_sets_minus1, inclusive e para j em uma faixa de 0 a 63, inclusive, output_layer_flag[ clsIdx ][ j ] é inferido igual a (j = = LayerSetLayerIdList[ clsIdx ][ NumLayersInIdList[ clsIdx ] - 1 ]).
[00419] O “num_addl_output_layer_sets” especifica o número de conjuntos de camada adicionais para os quais as camadas de saída são especificadas com addl_output_layer_set_idx[ i ] e output_layer_flag[ addllsIdx ][ j ]. Quando não estiver presente, o valor de num_addl_output_layer_sets é inferido igual a 0. O “addl_output_ layer_sets_idx”[ i ] identifica o índice addllsIdx do conjunto de camadas para o qual output_layer_flag[addllsIdx][j] está presente.
[00420] O “output_layer_flag”[ addllsIdx ][ j ] igual a 1 especifica que uma camada com nuh_layer_id igual a j é uma camada-alvo de saída do conjunto de camadas addllsIdx-ésimo. Um valor de output_layer_flag[ addllsIdx ][ j ] igual a 0 especifica que a camada com nuh_layer_id igual a j não é uma camada-alvo de saída do conjunto de camadas addllsIdx-ésimo.
[00421] Quando output_layer_flag[ addllsIdx ][ j ] não estiver presente para addllsIdx em uma faixa de 0 a vps_num_layer_sets_minus1, inclusive e para j em uma faixa de 0 a 63, inclusive, output_layer_flag[ addllsIdx ][ j ] for inferido igual a (j = = LayerSetLayerIdList[ addllsIdx ][ NumLayersInIdList[ addllsIdx ] - 1 ]).
[00422] Quando output_layer_flag[ addllsIdx ][ j ] não estiver presente para addllsIdx em uma faixa de 0 a vps_num_layer_sets_minus1, inclusive e para j em uma faixa de 0 a 63, inclusive, e quando output_layer_flag[ clsIdx ][ j ] não estiver presente para clsIdx em uma faixa de 0 a vps_num_layer_sets_minus1, inclusive e para j em uma faixa de 0 a 63, inclusive, output_layer_flag[ addllsIdx ][ j ] for inferido igual a (j = = LayerSetLayerIdList[ addllsIdx ][ NumLayersInIdList[ addllsIdx ] - 1 ]).
[00423] Quando output_layer_flag[ addllsIdx ][ j ] não estiver presente para addllsIdx em uma faixa de 0 a vps_num_layer_sets_minus1, inclusive e para j em uma faixa de 0 a 63, inclusive, e quando output_layer_flag[ clsIdx ][ j ] não estiver presente para clsIdx em uma faixa de 0 a vps_num_layer_sets_minus1, inclusive e para j em uma faixa de 0 a 63, inclusive, output_layer_flag[ clsIdx ][ j ] for inferido igual a (j = = LayerSetLayerIdList[ clsIdx ][ NumLayersInIdList[ clsIdx ] - 1 ]).
[00424] Uma lista de camadas-alvo de saída pode ser derivada, se desejado. A lista de identificador de camada-alvo de saída, targetOpLayerIdList, especifica a lista de valores de nuh_layer_id, na ordem ascendente de valores de nuh_layer_id que são camadas de saída para o conjunto de camadas de saída selecionado, pode ser derivada conforme o seguinte:
[00425] Para um conjunto de camadas de saída selecionado oLsIdx, uma lista de identificador de camada-alvo de saída targetOpLayerIdList é derivada como: [TABELA 11]
Figure img0028
[00426] Um conjunto de camadas-alvo de saída pode ser identificado através da lista de identificador de camada-alvo de saída associada targetOpLayerIdList.
[00427] O conjunto de camadas de saída selecionado oLsIdx está entre 0 e num_output_layer_sets se não houver mensagens SEI de alteração de conjuntos de camada de saída.
[00428] O conjunto de camadas de saída selecionado oLsIdx está entre 0 e num_output_layer_sets + num_addl_output_layer_sets se houver mensagens SEI de alteração de conjuntos de camada de saída presentes.
[00429] Uma lista-alvo de camadas decodificadas pode ser derivada, se desejado. A lista de identificador de camada-alvo decodificada, targetDLayerIdList, especifica a lista de valores de nuh_layer_id, que precisam ser decodificados para o conjunto de camadas de saída selecionado pode ser derivada conforme o seguinte:
[00430] Para um conjunto de camadas de saída selecionado oLsIdx, uma lista de identificador de camada-alvo de saída targetOpLayerIdList é derivada como: [TABELA 12]
Figure img0029
[00431] Uma lista de identificador de camada-alvo decodificada targetDLayerIdList pode ser derivada como: [TABELA 13]
Figure img0030
[00432] Em alguns casos, targetDLayerIdList final pode ser obtido se classificando o targetDLayerIdList acima na ordem ascendente de valores de nuh_layer_id.
[00433] Um conjunto de camadas-alvo decodificado é identificado através da lista de identificador de camada-alvo decodificada associada targetDLayerIdList. Em alguns casos o targetDLayerIdList pode ser o mesmo que a lista de identificador de camada TargetDecLayerIdList do JCTVC-L1008, que especifica a lista de valores de nuh_layer_id, na ordem ascendente de valores de nuh_layer_id, das unidades de NAL a ser decodificada:
[00434] O conjunto de camadas de saída selecionado oLsIdx está entre 0 e num_output_layer_sets se não houver mensagens SEI de alteração de conjuntos de camada de saída.
[00435] O conjunto de camadas de saída selecionado oLsIdx está entre 0 e num_output_layer_sets + num_addl_output_layer_sets se houver mensagens SEI de alteração de conjuntos de camada de saída presente.
[00436] Referindo-se à Figura 37, outra mensagem SEI de sintaxe pode ser usada para facilitar a alteração dos conjuntos de camada de saída, a saber, output_layer_sets_change(payloadSize).
[00437] O “num_deleted_output_layer_sets” especifica o número de conjuntos de camada de saída que são apagados e, desse modo, não estão mais presentes. O valor de num_deleted_output_layer_sets está em uma faixa de 0 a num_output_layer_sets, inclusive. Quando não estiver presente, o valor de num_deleted_output_layer_sets for inferido igual a 0.
[00438] O “deleted_output_layer_sets_idx_entry”[ i ] identifica a entrada de índice na lista das entradas de conjunto de camadas de saída que são identificadas para serem apagadas e, desse modo, não estare mais presentes. O valor de deleted_output_layer_set_idx_entry[ i ] deve estar em uma faixa de 0 a num_output_layer_sets, inclusive. O deleted_output_layer_sets_idx_entry[ i ] não é igual a deleted_output_layer_sets_idx_entry[ j ] para qualquer j não igual a i.
[00439] O “num_changed_output_layer_sets” especifica o número de conjuntos de camada de saída alterados para o qual as camadas de saída são especificadas na seção de extensão vps do conjunto de parâmetros de vídeo ativo identificado através de active_vps_id. O valor de num_changed_output_layer_sets deve estar em uma faixa de 0 a num_output_layer_sets - num_deleted_output_layer_sets, inclusive. Quando não estiver presente, o valor de num_changed_output_layer_sets será inferido igual a 0.
[00440] Uma lista de camadas-alvo de saída pode ser derivada, se desejado. A lista de identificador de camada-alvo de saída, targetOpLayerIdList, especifica a lista de valores de nuh_layer_id, na ordem ascendente de valores de nuh_layer_id que são camadas de saída para o conjunto de camadas de saída selecionado pode ser derivada conforme o seguinte:
[00441] Para um conjunto de camadas de saída selecionado oLsIdx, a lista de identificador de camada-alvo de saída targetOpLayerIdList é derivada como: [TABELA 14]
Figure img0031
[00442] Um conjunto de camadas-alvo de saída é identificado através da lista de identificador de camada-alvo de saída associada targetOpLayerIdList.
[00443] O conjunto de camadas de saída selecionado oLsIdx está entre 0 e num_output_layer_sets se não houver mensagens SEI de alteração de conjuntos de camada de saída.
[00444] O conjunto de camadas de saída selecionado oLsIdx está entre 0 e num_output_layer_sets - num_deleted_output_layer_sets + num_addl_output_layer_sets se houver mensagens SEI de alteração de conjuntos de camada de saída presentes.
[00445] Uma lista de camadas-alvo decodificadas pode ser derivada, se desejado.
[00446] Uma lista de identificador de camada-alvo decodificada, TargetDLayerIdList, especifica a lista de valores de nuh_layer_id, que precisam ser decodificados para o conjunto de camadas de saída selecionado, pode ser derivada conforme o seguinte:
[00447] Para um conjunto de camadas de saída selecionado oLsIdx, a lista de identificador de camada-alvo de saída targetOpLayerIdList pode ser derivada como: [TABELA 15]
Figure img0032
[00448] Então, uma lista de identificador de camada-alvo decodificada targetDLayerIdList pode ser derivada como: [TABELA 16]
Figure img0033
[00449] Em alguns casos o targetDLayerIdList final pode ser obtido se classificando o targetDLayerIdList acima na ordem ascendente de valores de nuh_layer_id.
[00450] Um conjunto de camadas-alvo decodificado é identificado através da lista de identificador de camada-alvo decodificada associada targetDLayerIdList. Em alguns casos o targetDLayerIdList pode ser o mesmo que a lista de identificador de camada TargetDecLayerIdList do JCTVC-L1008, que especifica a lista de valores de nuh_layer_id, na ordem ascendente de valores de nuh_layer_id, das unidades de NAL a serem decodificadas:
[00451] O conjunto de camadas de saída selecionado oLsIdx está entre 0 e num_output_layer_sets se não houver mensagens SEI de alteração de conjuntos de camada de saída.
[00452] O conjunto de camadas de saída selecionado oLsIdx está entre 0 e num_output_layer_sets - num_deleted_output_layer_sets + num_addl_output_layer_sets se houver mensagens SEI de alteração de conjuntos de camada de saída presentes.
[00453] A mensagem SEI de alteração de conjuntos de camadas de saída é definida de modo que seu efeito não seja acumulativo. Em outra modalidade, essa sintaxe e/ou semântica de mensagem podem ser definidas de modo que as mesmas sejam acumulativas. Nesse caso, o decodificador (e codificador) pode rastrear todos os valores anteriores de num_output_layer_sets (da extensão vps) e/ ou num_deleted_output_layer_sets e/ ou num_changed_output_layer_sets e/ ou num_addl_output_layer_sets e pode acumular essas alterações todas as vezes que uma nova mensagem SEI for sinalizada.
[00454] Em outra modalidade, um ou mais dentre os elementos de sintaxe podem ser sinalizados com o uso de um número fixo conhecido de bits em vez de u(v) em vez de ue(v). Por exemplo, os mesmos podem ser sinalizados com o uso de u(8) ou de u(16) ou de u(32) ou de u(64), etc..
[00455] Em outra modalidade, um ou mais dentre esses elementos de sintaxe podem ser sinalizados com ue(v) ou algum outro esquema de codificação ao invés do número fixo de bits tais como codificação de u(v).
[00456] Em outra modalidade, os nomes de diversos elementos de sintaxe e suas semânticas podem ser alterados através da adição de um plus1 ou plus2 ou através da subtração de um minus1 ou de um minus2 em comparação à sintaxe e à semântica descritas.
[00457] Em ainda outra modalidade, diversos elementos de sintaxe incluídos na mensagem SEI de conjuntos de camada de saída podem ser sinalizados por imagem ou em outra frequência em qualquer lugar no fluxo de bits. Por exemplo, os mesmos podem ser sinalizados em cabeçalho de segmento de fatia, no conjunto de parâmetros de adaptação de pps/ sps/ vps/ ou em qualquer outro conjunto de parâmetros ou outras partes normativas do fluxo de bits.
[00458] Em ainda outra modalidade, diversos elementos de sintaxe podem ser sinalizados por imagem ou em outra frequência em qualquer lugar no fluxo de bits. Por exemplo, os mesmos podem ser sinalizados no cabeçalho de segmento de fatia, no conjunto de parâmetros de adaptação de pps/ sps/ vps/ ou em qualquer outro conjunto de parâmetros ou outras partes normativas do fluxo de bits.
[00459] Em ainda outras modalidades, todos os conceitos definidos nessa invenção relacionados aos conjuntos de camada de saída podem ser aplicados aos pontos de operação de saída conforme definido em JCTVC-L0452 e em JCTVC-L0453 e/ ou aos pontos de operação conforme definido em JCTVC-L1003.
EXEMPLO 2
[00460] Outro exemplo da presente invenção é descrito abaixo. Observa-se que, por conveniência, aos membros que têm funções idênticas àquelas dos membros respectivos ilustrados no Primeiro Exemplo são dadas referências numéricas idênticas respectivas, e uma descrição desses membros é omitida aqui.
[00461] Determinou-se que a sinalização da memória temporária de imagem decodificada de ordem de saída (DPB) com base no uso de elementos de sintaxe sps_max_num_reorder_pics[HighestTid], sps_max_latency_increase_plus1[HighestTid] e sps_max_dec_pic_buffering[HighestTid] para a saída e remoção de imagens do DPB não conta para as características de memória temporária que podem resultar da codificação de vídeo escalonável, tal como quando números diferentes de camadas de otimização são usados, os quais têm a tendência de variar após o conteúdo foi codificado com base nas preferências de visualização de usuário e as camadas de otimização de múltiplas visualizações que têm a tendência de variar após o conteúdo ter sido codificado com base nas preferências de visualização de usuário. Também foi determinado que a sinalização da memória temporária de imagem decodificada de ordem de saída (DPB) com base no uso de elementos de sintaxe sps_max_num_reorder_pics[HighestTid], sps_max_latency_increase_plus1[HighestTid] e sps_max_dec_pic_buffering[HighestTid] para a saída e a remoção das imagens do DPB podem não ser ideias em termos do uso de memória do DPB quando o decodificador opera em um certo ponto de operação e/ ou realiza a saída do conjunto de camadas de saída selecionado. Para acomodar tais diferenças nas preferências de visualização, a memória temporária de imagem decodificada de ordem de saída (DPB) pode, adicional e/ou alternativamente, ter como base tais elementos de sintaxe que são incluídos juntos com a extensão de conjunto de parâmetros de vídeo (Extensão VPS) para fornecer os elementos de sintaxe para uma ou mais dentre as camadas de otimização. Dessa maneira, os elementos de sintaxe podem ser selecionados para serem especialmente adequados para o ponto de operação ou conjunto de camadas de saída particulares, que têm a tendência de corresponder às preferências de visualização de usuário.
[00462] Os parâmetros relacionados à memória temporária de DPB, vps_max_dec_pic_buffering_minus1, vps_max_num_reorder_pics, vps_max_latency_increase_plus1 podem ser sinalizados para subcamadas para o CVS para um ou mais pontos de operação e/ou para conjuntos de camada de saída em extensão VPS. Similarmente, o sistema pode definir o processo de operação e de bumping para um DPB de ordem de saída para usar os parâmetros de memória temporária de DPB sinalizados acima a partir da extensão VPS se os mesmos forem sinalizados para o ponto de operação sob teste ou para o conjunto de camadas de saída selecionado. Do contrário, os parâmetros de nível de SPS correspondentes do SPS ativo (quando currLayerId que corresponde a nuh_layer_id da imagem atual for igual a 0) ou de SPS de camada ativa que depende de layer_id da camada atual serão usados. Em alguns casos os parâmetros vps_max_dec_pic_buffering_minus1, vps_max_num_reorder_pics, vps_max_latency_increase_plus1 podem ser chamados de max_vps_dec_pic_buffering_minus1, max_vps_num_reorder_pics, max_vps_latency_increase_plus1.
[00463] Em outro caso, o parâmetro relacionado à memória temporária de DPB max_vps_dec_pic_buffering_minus1 é sinalizado para as subcamadas para o CVS por um ou mais conjuntos de camada de saída na extensão VPS. Os conjuntos de camada de saída podem corresponder aos pontos de operação. Os parâmetros relacionados à memória temporária de DPB max_vps_num_reorder_pics, max_vps_latency_increase_plus1 podem ser sinalizados para subcamadas para o CVS para cada camada em extensão VPS. Similarmente, o sistema pode definir o processo de operação e de bumping para um DPB de ordem de saída para usar os parâmetros de memória temporária de DPB sinalizados acima a partir da extensão VPS se os mesmos forem sinalizados para o ponto de operação sob teste ou para o conjunto de camadas de saída selecionado. De outra forma, os parâmetros de nível de SPS correspondentes do SPS ativo (quando currLayerId que corresponde a nuh_layer_id da imagem atual for igual a 0) ou do SPS de camada ativa que depende de layer_id da camada atual serão usados.
[00464] Referindo-se à Figura 38A, uma vps_extension modificada exemplificativa é ilustrada. A extensão vps modificada inclui uma sintaxe nova, a saber, num_op_dpb_info_parameters e operation_point_layer_set_idx[i]. Essa extensão vps modificada pode ser definida em termos do ponto de operação que é um fluxo de bits criado a partir de outro fluxo de bits através da operação de um processo de extração de subfluxo de bits com outro fluxo de bits, um TemporalId alvo mais alto e uma lista de identificador de camada-alvo como entradas.
[00465] O num_output_layer_sets especifica o número de conjuntos de camada para o qual as camadas de saída são especificadas com output_layer_set_index[ i ] e output_layer_flag[ lsIdx ][ j ]. Quando não estiver presente, o valor de num_output_layer_sets é inferido igual a 0. Um conjunto de camadas que descreve as camadas de saída é um conjunto de camadas de saída.
[00466] O output_layer_set_idx[ i ] especifica o índice lsIdx do conjunto de camadas para o qual output_layer_flag[ lsIdx][ j ] está presente.
[00467] O output_layer_flag[ lsIdx ][ j ] igual a 1 especifica que a camada com nuh_layer_id igual a j é uma camada-alvo de saída do conjunto de camadas lsIdx-ésimo. Um valor de output_layer_flag[ lsIdx ][ j ] igual a 0 especifica que a camada com nuh_layer_id igual a j não é uma camada-alvo de saída do conjunto de camadas lsIdx-ésimo.
[00468] O num_op_dpb_info_parameters especifica o número de estruturas de sintaxe de op_dpb_parameters() presentes na RBSP de extensão VPS, definida em termos do ponto de operação. Os decodificadores de num_op_dpb_info_parameters estão em uma faixa de 0 a vps_num_layer_sets_minus1, inclusive.
[00469] O operation_point_layer_set_idx[ i ] especifica o índice, na lista de conjuntos de camada definida através de pontos de operação para os quais a estrutura de sintaxe i-ésima op_dpb_info_parameters() na extensão VPS se aplica. O valor de operation_point_layer_set_idx[ i ] pode estar em uma faixa de 0 a vps_num_layer_sets_minus1, inclusive. Para a conformação de fluxo de bits o operation_point_layer_set_idx[ i ] não é igual a operation_point_layer_set_idx[ j ] para qualquer j não igual a i.
[00470] Referindo-se à Figura 39A, o op_dpb_info_parameters especifica vps_max_sub_layers_minus1[j], vps_sub_layer_ordering_info_present_flag[ j ], vps_max_dec_pic_buffering_minus1[ j ] [ k ], vps_max_num_reorder_pics[ j ] [ k], e vps_max_latency_increase_plus1[ j ] [ k ].
[00471] O vps_max_sub_layers_minus1[ j ] mais 1 indica quantas subcamadas são incluídas. O vps_max_sub_layers_minus1[ j ] mais 1 especifica o número máximo de subcamadas temporais que podem estar presentes no CVS para a camada com nuh_layer_id igual a j. O valor de vps_max_sub_layers_minus1[ j ] está em uma faixa de 0 a 6, inclusive.
[00472] O vps_sub_layer_ordering_info_present_flag[ j ] indica se sintaxe é para um conjunto que inclui todas as camadas ou para cada camada individual. O vps_sub_layer_ordering_info_present_flag[ j ] igual a 1 especifica que vps_max_dec_pic_buffering_minus1[ j ][ k ], vps_max_num_reorder_pics[ j ][ k ], e vps_max_latency_increase_plus1[ j ][ k ] estão presentes para a camada com nuh_layer_id igual a j para vps_max_sub_layers_minus1[ j ] + 1 subcamadas. O vps_sub_layer_ordering_info_present_flag[ j ] igual a 0 especifica os valores de vps_max_dec_pic_buffering_minus1[ j ][ vps_max_sub_layers_minus1[ j ] ], vps_max_num_reorder_pics[ j ][ vps_max_sub_layers_minus1[ j ] ], e vps_max_latency_increase_plus1[ j ][ vps_max_sub_layers_minus1[ j ] ] aplica todas as subcamadas para a camada com nuh_layer_id igual a j.
[00473] O vps_max_dec_pic_buffering_minus1[ j ][ k ] mais 1 especifica o tamanho máximo necessário da memória temporária de imagem decodificada para o CVS para a camada com nuh_layer_id igual a j nas unidades da memória temporária de armazenamento de imagem quando HighestTid é igual a k. O valor de vps_max_dec_pic_buffering_minus1[ j ][ k ] deve estar em uma faixa de 0 a MaxDpbSize - 1 (conforme especificado na subcláusula A.4), inclusive. Quando k for maior que 0, vps_max_dec_pic_buffering_minus1[ j ][ k ] será maior que ou igual a vps_max_dec_pic_buffering_minus1[ j ][ k - 1 ]. Quando vps_max_dec_pic_buffering_minus1[ j ][ k ] não estiver presente para k em uma faixa de 0 a vps_max_sub_layers_minus1[ j ] - 1, inclusive, devido ao vps_sub_layer_ordering_info_present_flag[ j ] ser igual à 0, o mesmo é inferido igual a vps_max_dec_pic_buffering_minus1[ j ] [ vps_max_sub_layers_minus1[ j ] ].
[00474] O vps_max_num_reorder_pics[ j ][ k ] indica o número máximo permitido de imagens que pode preceder qualquer imagem no CVS para a camada com nuh_layer_id igual a j em ordem de decodificação e segue que a imagem na ordem de saída quando HighestTid é igual a k. O valor de vps_max_num_reorder_pics[ j ][ k ] deve estar em uma faixa de 0 a vps_max_dec_pic_buffering_minus1[ j ][ k ], inclusive. Quando k for maior que 0, vps_max_num_reorder_pics[ j ][ k ] é maior que ou igual a vps_max_num_reorder_pics[ j ][ k- 1 ]. Quando vps_max_num_reorder_pics[ j ][ k ] não estiver presente para k em uma faixa de 0 a vps_max_sub_layers_minus1[ j ] - 1, inclusive, devido ao vps_sub_layer_ordering_info_present_flag[ j ] ser igual a 0, o mesmo é inferido igual a vps_max_num_reorder_pics[ j ][ vps_max_sub_layers_minus1[ j ] ].
[00475] O vps_max_latency_increase_plus1[ j ][ k ] não igual a 0 é usado para computar o valor de VpsMaxLatencyPictures[ j ][ k ], que especifica o número máximo de imagens que podem preceder qualquer imagem no CVS para a camada com nuh_layer_id igual a j em ordem de saída e segue a imagem na ordem de decodificação quando HighestTid for igual a k.
[00476] Quando vps_max_latency_increase_plus1[ j ][ k ] não for igual a 0, o valor de VpsMaxLatencyPictures[ j ][ k ] pode ser especificado conforme o seguinte:
[00477] VpsMaxLatencyPictures[ j ][ k ] = vps_max_num_reorder_pics[ j ][ k ] + vps_max_latency_increase_plus1[ j ][ k ] - 1
[00478] Quando vps_max_latency_increase_plus1[ j ][ k ] for igual a 0, nenhum limite correspondente é expresso.
[00479] O valor de vps_max_latency_increase_plus1[ j ][ k ] está em uma faixa de 0 a 232 - 2, inclusive. Quando vps_max_latency_increase_plus1[ j ][ k] não estiver presente para k em uma faixa de 0 a vps_max_sub_layers_minus1[ j ] - 1, inclusive, devido ao vps_sub_layer_ordering_info_present_flag[ j ] ser igual a 0, o mesmo é inferido igual a vps_max_latency_increase_plus1[ j ][ vps_max_sub_layers_minus1[ j ] ].
[00480] O “vps_max_sub_layers_minus1”[ id ] [ j ] mais 1 especifica o número máximo de subcamadas temporais que podem estar presentes no CVS para a camada com nuh_layer_id igual a j para o ponto de operação associado com a id de índice. O valor de vps_max_sub_layers_minus1[ id ] [ j ] deve estar em uma faixa de 0 a 6, inclusive.
[00481] O “vps_sub_layer_ordering_info_present_flag”[ id ] [ j ] igual a 1 especifica que vps_max_dec_pic_buffering_minus1[ id ][ j ][ k ], vps_max_num_reorder_pics[ id ][ j ][ k ], e vps_max_latency_increase_plus1[ id ][ j ][ k ] estão presentes para a camada com nuh_layer_id igual a j para o ponto de operação associada ao id de índice para vps_max_sub_layers_minus1[ id ][ j ] + 1 subcamadas.
[00482] O vps_sub_layer_ordering_info_present_flag[ id ][ j ] igual a 0 especifica que os valores de vps_max_dec_pic_buffering_minus1[ id ][ j ][ vps_max_sub_layers_minus1[ id ][ j ] ], vps_max_num_reorder_pics[ id ][ j ][ vps_max_sub_layers_minus1[ id ][ j ] ], e vps_max_latency_increase_plus1[ id ][ j ][ vps_max_sub_layers_minus1[ id ][ j ] ] se aplicam a todas as subcamadas para a camada com nuh_layer_id igual a j para o ponto de operação associado à id de índice.
[00483] O “vps_max_dec_pic_buffering_minus1”[ id ][ j ][ k ] mais 1 especifica o tamanho máximo necessário da memória temporária de imagem decodificada para o CVS para a camada com nuh_layer_id igual a j para o ponto de operação associada ao id de índice nas unidades de memória temporária de armazenamento de imagem quando HighestTid é igual a k. O valor de vps_max_dec_pic_buffering_minus1[ id ][ j ][ k ] deve estar em uma faixa de 0 a MaxDpbSize - 1 (conforme especificado na subcláusula A.4), inclusive. Quando o k for maior que 0, vps_max_dec_pic_buffering_minus1[ id ][ j ][ k ] será maior que ou igual a vps_max_dec_pic_buffering_minus1[ id ][ j ][ k - 1 ]. Quando vps_max_dec_pic_buffering_minus1[ id ][ j ][ k ] não estiver presente para k em uma faixa de 0 a vps_max_sub_layers_minus1[ id ][ j ] - 1, inclusive, devido ao vps_sub_layer_ordering_info_present_flag[ id ][ j ] ser igual a 0, o mesmo é inferido igual a vps_max_dec_pic_buffering_minus1[ id ][ j ][ vps_max_sub_layers_minus1[ id ][ j ] ].
[00484] O “vps_max_num_reorder_pics”[ id ][ j ][ k ] indica o número máximo permitido de imagens que pode preceder qualquer imagem no CVS para a camada com nuh_layer_id igual a j para o ponto de operação associado à id de índice na ordem de decodificação e segue que a imagem na ordem de saída quando HighestTid for igual a k. O valor de vps_max_num_reorder_pics[ id ][ j ][ k ] deve estar em uma faixa de 0 a vps_max_dec_pic_buffering_minus1[ id ][ j ][ k ], inclusive. Quando k for maior que 0, o vps_max_num_reorder_pics[ id ][ j ][ k ] será maior que ou igual a vps_max_num_reorder_pics[ id ][ j ][ k- 1 ]. Quando o vps_max_num_reorder_pics[ id ][ j ][ k ] não estiver presente para k em uma faixa de 0 a vps_max_sub_layers_minus1[ id ][ j ] - 1, inclusive, devido ao vps_sub_layer_ordering_info_present_flag[ id ][ j ] ser igual a 0, o mesmo é inferido igual a vps_max_num_reorder_pics[ id ][ j ][ vps_max_sub_layers_minus1[ id ][ j ] ].
[00485] O “vps_max_latency_increase_plus1’[ id ] [ j ][ k ] não igual a 0 é usado para computar o valor de VpsMaxLatencyPictures[ id ][ j ][ k ], que especifica o número máximo de imagens que pode preceder qualquer imagem no CVS para a camada com nuh_layer_id igual a j para o ponto de operação associado à id de índice na ordem de saída e segue que a imagem na ordem de decodificação quando HighestTid for igual a k.
[00486] Quando vps_max_latency_increase_plus1[ id ][ j ][ k ] não for igual a 0, o valor de VpsMaxLatencyPictures[ id ][ j ][ k ] é especificado conforme o seguinte:
[00487] VpsMaxLatencyPictures[ id ][ j ][ k ] = vps_max_num_reorder_pics[ id ][ j ][ k ] + vps_max_latency_increase_plus1[ id ][ j ][ k ] - 1
[00488] Quando vps_max_latency_increase_plus1[ id ][ j ][ k ] for igual a 0, nenhum limite correspondente é expresso.
[00489] O valor de vps_max_latency_increase_plus1[ id ][ j ][ k ] deve estar em uma faixa de 0 a 232 - 2, inclusive. Quando vps_max_latency_increase_plus1[ id ][ j ][ k] não estiver presente para k em uma faixa de 0 a vps_max_sub_layers_minus1[ id ][ j ] - 1, inclusive, devido ao vps_sub_layer_ordering_info_present_flag[ id ][ j ] ser igual a 0, o mesmo é inferido igual a vps_max_latency_increase_plus1[ id ][ j ][ vps_max_sub_layers_minus1[ id ][ j ] ].
[00490] Referindo-se à Figura 39 B, op_dpb_info_parameters pode ser modificado adicionalmente conforme mostrado para op_dpb_info_parameters(id,j). Nesse caso, sintaxe de extensão VPS pode ser ilustrada na Figura 38B. O decodificador hipotético de referência (HRD) é usado para verificar a conformidade de fluxo de bits e de decodificador. Dois tipos de fluxos de bits ou subconjuntos de fluxo de bits são submetidos à verificação de conformidade de HRD para Equipe Colaborativa Conjunta em Codificação de Vídeo (JCT- VC). O primeiro tipo, chamado de um Fluxo de bits Tipo I, é um fluxo de tipo de unidade de NAL que contém apenas as unidades de NAL de VCL e unidades de NAL com nal_unit_type igual a FD_NUT (unidades de NAL de dados de preenchimento) para todas as unidades de acesso no fluxo de bits. O segundo tipo, chamado de um Fluxo de bits Tipo II, que contém, além das unidades de NAL de VCL e unidades de NAL de dados de preenchimento para todas as unidades de acesso no fluxo de bits, pelo menos um (a) não unidades adicionais de NAL de VCL além de outras unidades de NAL de dados de preenchimento, e (b) todos elementos de sintaxe leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes e trailing_zero_8bits que formam um fluxo de bits do fluxo de tipo de unidade de NAL.
[00491] Os elementos de sintaxe de não unidades de NAL de VCL (ou seus valores padrões para parte dos elementos de sintaxe), exigidos para HRD, são especificados nas subcláusulas de semântica de cláusula 7, Anexos D e E.
[00492] Dois tipos de conjuntos de parâmetros de HRD (parâmetros de HRD de NAL e parâmetros de HRD de VCL) são usados. Os conjuntos de parâmetros de HRD são sinalização através da estrutura de sintaxe hrd_parameters(), que pode ser parte da estrutura de sintaxe SPS ou da estrutura de sintaxe VPS.
[00493] Múltiplos testes podem ser necessários para verificar a conformidade de um fluxo de bits, que é chamado como o fluxo de bits sob teste. Para cada teste, as seguintes etapas se aplicam na ordem listada:
[00494] (1) Um ponto de operação sob teste, chamado como TargetOp, é selecionado. A lista de identificador de camada OpLayerIdList de TargetOp consiste na lista de valores de nuh_layer_id, na ordem ascendente de valores de nuh_layer_id, presente no subconjunto de fluxo de bits associados ao TargetOp, que é um subconjunto dos valores de nuh_layer_id presente no fluxo de bits sob teste. O OpTid de TargetOp é igual ao TemporalId mais alto presente no subconjunto de fluxo de bits associados a TargetOp.
[00495] (2) TargetDecLayerIdList é definido igual a OpLayerIdList de TargetOp, HighestTid é definido igual a OpTid de TargetOp, e o processo de extração de subfluxo de bits conforme especificado na cláusula 10 é invocada com o fluxo de bits sob teste, HighestTid, e TargetDecLayerIdList como entradas, e a saída é atribuída para BitstreamToDecode.
[00496] (3) A estrutura de sintaxe hrd_parameters() e a estrutura de sintaxe sub_layer_hrd_parameters() aplicáveis ao TargetOp são selecionadas. Se TargetDecLayerIdList contiver todos os valores de nuh_layer_id presentes no fluxo de bits sob teste, a estrutura de sintaxe hrd_parameters() no SPS ativo (ou fornecido através de meios externos não especificados neste relatório descritivo) é selecionada. De outra forma, a estrutura de sintaxe hrd_parameters() no VPS ativo (ou fornecido através de alguns meios externos não especificados neste relatório descritivo) que se aplica ao TargetOp é selecionado. Dentro da estrutura de sintaxe hrd_parameters() selecionada, se BitstreamToDecode for um Fluxo de bits Tipo I, a estrutura de sintaxe sub_layer_hrd_parameters(HighestTid) que segue imediatamente a condição “if(vcl_hrd_parameters_present_flag)” é selecionada e a variável NalHrdModeFlag é definida igual a 0; De outra forma, (BitstreamToDecode é um fluxo de bits Tipo II), a estrutura de sintaxe sub_layer_hrd_parameters(HighestTid) que segue imediatamente ou uma condição “if(vcl_hrd_parameters_present_flag)” (nesse caso a variável NalHrdModeFlag é definida como igual a0) ou uma condição “if(nal_hrd_parameters_present_flag)” (nesse caso, a variável NalHrdModeFlag é definida como igual a1) é selecionada. Quando BitstreamToDecode for um Fluxo de bits Tipo II e NalHrdModeFlag forem iguais a 0, todas as não unidades de NAL de VCL exceto as unidades de NAL de dados de preenchimento, e todos os elementos de sintaxe leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes e trailing_zero_8bits que forma um fluxo de bits do fluxo de tipo de unidade de NAL (conforme especificado no Anexo B), quando presentes, são descartados do BitstreamToDecode, e o fluxo de bits resto é atribuído para BitstreamToDecode.
[00497] Em outro caso, múltiplos testes podem ser necessários para verificar a conformidade de um fluxo de bits, que é chamado como o fluxo de bits sob teste. Para cada teste, as seguintes etapas se aplicam na ordem listada:
[00498] (1) Um conjunto de camadas de saída sob teste, chamado como TargetOpLs é selecionado. O ponto de operação chamado em TargetOpLs através de output_layer_set_idx[] que identifica o ponto de operação sob teste. A lista de identificador de camada de saída OpLayerIdList de TargetOpLs consiste na lista de valores de nuh_layer_id, na ordem ascendente de valores de nuh_layer_id, presente no subconjunto de fluxo de bits associado ao TargetOp e TargetOpLs, que são um subconjunto dos valores de nuh_layer_id presentes no fluxo de bits sob teste. O OpTid de TargetOp é igual ao TemporalId mais alto presente no subconjunto de fluxo de bits associado ao TargetOp.
[00499] (2) TargetDecLayerIdList é definido igual à lista de identificador de camada-alvo decodificada targetDLayerIdList para o conjunto de camadas de saída selecionado TargetOpLs, HighestTid é definido igual à OpTid de TargetOp, e o processo de extração de subfluxo de bits conforme especificado na cláusula 10 é invocado com o fluxo de bits sob teste, HighestTid e TargetDecLayerIdList como entradas, e a saída é atribuída ao BitstreamToDecode.
[00500] (3) A estrutura de sintaxe hrd_parameters() e a estrutura de sintaxe sub_layer_hrd_parameters() aplicáveis ao TargetOp são selecionadas. Se TargetDecLayerIdList contiver todos os valores de nuh_layer_id presentes no fluxo de bits sob teste, a estrutura de sintaxe hrd_parameters() no SPS ativo (ou fornecido através de meios externos não especificados neste relatório descritivo) é selecionado. De outra forma, a estrutura de sintaxe hrd_parameters() no VPS ativo (ou fornecido através de alguns meios externos não especificados neste relatório descritivo) que se aplica ao TargetOp é selecionado. Dentro da estrutura de sintaxe hrd_parameters() selecionada, se BitstreamToDecode for um fluxo de bits Tipo I, a estrutura de sintaxe sub_layer_hrd_parameters(HighestTid) que segue imediatamente a condição “if(vcl_hrd_parameters_present_flag)” é selecionada e a variável NalHrdModeFlag é definida como igual a0; caso contrário (BitstreamToDecode é um fluxo de bits Tipo II), a estrutura de sintaxe sub_layer_hrd_parameters(HighestTid) que segue imediatamente ou a condição “if(vcl_hrd_parameters_present_flag)” (nesse caso, a variável NalHrdModeFlag é definida como igual a0) ou a condição “if(nal_hrd_parameters_present_flag)” (nesse caso, a variável NalHrdModeFlag é definida como igual a1) é selecionado. Quando BitstreamToDecode for um fluxo de bits Tipo II e NalHrdModeFlag são iguais a 0, todas as não unidades de NAL de VCL exceto as unidades de NAL de dados de preenchimento, e todos os elementos de sintaxe leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes e trailing_zero_8bits que formam um fluxo de bits do fluxo de tipo de unidade de NAL (conforme especificado no Anexo B), quando presentes, são descartados do BitstreamToDecode, e o fluxo de bits resto é atribuído ao BitstreamToDecode.
[00501] Um decodificador de conformação pode cumprir todas as exigências especificadas nesta subcláusula.
[00502] (1) Um decodificador que reivindica conformidade a um perfil, um escalão e um nível específicos deve ter a capacidade de decodificar com sucesso todos os fluxos de bits que estão em conformidade com as exigências de conformidade de fluxo de bits especificadas na subcláusula C.4, da maneira especificada no Anexo A, contanto que todos os VPSs, SPSs e PPSs referidos nas unidades de NAL de VCL e as mensagens SEI de período de memória temporária e tempo de imagem adequados sejam transportados para o decodificador, de maneira oportuna, ou através de nenhum fluxo de bits (através das não unidades de NAL de VCL) ou através dos meios externos não especificados neste relatório descritivo.
[00503] (2) Quando elementos de sintaxe de fluxo de bits que contêm aqueles que têm valores que são especificados conforme reservado e é especificado que os decodificadores devem ignorar os valores dos elementos de sintaxe ou das unidades de NAL que contêm os elementos de sintaxe que têm os valores reservados e o fluxo de bits está, de outra forma, em conformidade com este relatório descritivo, um decodificador de conformação deve decodificar o fluxo de bits da mesma maneira que decodificaria um fluxo de bits em conformação e deve ignorar os elementos de sintaxe ou as unidades de NAL que contêm os elementos de sintaxe que têm os valores reservados conforme especificado.
[00504] Há dois tipos de conformidade de um decodificador: conformidade de tempo de saída e conformidade de ordem de saída.
[00505] Para verificar a conformidade de um decodificador, o teste de conformidade de fluxos de bits para o perfil, escalão e nível reivindicados, conforme especificado na subcláusula C.4, são entregues através de um agendador de fluxo hipotético (HSS) tanto para HRD quanto para o decodificador sob teste (DUT). Todas as saídas de imagens decodificadas e cortadas através de HRD também devem ser emitidas através de DUT, cada saída de imagem decodificada e cortada através de DUT deve ser uma imagem com PicoutputFlag igual a 1, e, para cada tal saída de imagem decodificada e cortada através de DUT, os valores de todas as amostras que são emitidas devem ser igual aos valores das amostras produzidas através do processo de decodificação especificado.
[00506] Para conformidade de decodificador de tempo de saída, o HSS opera conforme descrito acima, com agendamentos de entrega selecionados apenas a partir do subconjunto dos valores de SchedSelIdx para o qual a taxa de bit e tamanho de CPB são restritos conforme especificado no Anexo A para o perfil, escalão e nível especificados, ou com agendamentos de entrega “interpolados” conforme especificado abaixo para os quais a taxa de bit e o tamanho de CPB são restritos conforme especificado no Anexo A. O mesmo agendamentos de entrega é usado tanto para HRD quanto para DUT.
[00507] Quando os parâmetros de HRD e as mensagens SEI de período de memória temporária estiverem presentes com cpb_cnt_minus1[ HighestTid ] maior que 0, o decodificador deve ter a capacidade de decodificar o fluxo de bits conforme entregado a partir da Operação de HSS com o uso de agendamentos de entrega “interpolados” especificados como tendo uma taxa de pico de bit r, tamanho de CPB c(r), e atraso de remoção de CPB de inicial [MATEMÁTICA 15]
Figure img0034
[00508] conforme segue: [TABELA 17]
Figure img0035
[00509] para qualquer SchedSelIdx > 0 e r de modo que BitRate[ SchedSelIdx - 1 ] <= r <= BitRate[ SchedSelIdx ] de modo que r e c(r) estejam dentro dos limites conforme especificado no Anexo A para a taxa máxima de bit e tamanho de memória temporária para o perfil, escalão e nível especificados. O InitCpbRemovalDelay[ SchedSelIdx ] pode ser diferente de um período de memória temporária para outro e ter que ser recalculado.
[00510] Para a conformidade de decodificador de tempo de saída, um HRD conforme descrito acima é usado e o tempo (em relação ao tempo de entrega do primeiro bit) de saída de imagem é o mesmo tanto para HRD quanto para DUT até um atraso fixo.
[00511] Para a conformidade de decodificador de ordem de saída, o seguinte se aplica:
[00512] (1) O HSS entrega o fluxo de bits BitstreamToDecode para p DUT “por demanda” a partir do DUT, que significa que o HSS entrega bits (em ordem de decodificação) apenas quando o DUT exige mais bits para proceder com seu processamento. Isso significa que para esse teste, a memória temporária de imagem codificada do DUT pode ser tão pequena quanto o tamanho da maior unidade de decodificação.
[00513] (2) Um HRD modificado conforme descrito abaixo é usado, e o HSS entrega o fluxo de bits para o HRD através de um dentre os agendamentos especificados no fluxo de bits BitstreamToDecode de modo que a taxa de bit e o tamanho de CPB sejam restritos conforme especificado no Anexo A. A ordem da saída de imagens deve ser a mesma tanto para HRD quanto para DUT.
[00514] (3) O tamanho de CPB de HRD é dado através de CpbSize[ SchedSelIdx ] conforme especificado na subcláusula E.2.3, em que SchedSelIdx e os parâmetros de HRD são selecionados conforme especificado na subcláusula C.1. O tamanho de DPB é dado através de sps_max_dec_pic_buffering_minus1[ HighestTid ] + 1 do SPS ativo (quando nuh_layer_id para a imagem decodificada atual for igual a 0) ou do SPS de camada ativa para o valor de nuh_layer_id do retrato decodificado atual. Em alguns casos, se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() estiverem presentes para o conjunto de camadas de saída selecionado. O tamanho de DPB é dado através de vps_max_dec_pic_buffering_minus1[ HighestTid ] quando currLayerId for igual a 0 ou for definido como vps_max_dec_pic_buffering_minus1[ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0, em que currLayerId é o nuh_layer_id do retrato decodificado atual. De outra forma, se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() não estiverem presentes para o ponto de operação sob teste, o tamanho de DPB é dado através de sps_max_dec_pic_buffering_minus1[ HighestTid ] + 1 do SPS ativo (quando nuh_layer_id para a imagem decodificada atual for igual a 0) ou do SPS de camada ativa para o valor de nuh_layer_id do retrato decodificado atual.
[00515] Em alguns casos, se os parâmetros de informações de conjuntos de camada de saída DPB oop_dpb_info_parameters() estão presentes para o conjunto de camadas de saída selecionado. O Tamanho de DPB é dado através de vps_max_dec_pic_buffering_minus1[ HighestTid ] quando currLayerId for igual a 0 ou for definido como vps_max_dec_pic_buffering_minus1[ CurrLayerId ][ HighestTid ] para o currLayerId para o conjunto de camadas de saída selecionado, em que currLayerId é o nuh_layer_id da imagem decodificada atual. De outra forma, se os parâmetros de informações de conjuntos de camada de saída DPB oop_dpb_info_parameters() não estão presentes para o conjunto de camadas de saída selecionado, o tamanho de DPB é dado através sps_max_dec_pic_buffering_minus1[ HighestTid ] + 1 dos SPS ativo (quando nuh_layer_id para a imagem decodificada atual é igual a 0) ou do SPS de camada ativa para o valor de nuh_layer_id da imagem decodificada atual.
[00516] Um tempo de remoção do CPB para o HRD é o tempo de chegada final de bit e a decodificação é imediata. A operação do DPB desse HRD é conforme descrito nas subcláusulas C.5.2 até C.5.2.3.
[00517] A memória temporária de imagem decodificada contém memória temporária de armazenamento de imagem. O número de memória temporária de armazenamento de imagem para nuh_layer_id igual a 0 é derivado a partir do SPS ativo. O número de memória temporária de armazenamento de imagem para cada valor não zero nuh_layer_id é derivado a partir do SPS de camada ativa para tal valor não zero nuh_layer_id. Cada uma das memórias temporárias de armazenamento de imagem contém uma imagem decodificada que é marcada como “usada para referência” ou é mantida para saída futura. O processo para saída e para remoção de imagens a partir de DPB conforme especificado na subcláusula F.13.5.2.2 é invocado, seguido pela invocação do processo para decodificação, para marcação, bumping adicional e para armazenamento de imagem conforme especificado na subcláusula F.13.5.2.3. O processo de “bumping” é especificado na subcláusula F.13.5.2.4 e é invocado conforme especificado nas subcláusulas F.13.5.2.2 e F.13.5.2.3.
[00518] A saída e a remoção de imagens de DPB antes da decodificação da imagem atual (porém, após analisar o cabeçalho de fatia da primeira fatia da imagem atual) acontecem instantaneamente quando a primeira unidade de decodificação da unidade de acesso que contém a imagem atual for removida do CPB e prossegue conforme o seguinte.
[00519] O processo de decodificação para RPS conforme especificado na subcláusula 8.3.2 é invocado.
[00520] (1) Se a imagem atual for uma imagem de IRAP com NoRasloutputFlag igual a 1 e com nuh_layer_id igual a 0 que não é uma imagem 0, as seguintes etapas ordenadas são aplicadas:
[00521] (A) A variável NooutputOfPriorPicsFlag é derivada para o decodificador sob teste conforme o seguinte:
[00522] (i) Se a imagem atual for uma Imagem de CRA, NooutputOfPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag).
[00523] (ii) De outra forma, se o valor de pic_width_in_luma_samples, de pic_height_in_luma_samples ou de sps_max_dec_pic_buffering_minus1[ HighestTid ] derivado a partir do SPS ativo for diferente do valor de pic_width_in_luma_samples, de pic_height_in_luma_samples, ou sps_max_dec_pic_buffering_minus1[ HighestTid ], respectivamente, derivado a partir do SPS ativo para a imagem precoce, NooutputOfPriorPicsFlag pode (porém, não deve) ser definido como 1 pelo decodificador sob teste, independente do valor de no_output_of_prior_pics_flag. Embora a definição de NooutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador sob teste é deixado definir NooutputOfPriorPicsFlag para 1 nesse caso.
[00524] (iii) De outra forma, NooutputOfPriorPicsFlag é definido igual para no_output_of_prior_pics_flag.
[00525] (B) O valor de NooutputOfPriorPicsFlag derivado para o decodificador sob teste é aplicado para o HRD conforme o seguinte:
[00526] (i) Se NooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem no DPB são esvaziadas sem saída das imagens que os mesmos contêm e a Integralidade de DPB é definida como igual a 0.
[00527] (ii) De outra forma, (NooutputOfPriorPicsFlag é igual a 0), todas as memórias temporárias de armazenamento de imagem que contém uma imagem que é marcada como “não necessária para saída “ e “não usada para referência” são esvaziadas (sem saída), e todas as memórias temporárias de armazenamento de imagem não vazias no DPB são esvaziados invocando-se repetidamente o processo de “bumping” especificado na subcláusula F.13.5.2.4, e a integralidade de DPB é definida como igual a 0.
[00528] (iii) De outra forma, (a imagem atual não é uma imagem de IRAP com NoRasloutputFlag igual a 1 e com nuh_layer_id igual a 0), todas as memórias temporárias de armazenamento de imagem que contém uma imagem que são marcados como “não necessária para a saída” e “não usada para referência” são esvaziados (sem saída). Para cada memória temporária de armazenamento de imagem que é esvaziado, a integralidade de DPB é diminuída por um. A variável currLayerId é definida igual para nuh_layer_id da imagem decodificada atual.
[00529] As variáveis MaxNumReorderPics[ TargetOp ][ currLayerId ][ HighestTid ], MaxLatencyIncreasePlus1[ TargetOp ][ currLayerId ][ HighestTid ], MaxLatencyPictures[ TargetOp][ currLayerId ][ HighestTid ], MaxDecPicBufferingMinus1[ TargetOp ] [ currLayerId ][ HighestTid ] são derivadas conforme o seguinte com base no ponto de operação atual sob teste:
[00530] (1) Se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() estiverem presentes para o ponto de operação sob teste TargetOp, MaxNumReorderPics[ TargetOp ] [ currLayerId ][HighestTid ] será definido como vps_max_num_reorder_pics[ HighestTid ] quando currLayerId for igual a 0 ou for definido como vps_max_num_reorder_pics[ TargetOp ][ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0. De outra forma, se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() não estiverem presentes para o ponto de operação sob teste, MaxNumReorderPics[ TargetOp ][ currLayerId ][ HighestTid ] é definido como sps_max_num_reorder_pics[ HighestTid ] do SPS ativo (quando currLayerId for igual a 0) ou do SPS de camada ativa para o valor de currLayerId.
[00531] (2) Se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() estiverem presentes para o ponto de operação sob teste TargetOp, MaxLatencyIncreasePlus1[ TargetOp ][ currLayerId ][ HighestTid ] será definido como vps_max_latency_increase_plus1[ HighestTid ] quando currLayerId for igual a 0 ou for definido como vps_max_latency_increase_plus1[ TargetOp ][ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0. Se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() estiverem presentes para o ponto de operação sob teste, MaxLatencyPictures[ TargetOp ][ currLayerId ][ HighestTid ] será definido como VpsMaxLatencyPictures[ HighestTid ] quando currLayerId for igual a 0 ou for definido como VpsMaxLatencyPictures[ TargetOp ][ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0. De outra forma, se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() não estiverem presentes para o ponto de operação sob teste, MaxLatencyIncreasePlus1[ TargetOp ][ currLayerId ][ HighestTid ] será definido como sps_max_latency_increase_plus1[ HighestTid ] do SPS ativo (quando currLayerId for igual a 0) ou o SPS de camada ativa para o valor de currLayerId e MaxLatencyPictures[ TargetOp ] [ currLayerId ][ HighestTid ] é definido como SpsMaxLatencyPictures[ HighestTid ] derivado do SPS ativo (quando currLayerId for igual a 0) ou do SPS de camada ativa para o valor de currLayerId.
[00532] (3) Se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() estiverem presentes para o ponto de operação sob teste selecionado TargetOp, MaxDecPicBufferingMinus1[ TargetOp ] [ currLayerId ][HighestTid ] será definido como vps_max_dec_pic_buffering_minus1[ HighestTid ] quando currLayerId for igual a 0 ou for definido como vps_max_dec_pic_buffering_minus1[ TargetOp ] [ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0. De outra forma, se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() não estiverem presentes para o ponto de operação sob teste, MaxDecPicBufferingMinus1[ TargetOp ][ currLayerId ][HighestTid ] será definido como sps_max_dec_pic_buffering_minus1[ HighestTid ] do SPS ativo (quando currLayerId for igual a 0) ou do SPS de camada ativa para o valor de currLayerId.
[00533] Quando uma ou mais das seguintes condições forem verdadeiras, o processo de “bumping” especificado na subcláusula F.13.5.2.4 será invocado repetidamente enquanto decremente adicionalmente a integralidade de DPB por um para cada memória temporária de armazenamento de imagem adicional que está vazia, até que nenhuma das seguintes condições seja verdadeira:
[00534] (1) O número de imagens com nuh_layer_id igual a currLayerId no DPB que são marcadas como “necessária para saída” for maior que MaxNumReorderPics[ TargetOp ] [CurrLayerId][HighestTid].
[00535] (2) Se MaxLatencyIncreasePlus1[ TargetOp ] [CurrLayerId][HighestTid] não for igual a 0 e houver pelo menos uma imagem com nuh_layer_id igual a currLayerId no DPB que seja marcada como “necessária para saída” para a qual é associada a variável PicLatencyCount[ currLayerId ] é maior que ou igual a MaxLatencyPictures[ TargetOp ] [CurrLayerId][HighestTid].
[00536] (3) O número de imagens com nuh_layer_id igual a currLayerId no DPB é maior que ou igual a MaxDecPicBuffering[ TargetOp ] [CurrLayerId][HighestTid].
[00537] Os processos especificados nesta subcláusula acontecem instantaneamente quando a última unidade de decodificação de unidade de acesso n que contém a imagem atual for removida do CPB.
[00538] A variável currLayerId é definida igual para nuh_layer_id da imagem decodificada atual.
[00539] Para cada imagem no DPB que for marcada como “necessária para saída” e que tiver um valor de nuh_layer_id igual a currLayerId, a variável PicLatencyCount[ currLayerId ] associada é definida igual para PicLatencyCount[ currLayerId ] + 1.
[00540] A imagem atual é considerada como decodificada após a última unidade de decodificação da imagem ser decodificada. A imagem decodificada atual é armazenada em uma memória temporária de armazenamento de imagem vazia no DPB e o seguinte se aplica:
[00541] (A) Se a imagem decodificada atual tiver PicoutputFlag igual a 1, a mesma será marcada como “necessária para saída” e sua variável PicLatencyCount[ currLayerId ] associada será definida igual a 0.
[00542] (B) De outra forma, (a imagem decodificada atual tem PicoutputFlag igual a 0), a mesma é marcada como “não necessária para a saída”.
[00543] A imagem decodificada atual é marcada como “usada para referência a curto prazo”.
[00544] Quando uma ou mais das seguintes forem verdadeiras, o processo de “bumping” especificado na subcláusula F.13.5.2.4 será invocado repetidamente até que nenhuma dentre as seguintes seja verdadeira.
[00545] (A) O número de imagens com nuh_layer_id igual a currLayerId no DPB que são marcadas como “necessária para saída” é maior que MaxNumReorderPics[ TargetOp ] [CurrLayerId][HighestTid].
[00546] (B) MaxLatencyIncreasePlus1[ TargetOp ] [CurrLayerId][HighestTid] não é igual a 0 e há pelo menos uma imagem com nuh_layer_id igual a currLayerId no DPB que é marcada como “necessária para saída” para a qual a variável PicLatencyCount[ currLayerId ] associada é maior que ou igual a MaxLatencyPictures[ TargetOp ] [CurrLayerId][HighestTid].
[00547] Em outros casos, as variáveis MaxNumReorderPics[ currLayerId ][ HighestTid ], MaxLatencyIncreasePlus1[ currLayerId ][ HighestTid ], MaxLatencyPictures[ currLayerId ][ HighestTid ], MaxDecPicBufferingMinus1[ currLayerId ][ HighestTid ] podem ser derivadas conforme o seguinte:
[00548] (1) Se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() estiverem presentes para o ponto de operação sob teste, MaxNumReorderPics[ currLayerId ][HighestTid ] será definido como vps_max_num_reorder_pics[ HighestTid ] quando currLayerId for igual a 0 ou for definido como vps_max_num_reorder_pics[ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0. De outra forma, se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() não estiverem presentes para o ponto de operação sob teste MaxNumReorderPics[ currLayerId ][ HighestTid ] será definido como sps_max_num_reorder_pics[ HighestTid ] do SPS ativo (quando currLayerId for igual a 0) ou do SPS de camada ativa para o valor de currLayerId.
[00549] (2) Se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() estiverem presentes para o ponto de operação sob teste, MaxLatencyIncreasePlus1[ currLayerId ][ HighestTid ] será definido como vps_max_latency_increase_plus1[ HighestTid ] quando currLayerId for igual a 0 ou for definido como vps_max_latency_increase_plus1[ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0. Se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() estiverem presentes para o ponto de operação sob teste, MaxLatencyPictures[ currLayerId ][ HighestTid ] será definido como VpsMaxLatencyPictures [ HighestTid ] quando currLayerId for igual a 0 ou for definido como VpsMaxLatencyPictures [ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0. De outra forma, se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() não estiverem presentes para o ponto de operação sob teste, MaxLatencyIncreasePlus1[ currLayerId ][ HighestTid ] será definido como sps_max_latency_increase_plus1[ HighestTid ] do SPS ativo (quando currLayerId for igual a 0) ou o SPS de camada ativa para o valor de currLayerId e o MaxLatencyPictures[ currLayerId ][ HighestTid ] será definido como SpsMaxLatencyPictures [ HighestTid ] derivado a partir do SPS ativo (quando currLayerId for igual a 0) ou do SPS de camada ativa para o valor de currLayerId.
[00550] (3) Se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() estiverem presentes para o ponto de operação sob teste selecionado, MaxDecPicBufferingMinus1[ currLayerId ][HighestTid ] será definido como vps_max_dec_pic_buffering_minus1[ HighestTid ] quando currLayerId for igual a 0 ou for definido como vps_max_dec_pic_buffering_minus1[ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0. De outra forma, se os parâmetros de informações de DPB de ponto de operação op_dpb_info_parameters() não estiverem presentes para o ponto de operação sob teste, MaxDecPicBufferingMinus1[ currLayerId ][HighestTid ] será definido como sps_max_dec_pic_buffering_minus1[ HighestTid ] do SPS ativo (quando currLayerId for igual a 0) ou do SPS de camada ativa para o valor de currLayerId.
[00551] Quando uma ou mais das seguintes forem verdadeiras, o processo de “bumping” especificado na subcláusula F.13.5.2.4 será invocado repetidamente enquanto decrementa adicionalmente a integralidade de DPB por um para cada memória temporária de armazenamento de imagem adicional que estiver vazia, até que nenhuma dentre as seguintes seja verdadeira:
[00552] (1) O número de imagens com nuh_layer_id igual a currLayerId no DPB que são marcadas como “necessária para saída” é maior que MaxNumReorderPics[CurrLayerId][HighestTid].
[00553] (2) Se MaxLatencyIncreasePlus1[CurrLayerId][HighestTid] não for igual a 0 e houver pelo menos uma imagem com nuh_layer_id igual a currLayerId no DPB que é marcado como “necessário para saída” para o qual a variável PicLatencyCount[ currLayerId ] associada é maior que ou igual a MaxLatencyPictures[CurrLayerId][HighestTid].
[00554] (3) O número de imagens com nuh_layer_id igual a currLayerId no DPB é maior que ou igual a MaxDecPicBuffering[CurrLayerId][HighestTid].
[00555] Os processos especificados nesta subcláusula acontecem instantaneamente quando a última unidade de decodificação de unidade de acesso n que contém a imagem atual for removida do CPB.
[00556] A variável currLayerId é definida como igual a nuh_layer_id da imagem decodificada atual.
[00557] Para cada imagem no DPB que for marcada como “necessária para saída” e que tiver um valor de nuh_layer_id igual a currLayerId, a variável PicLatencyCount[ currLayerId ] associada será definida como igual a PicLatencyCount[ currLayerId ] + 1.
[00558] A imagem atual é considerada como decodificada após a última unidade de decodificação da imagem ser decodificada. A imagem decodificada atual é armazenada em uma memória temporária de armazenamento de imagem vazia no DPB, e o seguinte se aplica:
[00559] (A) Se a imagem decodificada atual tiver PicoutputFlag igual a 1, a mesma é marcada como “necessária para saída” e sua variável PicLatencyCount[ currLayerId ] associada será definida como igual a 0.
[00560] (B) De outra forma, (a imagem decodificada atual tem PicoutputFlag igual a 0), a mesma é marcada como “não necessária para a saída”.
[00561] A imagem decodificada atual é marcada como “usada para referência a curto prazo”.
[00562] Quando uma ou mais das seguintes forem verdadeiras, o processo de “bumping” especificado na subcláusula F.13.5.2.4 será invocado repetidamente até que nenhuma dentre as seguintes seja verdadeira.
[00563] (A) O número de imagens com nuh_layer_id igual a currLayerId no DPB que são marcadas como “necessária para saída” é maior que MaxNumReorderPics[CurrLayerId][HighestTid].
[00564] (B) MaxLatencyIncreasePlus1[CurrLayerId][HighestTid] não é igual a 0 e há pelo menos uma imagem com nuh_layer_id igual a currLayerId no DPB que é marcada como “necessária para saída” para a qual a variável PicLatencyCount[ currLayerId ] associada é maior que ou igual a MaxLatencyPictures[CurrLayerId][HighestTid].
[00565] O processo de “bumping” consiste nas seguintes etapas ordenadas:
[00566] (A) As imagens que são primeiro para saída são selecionadas como aquelas que têm o menor valor de PicOrderCntVal de todas as imagens no DPB marcadas como “necessária para saída”.
[00567] (B) Essas imagens são cortadas, com o uso da janela de corte de conformidade especificada no SPS ativo para uma imagem com nuh_layer_id igual a 0 ou no SPS de camada ativa para um valor de nuh_layer_id igual aquele da imagem, as imagens cortadas são emitidas na ordem ascendente de nuh_layer_id, e as imagens são marcadas como “não necessária para a saída”.
[00568] (C) Cada memória temporária de armazenamento de imagem que contém uma imagem marcada como “não usada para referência” e que incluem uma das imagens que foi cortada e emitida como vazia.
[00569] A extensão VPS pode ter modificações adicionais, se desejado.
[00570] Referindo-se à Figura 40, uma modificação adicional pode incluir os Parâmetros de DPB que são enviados na extensão VPS para os conjuntos de camada de saída em vez de para os pontos de operação, em que oops_dpb_info_parameters(j) são ilustrados na Figura 41.
[00571] O num_dpb_info_parameters especifica o número de estruturas de sintaxe oop_dpb_parameters() presentes no RBSP de extensão VPS. Os decodificadores num_dpb_info_parameters devem estar em uma faixa de 0 a num_output_layer_sets, inclusive.
[00572] O output_point_layer_set_idx[ i ] especifica o índice, na lista de conjuntos de camada-alvo de saída para os quais a estrutura de sintaxe i-ésima oop_dpb_info_parameters() na extensão VPS se aplica.
[00573] O valor de output_point_layer_set_idx[ i ] deve estar em uma faixa de 0 a num_output_layer_sets, inclusive. É uma exigência da conformidade de fluxo de bits que output_point_layer_set_idx [ i ] não seja igual a output_point_layer_set_idx [ j ] para qualquer j não igual a i.
[00574] Referindo-se à Figura 42, o oop_dpb_info_parameters(c) pode ser modificado adicionalmente, em que a sintaxe na extensão VPS pode ser ilustrada na Figura 43.
[00575] Referindo-se à Figura 44, o oop_dpb_info_parameters(c) pode ser modificado adicionalmente, em que a sintaxe na extensão VPS pode ser ilustrada na Figura 45 ou Figura 46.
[00576] Uma alternativa exemplificativa para a sintaxe na extensão VPS é tal [TABELA 18]
Figure img0036
[00577] pode ser alterada para [TABELA 19]
Figure img0037
[00578] O vps_max_layer_id especifica o valor máximo permitido de nuh_layer_id de todas as unidades de NAL no CVS. O vps_max_layers_minus1, especifica o número máximo de camadas que podem estar presentes no CVS, em que uma camada pode, por exemplo, ser uma camada escalonável espacial, uma camada escalonável de qualidade, uma vista de textura ou uma vista de profundidade.
[00579] Outra alternativa exemplificativa para a sintaxe na extensão VPS é tal que [TABELA 20]
Figure img0038
[00580] pode ser alterada para [TABELA 21]
Figure img0039
[00581] em que numoutputLayers para o índice de conjunto de camadas de saída selecionado oplsIdx é derivado como: [TABELA 22]
Figure img0040
[00582] Outra alternativa exemplificativa para a sintaxe na extensão VPS é tal que [TABELA 23]
Figure img0041
[00583] pode ser alterada para [TABELA 24]
Figure img0042
[00584] em que numoutputLayers para oplsIdx selecionado é derivado como: [TABELA 25]
Figure img0043
[00585] Então, uma lista de identificador de camada-alvo decodificada targetDLayerIdList e numDecodificadaLayers para o oplsIdx selecionado é derivado como: [TABELA 26]
Figure img0044
[00586] Em uma modalidade, uma sinalização adicional pode ser sinalizada para indicar se oop_dpb_information_parameters são sinalizados para a camada particular conforme o seguinte: [TABELA 27]
Figure img0045
[00587] O vps_layer_info_present_flag[j] igual a 1 especifica que oop_dpb_info_parameters estão presentes para a camada j-ésima para o conjunto de camadas de saída particular. vps_layer_info_present_flag[j] igual a 0 especifica que oop_dpb_info_parameters não estão presentes para a camada j-ésima para o conjunto de camadas de saída particular.
[00588] Em outra modalidade, os decodificadores num_dpb_info_parameters devem estar em uma faixa de 0 a 1024, inclusive. Em ainda outra modalidade, um número fixo diferente pode ser usado no lugar de 1024.
[00589] Em uma modalidade alternativa, output_point_layer_set_idx[ i ] é em uma faixa de 0 a 1023, inclusive.
[00590] Referindo-se à Figura 47, outra extensão vps modificada e layer_dpb_info(i) pode ser usada se os parâmetros de DPB forem enviados na extensão VPS para cada camada independente dos conjuntos de camada de saída e dos pontos de operação.
[00591] Referindo-se à Figura 48, um layer_dpb_info(i) modificado pode ser usado onde os elementos de sintaxe vps_max_sub_layer_minus1 sinalizados a partir do VPS forem usados para todas as camadas e não forem sinalizados separadamente em oop_dpb_info_parameters(id) / op_dpb_info_parameters(id).
[00592] Referindo-se à Figura 49A e 49B, uma vps_extension modificada exemplificativa é ilustrada. A extensão vps modificada inclui sintaxe nova, a saber, max_sub_layers_vps_predict_flag[i], max_sub_layers_vps_minus1[i] num_dpb_info_parameters, output_point_layer_set_idx[i], oop_dpb_maxbuffering_parameters(i), e layer_dpb_info_parameters(i). O num_output_layer_sets especifica o número dos conjuntos de camada para o qual as camadas de saída são especificadas com output_layer_set_index[ i ] e output_layer_flag[ lsIdx ][ j ]. Quando não estiver presente, o valor de num_output_layer_sets é inferido igual a 0. Um conjunto de camadas que descreve camadas de saída é um conjunto de camadas de saída.
[00593] “max_sub_layers_vps_predict_flag”[ i ] igual a 1 especifica que max_sub_layers_vps_minus1[ i ] é inferido igual a max_sub_layers_vps_minus1[ i - 1 ].
[00594] max_sub_layers_vps_predict_flag[ i ] igual a 0 especifica que max_sub_layers_vps_minus1[ i ] é sinalizado explicitamente. O valor de max_sub_layers_vps_predict_flag[ 0 ] é inferido igual a 0.
[00595] “max_sub_layers_vps_minus1 ”[ i ] mais 1 especifica o número máximo de subcamadas temporais que podem estar presentes no CVS para camada com nuh_layer_id igual a i. O valor de max_vps_sub_layers_vps_minus1[ i ] deve estar em uma faixa de 0 a 6, inclusive. Em alguns casos max_sub_layers_vps_minus1[i] é usado para a inferência dos Elementos de sintaxe de SPS sps_max_sub_layers_minus1. Quando max_sub_layers_vps_predict_flag[ i ] for igual a 1, max_sub_layers_vps_minus1[ i ] será inferido igual a max_sub_layers_vps_minus1[ i - 1 ]. O valor de max_sub_layers_vps_minus1[ 0 ] é inferido igual a vps_max_sub_layers_minus1.
[00596] A variável MaxSubLayers[ setId ] para setId em uma faixa de 0 a num_dpb_info_parameters- 1, inclusive, é derivada conforme o seguinte: [TABELA 28]
Figure img0046
[00597] “num_dpb_info_parameters” especifica o número de estruturas de sintaxe oop_dpb_maxbuffering_parameters(i) presentes na RBSP de extensão VPS. Os decodificadores num_dpb_info_parameters devem estar em uma faixa de 0 a numoutputLayerSets, inclusive.
[00598] “output_point_layer_set_idx”[ i ] especifica o índice, na lista de conjuntos de camada de saída à qual a estrutura de sintaxe i-ésima oop_dpb_maxbuffering_parameters(i) na extensão VPS se aplica.
[00599] O valor de output_point_layer_set_idx[ i ] deve estar em uma faixa de 0 a numoutputLayerSets, inclusive. É uma exigência da conformidade de fluxo de bits que
[00600] output_point_layer_set_idx [ i ] não seja igual a output_point_layer_set_idx [ j ] para qualquer j não igual a i.
[00601] Referindo-se à Figura 50, o oop_dpb_maxbuffering_parameters especifica “sub_layer_vps_buf_info_present_flag”[ i ], “max_vps_dec_pic_buffering_minus1”[ i ][ j ].
[00602] “sub_layer_vps_buf_info_present_flag”[ i ] igual a 1 especifica que max_vps_dec_pic_buffering_minus1[ i ][ j ] estão presentes para Subcamadas MaxSubLayers[ i ]. sub_layer_vps_buf_info_present_flag[ i ] igual a 0 especifica que os valores de max_vps_dec_pic_buffering_minus1[ i ][ MaxSubLayers[ i ] - 1 ] se aplicam a todas as subcamadas.
[00603] “max_vps_dec_pic_buffering_minus1”[ i ][ j ] mais 1 especifica o tamanho máximo necessário da memória temporária de imagem decodificada para o CVS para a camada com nuh_layer_id igual a highestLayerId no conjunto de camadas de saída associado ao índice i nas unidades de memória temporária de armazenamento de imagem quando HighestTid for igual a j. O valor de max_vps_dec_pic_buffering_minus1[ i ][ j ] deve estar em uma faixa de 0 a MaxDpbSize - 1 (conforme especificado na subcláusula A.4), inclusive. Quando j for maior que 0, max_vps_dec_pic_buffering_minus1[ i ][ j ] será maior que ou igual a max_vps_dec_pic_buffering_minus1[ i ][ j - 1 ] Em alguns casos max_vps_dec_pic_buffering_minus1[ i ][ j ] é usado para inferência dos valores dos elementos de sintaxe de SPS sps_max_dec_pic_buffering_minus1[ j ]. Quando max_vps_dec_pic_buffering_minus1[ i ][ j ] não estiver presente para i em uma faixa de 0 a MaxSubLayers[ i ] - 2, inclusive, devido ao sub_layer_vps_buf_info_present_flag[ i ] ser igual a 0, o mesmo é inferido igual a max_vps_dec_pic_buffering_minus1[ i ][ MaxSubLayers[ i ] - 1].
[00604] O valor de max_vps_dec_pic_buffering_minus1[ 0 ][ j ] para cada valor de j é inferido igual a vps_max_dec_pic_buffering_minus1[ j ].
[00605] Referindo-se à Figura 51, o layer_dpb_info_parameters especifica “sub_layer_vps_ordering_info_present_flag”[ i ], max_vps_num_reorder_pics[ i ][ j ], “max_vps_latency_increase_plus1”[ i ][ j ].
[00606] “sub_layer_vps_ordering_info_present_flag”[ i ] igual a 1 especifica que max_vps_num_reorder_pics[ i ][ j ] e max_vps_latency_increase_plus1[ i ][ j ] estão presentes para are subcamadas max_sub_layers_vps_minus1 + 1.
[00607] sub_layer_vps_ordering_info_present_flag[ i ] igual a 0 especifica que os valores de max_vps_num_reorder_pics[ i ][ vps_max_sub_layers_minus1 ] e max_vps_latency_increase_plus1[ i ][ max_sub_layers_vps_minus1 ] se aplica a todas as subcamadas.
[00608] “max_vps_num_reorder_pics”[ i ][ j ] indica o número máximo permitido de imagens que pode preceder qualquer imagem no CVS para a camada com nuh_layer_id igual a i na ordem de decodificação e segue que a imagem na ordem de saída quando o HighestTid é igual a j. O valor de max_vps_num_reorder_pics[ i ][ j ] deve estar em uma faixa de 0 a max_vps_dec_pic_buffering_minus1[ i ][ j ], inclusive. Quando j for maior que 0, max_vps_num_reorder_pics[ i ][ j ] será maior que ou igual a max_vps_num_reorder_pics[ i ][ j- 1 ] Em alguns casos o max_vps_num_reorder_pics[ i ][ j ] é usado para inferência dos valores dos elementos de sintaxe de SPS sps_max_num_reorder_pics[ j ]. Quando max_vps_num_reorder_pics[ i ][ j ] não estiver presente para i em uma faixa de 0 a max_sub_layers_vps_minus1[ i ] - 1, inclusive, devido ao sub_layer_vps_ordering_info_present_flag[ i ] ser igual a 0, o mesmo é inferido igual a max_vps_num_reorder_pics[ i ][ max_sub_layers_vps_minus1[ i ] ].
[00609] max_vps_latency_increase_plus1[ i ][ j ] não igual a 0 é usado para computar o valor de VpsMaxLatencyPictures[ i ][ j ], que especifica o número máximo de imagens que pode preceder qualquer imagem no CVS para a camada com nuh_layer_id igual a i em ordem de saída e segue que a imagem na ordem de decodificação quando HighestTid for igual a j.
[00610] Quando max_vps_latency_increase_plus1[ i ][ j ] não for igual a 0, o valor de VpsMaxLatencyPictures[ i ][ j ] é especificado conforme o seguinte:
[00611] VpsMaxLatencyPictures[ i ][ j ] = max_vps_num_reorder_pics[ i ][ j ] + max_vps_latency_increase_plus1[ i ][ j ] - 1
[00612] Quando max_vps_latency_increase_plus1[ i ][ j ] for igual a 0, nenhum limite correspondente é expresso.
[00613] O valor de max_vps_latency_increase_plus1[ j ][ k ] deve estar em uma faixa de 0 a 232 - 2, inclusive. Em alguns casos max_vps_latency_increase_plus1[ i ][ j ] é usado para inferência dos valores dos elementos de sintaxe de SPS sps_max_latency_increase_plus1[ j ]. Quando max_vps_latency_increase_plus1[ i ][ j ] não estiver presente para i em uma faixa de 0 a max_sub_layers_vps_minus1[ i ] - 1, inclusive, devido ao sub_layer_vps_ordering_info_present_flag[ i ] ser igual a 0, o mesmo é inferido igual a max_vps_latency_increase_plus1[ i ][ max_sub_layers_vps_minus1[ i ] ].
[00614] Referindo-se à Figura 52, uma vps_extension modificada exemplificativa é ilustrada. A extensão vps modificada inclui modificação adicional da sintaxe na Figura 49 com sintaxe nova, a saber, sub_layer_vps_buf_info_predict_flag[ i ], sub_layer_vps_ordering_info_predict_flag[ i ] que são sinalizados condicionalmente. sub_layer_vps_buf_info_predict_flag[ i ] igual a 1 especifica que max_vps_dec_pic_buffering_minus1[ i ][ j ] é inferido igual a max_vps_dec_pic_buffering_minus1[ i - 1 ][ j ] para cada valor de j.
[00615] sub_layer_vps_buf_info_predict_flag[ i ] igual a 0 especifica que max_vps_dec_pic_buffering_minus1[ i ][ j ] para pelo menos um valor de j é sinalizado explicitamente. sub_layer_vps_buf_info_predict_flag[ 0 ] é inferido igual a 0. Quando não estiver presente, sub_layer_vps_buf_info_predict_flag[ i ] será inferido igual a 0.
[00616] sub_layer_vps_ordering_info_predict_flag[ i ] igual a 1 especifica que os elementos de sintaxe sub_layer_vps_ordering_info_present_flag[ i ], max_vps_num_reorder_pics[ i ][ j ], e max_vps_latency_increase_plus1[ i ][ j ] serão inferidos como iguais a sub_layer_vps_ordering_info_present_flag[ i - 1 ], max_vps_num_reorder_pics[ i - 1 ][ j ], e max_vps_latency_increase_plus1[ i 1 ][ j ], respectivamente. sub_layer_vps_ordering_info_predict_flag[ i ] igual a 0 indica que os elementos de sintaxe sub_layer_vps_ordering_info_present_flag[ i ], max_vps_num_reorder_pics[ i ][ j ], e max_vps_latency_increase_plus1[ i ][ j ] são sinalizados explicitamente. Quando não estiver presente, o valor de sub_layer_vps_ordering_info_predict_flag[ i ] será definido igual a 0.
[00617] Outros elementos de sintaxe e seus significados semânticos para a Figura 52 são os mesmos que aqueles para a figura 49.
[00618] Referindo-se à Figura 53, uma vps_extension modificada exemplificativa é ilustrada. A extensão vps modificada inclui modificação adicional da sintaxe na Figura 49. Na Figura 53, oop_dpb_maxbuffering_parameters(i,j) são sinalizados para cada camada j para o conjunto de camadas de saída particular i em comparação à Figura 49 que sinaliza um conjunto único de parâmetros oop_dpb_maxbuffering_parameters(i) para a camada de id mais alta no conjunto de camadas de saída i.
[00619] Referindo-se à Figura 54, o oop_dpb_maxbuffering_parameters especifica sub_layer_vps_buf_info_present_flag[ i ][ k ], max_vps_dec_pic_buffering_minus1[ i ][ k ][ j ].
[00620] sub_layer_vps_buf_info_present_flag[ i ][ k ] igual a 1 especifica que max_vps_dec_pic_buffering_minus1[ i ][ k ][ j ] estão presentes para as subcamadas max_sub_layers_vps_minus1[ k ]. sub_layer_vps_buf_info_present_flag[ i ] igual a 0 especifica que os valores de max_vps_dec_pic_buffering_minus1[ i ][ k ][max_sub_layers_vps_minus1[ k ]] se aplica a todas as subcamadas.
[00621] max_vps_dec_pic_buffering_minus1[ i ][ k ][ j ] mais 1 especifica o tamanho máximo necessário da memória temporária de imagem decodificada para o CVS para a camada com nuh_layer_id igual a k para o conjunto de camadas de saída associado ao índice i nas unidades de memória temporária de armazenamento de imagem quando HighestTid for igual a j. O valor de max_vps_dec_pic_buffering_minus1[ i ][ k ][ j ] deve estar em uma faixa de 0 a MaxDpbSize - 1 (conforme especificado na subcláusula A.4), inclusive.
[00622] Quando j for maior que 0, max_vps_dec_pic_buffering_minus1[ i ][ k ][ j ] será maior que ou igual a max_vps_dec_pic_buffering_minus1[ i ][ k ][ j - 1 ] e serão usados para inferência dos valores dos elementos de sintaxe de SPS sps_max_dec_pic_buffering_minus1[ j ].
[00623] Quando max_vps_dec_pic_buffering_minus1[ i ][ j ] não estiver presente para i em uma faixa de 0 a max_sub_layers_vps_minus1[ k ] - 1, inclusive, devido ao sub_layer_vps_buf_info_present_flag[ i ][ k ] ser igual a 0, o mesmo será inferido igual a max_vps_dec_pic_buffering_minus1[ i ][ k ] [ max_sub_layers_vps_minus1[ k ]].
[00624] O valor de max_vps_dec_pic_buffering_minus1[ i ][ 0 ][ j ] para cada valor de i e j será inferido igual a vps_max_dec_pic_buffering_minus1[ j ].
[00625] Referindo-se à Figura 55, o oop_dpb_maxbuffering_parameters especifica sub_layer_vps_buf_info_present_flag[ i ][ k ], max_vps_dec_pic_buffering_minus1[ i ][ k ][ j ]. A Figura 55 é uma sintaxe variante para oop_dpb_maxbuffering_parameters em comparação à sintaxe na Figura 54 para oop_dpb_maxbuffering_parameters.
[00626] A variável MaxSubLayers[ setId ][ k ] para setId em uma faixa de 0 a num_dpb_info_parameters - 1, inclusive, é derivada conforme o seguinte: [TABELA 29]
Figure img0047
[00627] Nesse caso, os parâmetros (i, k) de oop_dpb_maxbuffering_parameters serão definidos conforme na Figura 55.
[00628] Referindo-se à Figura 56, uma vps_extension modificada exemplificativa é ilustrada. A extensão vps modificada inclui modificação adicional da sintaxe na Figura 52 com sintaxe nova. Na Figura 53 nessa variante oop_dpb_maxbuffering_parameters (i,j) são sinalizados para cada camada j para o conjunto de camadas de saída particular i em comparação à Figura 52 que sinaliza um conjunto único de parâmetros oop_dpb_maxbuffering_parameters(i) para a camada de id mais alta no conjunto de camadas de saída i.
[00629] Os oop_dpb_maxbuffring_parameters (I,k) são conforme mostrados na Figura 57.
[00630] Referindo-se à Figura 58, o oop_dpb_maxbuffering_parameters especifica sub_layer_vps_buf_info_present_flag[ i ][ k ], max_vps_dec_pic_buffering_minus1[ i ][ k ][ j ]. A Figura 58 é uma sintaxe variante para oop_dpb_maxbuffering_parameters em comparação à sintaxe na Figura 57 para oop_dpb_maxbuffering_parameters.
[00631] A variável MaxSubLayers[ setId ][ k ] para setId em uma faixa de 0 a num_dpb_info_parameters - 1, inclusive, é derivada conforme o seguinte: [TABELA 30]
Figure img0048
[00632] Nesse caso, os parâmetros (i, k) de oop_dpb_maxbuffering_parameters serão definidos conforme na Figura 58.
[00633] Referindo-se à Figura 59, uma vps_extension modificada exemplificativa é ilustrada. A extensão vps modificada inclui modificação adicional da sintaxe na Figura 56 com sintaxe nova, a saber, uma sinalização adicional layer_dpb_info_parameters_presence_flag que são sinalizadas condicionalmente. layer_dpb_info_parameters_presence_flag realiza a sinalização de layer_dpb_info_parameters(i) na extensão VPS opcional.
[00634] layer_dpb_info_parameters_presence_flag[ i ] igual a 1 especifica que os elementos de sintaxe sub_layer_vps_ordering_info_predict_flag[ i ] e layer_dpb_info_parameters(i) estão presentes para as camadas vps_max_num_layers_minus1. layer_dpb_info_parameters_presence_flag[ i ] igual a 0 especifica que os elementos de sintaxe sub_layer_vps_ordering_info_predict_flag[ i ] e layer_dpb_info_parameters(i) não estão presentes para as camadas vps_max_num_layers_minus1.
[00635] Os oop_dpb_maxbuffring_parameters (i,k) são conforme mostrados na Figura 60.
[00636] Referindo-se à Figura 61, o oop_dpb_maxbuffering_parameters especifica sub_layer_vps_buf_info_present_flag[ i ][ k ], max_vps_dec_pic_buffering_minus1[ i ][ k ][ j ]. A Figura 61 é uma sintaxe variante para oop_dpb_maxbuffering_parameters em comparação à sintaxe na Figura 60 para oop_dpb_maxbuffering_parameters.
[00637] A variável MaxSubLayers[ setId ][ k ] para setId em uma faixa de 0 a num_dpb_info_parameters - 1, inclusive, é derivada conforme o seguinte: [TABELA 31]
Figure img0049
[00638] Nesse caso, os parâmetros (i, k) de oop_dpb_maxbuffering_parameters serão definidos conforme na Figura 61.
[00639] Uma alternativa exemplificativa para a sintaxe na extensão VPS é tal que [TABELA 32]
Figure img0050
[00640] pode ser alterada para [TABELA 33]
Figure img0051
[00641] Desse modo, o índice k pode começar em 0 em vez de em 1.
[00642] Uma alternativa exemplificativa para a sintaxe na extensão VPS é tal que [TABELA 34]
Figure img0052
[00643] pode ser alterada para [TABELA 35]
Figure img0053
[00644] O vps_max_layer_id especifica o valor máximo permitido de nuh_layer_id de todas as unidades de NAL no CVS. O vps_max_layers_minus1, especifica o número máximo de camadas que podem estar presentes no CVS, em que uma camada pode, por exemplo, ser uma camada escalonável espacial, uma camada escalonável de qualidade, uma vista de textura ou uma vista de profundidade.
[00645] Outra alternativa exemplificativa para a sintaxe na extensão VPS é tal que [TABELA 36]
Figure img0054
[00646] pode ser alterada para [TABELA 37]
Figure img0055
[00647] em que numoutputLayers é derivado como [TABELA 38]
Figure img0056
[00648] ou o mesmo pode ser alterado para [TABELA 39]
Figure img0057
[00649] Em uma modalidade, uma sinalização adicional pode ser sinalizada para indicar se oop_dpb_information_parameters são sinalizados para a camada particular conforme o seguinte: [TABELA 40]
Figure img0058
[00650] vps_layer_info_present_flag[ k ] igual a 1 especifica que oop_dpb_maxbuffering_parameters estão presentes para a camada k- ésima para o conjunto de camadas de saída particular. vps_layer_info_present_flag[ k ] igual a 0 especifica que oop_dpb_maxbuffering_parameters não estão presentes para a camada k-ésima para o conjunto de camadas de saída particular.
[00651] Os elementos de sintaxe de não unidades de NAL de VCL (ou seus valores padrões para parte dos elementos de sintaxe), exigidos para HRD, são especificados nas subcláusulas de semântica da cláusula 7, Anexos D e E.
[00652] Dois tipos de conjuntos de parâmetros de HRD (parâmetros de HRD de NAL e parâmetros de HRD de VCL) são usados. Os conjuntos de parâmetros de HRD são sinalizados através da estrutura de sintaxe hrd_parameters(), que podem ser parte da estrutura de sintaxe SPS ou da estrutura de sintaxe VPS.
[00653] Múltiplos testes podem ser necessários para verificar a conformidade de um fluxo de bits, que é chamado como o fluxo de bits sob teste. Para cada teste, as seguintes etapas se aplicam na ordem listada:
[00654] (1) Um conjunto de camadas de saída sob teste, chamado como TargetOpLs é selecionado. O ponto de operação referido em TargetOpLs por output_layer_set_idx[] identifica o ponto de operação sob teste. A lista de identificador de camada de saída OpLayerIdList de TargetOpLs consiste na lista de valores de nuh_layer_id, na ordem ascendente de valores de nuh_layer_id, presente no subconjunto de fluxo de bits associado ao TargetOp e TargetOpLs, que é um subconjunto dos valores de nuh_layer_id presente no fluxo de bits sob teste. O OpTid de TargetOp é igual ao TemporalId mais alto presente no subconjunto de fluxo de bits associado ao TargetOp.
[00655] (2) TargetDecLayerIdList é definido igual a lista de identificador de camada-alvo decodificada targetDLayerIdList para o conjunto de camadas de saída selecionado TargetOpLs, HighestTid é definido igual a OpTid de TargetOp, e o processo de extração de subfluxo de bits conforme especificado na cláusula 10 é invocado com fluxo de bits sob teste, HighestTid e TargetDecLayerIdList como entradas, e a saída é atribuída ao BitstreamToDecode.
[00656] (3) A estrutura de sintaxe hrd_parameters() e a estrutura de sintaxe sub_layer_hrd_parameters() aplicáveis a TargetOp são selecionadas. Se TargetDecLayerIdList contiver todos os valores de nuh_layer_id presente no fluxo de bits sob teste, a estrutura de sintaxe hrd_parameters() no SPS ativo (ou fornecido através de meios externos não especificados neste relatório descritivo) é selecionada. De outra forma, a estrutura de sintaxe hrd_parameters() no VPS ativo (ou fornecido através de alguns meios externos não especificados neste relatório descritivo) que se aplica a TargetOp é selecionada. Dentro da estrutura de sintaxe hrd_parameters() selecionada, se BitstreamToDecode for um fluxo de bits Tipo I, a estrutura de sintaxe sub_layer_hrd_parameters(HighestTid) que segue imediatamente a condição “if(vcl_hrd_parameters_present_flag)” é selecionada e a variável NalHrdModeFlag é definida igual a 0; De outra forma, (BitstreamToDecode é um fluxo de bits Tipo II), a estrutura de sintaxe sub_layer_hrd_parameters(HighestTid) que segue imediatamente a condição “if(vcl_hrd_parameters_present_flag)” (nesse caso, a variável NalHrdModeFlag é definida igual a 0) ou a condição “if(nal_hrd_parameters_present_flag)” (nesse caso, a variável NalHrdModeFlag é definida igual a 1) é selecionada. Quando BitstreamToDecode for um fluxo de bits Tipo II e NalHrdModeFlag for igual a 0, todas as não unidades de NAL de VCL, exceto as unidades de NAL de dados de preenchimento e todos os elementos de sintaxe leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes e trailing_zero_8bits que forma um fluxo de bits a partir do fluxo de tipo de unidade de NAL (conforme especificado no Anexo B), quando presente, são descartados do BitstreamToDecode, e o fluxo de bits resto é atribuído para BitstreamToDecode.
[00657] Um decodificador de conformação pode cumprir todas as exigências especificadas nesta subcláusula.
[00658] (1) Um decodificador que reivindica conformidade para um perfil, um escalão e um nível específico deve ter a capacidade de decodificar com sucesso todos os fluxos de bits que são conforme as exigências de conformidade de fluxo de bits especificadas na subcláusula C.4, dessa maneira especificados no Anexo A, contanto que todos VPSs, SPSs e PPSs referidos nas unidades de NAL de VCL e mensagens SEI de período de memória temporária e tempo de imagem adequadas sejam transportados para o decodificador, em tempo hábil, no fluxo de bits (através de não unidades de NAL de VCL) ou através de meios externos não especificados neste relatório descritivo.
[00659] (2) Quando um fluxo de bits contiver elementos de sintaxe que têm valores que são especificadas conforme reservado e for especificado que os decodificadores ignorem os valores dos elementos de sintaxe ou das unidades de NAL que contém os elementos de sintaxe que têm os valores reservados, e o fluxo de bits estiver, de outra forma, em conformidade com esse relatório descritivo, um decodificador de conformação decodificará o fluxo de bits da mesma maneira conforme o mesmo decodificaria um fluxo de bits em conformação e ignorará os elementos de sintaxe ou as unidades de NAL que contém os elementos de sintaxe que têm os valores reservados conforme especificado.
[00660] Há dois tipos de conformidade de um decodificador: conformidade de tempo de saída e conformidade de ordem de saída.
[00661] Para verificar a conformidade de um decodificador, o teste de conformidade de fluxos de bits para o perfil, o escalão e o nível reivindicados, conforme especificado na subcláusula C.4, são entregues através de um agendador de fluxo hipotético (HSS) tanto para o HRD quanto para o decodificador sob teste (DUT). Todas as saídas de imagens decodificadas e cortadas através do HRD também deve ser a saída através do DUT, em que cada saída de imagem decodificada e cortada através do DUT deve ser uma imagem com PicoutputFlag igual a 1, e, para cada saída de imagem decodificada e cortada através do DUT, os valores de todas as amostras que são saídas devem ser iguais aos valores das amostras produzidas através do processo de decodificação especificado.
[00662] Para a conformidade de decodificador de tempo de saída, o HSS opera conforme descrito acima, com agendamentos de entrega selecionados apenas a partir do subconjunto dos valores de SchedSelIdx para o qual a taxa de bit e o tamanho de CPB são restringidos conforme especificado no Anexo A para o perfil, o escalão e o nível especificados, ou com agendamentos de entrega “interpolados” conforme especificado abaixo para o qual a taxa de bit e o tamanho de CPB são restringidos conforme especificado no Anexo A. O mesmo agendamento de entrega é usado tanto para HRD quanto para DUT.
[00663] Quando os parâmetros de HRD e as mensagens SEI de período de memória temporária estiverem presentes com cpb_cnt_minus1[ HighestTid ] maior que 0, o decodificador deve ter a capacidade de decodificar o fluxo de bits como entregado a partir da operação de HSS com o uso de um agendamento de entrega “interpolado” especificado como tendo taxa de byte r de pico, tamanho de CPB c(r) e atraso de remoção de CPB de inicial [MATEMÁTICA 16]
Figure img0059
[00664] conforme segue: [TABELA 41]
Figure img0060
[00665] para qualquer SchedSelIdx > 0 e r tal que BitRate[ SchedSelIdx - 1 ] <= r <= BitRate[ SchedSelIdx ] tal que r e c(r) estão dentro dos limites conforme especificado no Anexo A para a taxa máxima de bit e o tamanho de memória temporária para o perfil, o escalão e o nível especificados. O InitCpbRemovalDelay[ SchedSelIdx ] pode ser diferente de um período de memória temporária para outro e ter que ser recalculado.
[00666] Para a conformidade de decodificador de tempo de saída, um HRD conforme descrito acima é usado e o tempo (relativo ao tempo de entrega do primeiro bit) de saída de imagem é a mesma tanto para o HRD quanto para o DUT até um atraso fixo.
[00667] Para a conformidade de decodificador de ordem de saída, o seguinte se aplica:
[00668] (1) O HSS entrega o fluxo de bits BitstreamToDecode para o DUT “por demanda” a partir do DUT, que significa que o HSS entrega os bits (na ordem de decodificação) apenas quando o DUT exige mais bits para prosseguir com seu processamento. Isso significa que para esse teste, a memória temporária de imagem codificada do DUT pode ser tão pequena quanto o tamanho da maior unidade de decodificação.
[00669] (2) Um HRD modificado conforme descrito abaixo é usado, e o HSS entrega o fluxo de bits para o HRD através de um dos agendamentos especificados no fluxo de bits BitstreamToDecode de modo que a taxa de bit e o tamanho de CPB sejam restringidos conforme especificado no Anexo A. A ordem da saída de imagens será a mesma tanto para HRD quanto para DUT.
[00670] (3) O tamanho de CPB de HRD é dado através de CpbSize[ SchedSelIdx ] conforme especificado na subcláusula E.2.3, em que SchedSelIdx e os parâmetros de HRD são selecionados conforme especificado na subcláusula C.1. O tamanho de DPB é dado através de sps_max_dec_pic_buffering_minus1[ HighestTid ] + 1 do SPS ativo (quando nuh_layer_id para a imagem decodificada atual for igual a 0) ou a partir de SPS de camada ativa para o valor de nuh_layer_id da imagem decodificada atual.
[00671] Em alguns casos, se os parâmetros de informações de conjuntos de camada de saída DPB oop_dpb_maxbuffering_parameters() estiverem presentes para o conjunto de camadas de saída selecionado, o tamanho de DPB é dado através de max_vps_dec_pic_buffering_minus1[CurrLayerId][HighestTid] em que currLayerId é o nuh_layer_id da imagem decodificada atual. De outra forma, se os parâmetros de informações de conjuntos de camada de saída DPB oop_dpb_maxbuffering_parameters () não estiverem presentes para o conjunto de camadas de saída selecionado, o tamanho de DPB é dado através de sps_max_dec_pic_buffering_minus1[ HighestTid ] + 1 do SPS ativo (quando nuh_layer_id para a imagem decodificada atual for igual a 0) ou a partir do SPS de camada ativa para o valor de nuh_layer_id da imagem decodificada atual.)
[00672] O tempo de remoção do CPB para o HRD é o tempo de chegada final de bit e a decodificação é imediata. A operação do DPB desse HRD é conforme descrito nas subcláusulas C.5.2 até C.5.2.3.
[00673] A memória temporária de imagem decodificada contém a memória temporária de armazenamento de imagem. O número de memória temporária de armazenamento de imagem para nuh_layer_id igual a 0 é derivada a partir do SPS ativo. O número de memória temporária de armazenamento de imagem para cada valor não zero nuh_layer_id é derivado a partir do SPS de camada ativa para tal valor não zero nuh_layer_id. Cada uma das memórias temporárias de armazenamento de imagem contém uma imagem decodificada que é marcada como “usada para referência” ou é mantida para saída futura. O processo para saída e remoção de imagens a partir do DPB conforme especificado na subcláusula F.13.5.2.2 é invocado, seguido pela invocação do processo para decodificação, para marcação, para bumping adicional e para armazenamento de imagem conforme especificado na subcláusula F.13.5.2.3. O processo de “bumping” é especificado na subcláusula F.13.5.2.4 e é invocado conforme especificado na subcláusulas F.13.5.2.2 e F.13.5.2.3.
[00674] A saída e a remoção das imagens a partir do DPB antes da decodificação da imagem atual (porém, após a análise do cabeçalho de fatia da primeira fatia da imagem atual) ocorrem instantaneamente quando a primeira unidade de decodificação da unidade de acesso que contém a imagem atual for removida do CPB e prossegue conforme o seguinte.
[00675] O processo de decodificação para RPS conforme especificado na subcláusula 8.3.2 é invocado.
[00676] (1) Se a imagem atual for uma imagem de IRAP com NoRasloutputFlag igual a 1 e com nuh_layer_id igual a 0 que não é uma imagem 0, as seguintes etapas ordenadas são aplicadas:
[00677] (A) A variável NooutputOfPriorPicsFlag é derivada para o decodificador sob teste conforme o seguinte:
[00678] (i) Se a imagem atual for uma imagem de CRA, NooutputOfPriorPicsFlag é definido igual a 1 (independente do valor de no_output_of_prior_pics_flag).
[00679] (ii) De outra forma, se o valor de pic_width_in_luma_samples, de pic_height_in_luma_samples ou de sps_max_dec_pic_buffering_minus1[ HighestTid ] derivado a partir do SPS ativo for diferente do valor de pic_width_in_luma_samples, de pic_height_in_luma_samples ou de sps_max_dec_pic_buffering_minus1[ HighestTid ], respectivamente, derivado a partir do SPS ativo para a imagem precoce, NooutputOfPriorPicsFlag pode (porém, não deve) ser definido como 1 através do decodificador sob teste, independente do valor de no_output_of_prior_pics_flag. Embora a definição de NooutputOfPriorPicsFlag como igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador sob teste é deixado definir NooutputOfPriorPicsFlag para 1, nesse caso.
[00680] (iii) De outra forma, NooutputOfPriorPicsFlag é definido igual a no_output_of_prior_pics_flag.
[00681] (B) O valor de NooutputOfPriorPicsFlag derivado para o decodificador sob teste é aplicado para o HRD conforme o seguinte:
[00682] (i) Se NooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem no DPB são esvaziadas sem a saída das imagens que as mesmas contêm e a integralidade de DPB é definida como igual a 0.
[00683] (ii) De outra forma, (NooutputOfPriorPicsFlag é igual a 0), todas as memórias temporárias de armazenamento de imagem que contêm uma imagem que é marcada como “não necessária para a saída” e “não usada para referência” são esvaziadas (sem saída), e todas as memórias temporárias de armazenamento de imagem não vazias no DPB são esvaziadas invocando-se repetidamente o processo de “bumping” especificado na subcláusula F.13.5.2.4, e a integralidade de DPB é definida como igual a 0.
[00684] (iii) De outra forma, (a imagem atual não é uma imagem de IRAP com NoRasloutputFlag igual a 1 e com nuh_layer_id igual a 0), todas as memórias temporárias de armazenamento de imagem que contém uma imagem que são marcadas como “não necessária para a saída” e “não usada para referência” são esvaziadas (sem saída). Para cada memória temporária de armazenamento de imagem que for esvaziada, a Integralidade de DPB será diminuída por um. A variável currLayerId é definida como igual a nuh_layer_id da imagem decodificada atual.
[00685] As variáveis MaxNumReorderPics[ currLayerId ][ HighestTid ], MaxLatencyIncreasePlus1[ currLayerId ][ HighestTid ], MaxLatencyPictures[ currLayerId ][ HighestTid ], MaxDecPicBufferingMinus1[ currLayerId ][ HighestTid ] são derivadas conforme o seguinte:
[00686] Se os parâmetros de informações de DPB de camada layer_dpb_info_parameters() estiverem presentes em VPS, MaxNumReorderPics[ currLayerId ][HighestTid ] é definido como vps_max_num_reorder_pics[ HighestTid ] quando currLayerId for igual a 0 ou for definido como max_vps_num_reorder_pics[ CurrLayerId ][ HighestTid ] para o currLayerId quando currLayerId for maior que 0. De outra forma, se os parâmetros de informações de DPB de camada layer_dpb_info_parameters() não estiverem presentes MaxNumReorderPics[ currLayerId ][ HighestTid ] será defino para sps_max_num_reorder_pics[ HighestTid ] do SPS ativo (quando currLayerId for igual a 0) ou a partir do SPS de camada ativa para o valor de currLayerId.
[00687] Se os parâmetros de informações de DPB de camada layer_dpb_info_parameters() estiverem presentes em VPS, MaxLatencyIncreasePlus1[ currLayerId ][ HighestTid ] será definido como vps_max_latency_increase_plus1[ HighestTid ] quando currLayerId for igual a 0 ou for definido como max_vps_latency_increase_plus1[ CurrLayerId ][ HighestTid ] para o currLayerId quando currLayerId for maior que 0. Se os parâmetros de informações de DPB de camada layer_dpb_info_parameters() estiverem presentes em VPS, MaxLatencyPictures[ currLayerId ][ HighestTid ] será definida como SpsMaxLatencyPictures [ HighestTid ] quando currLayerId for igual a 0 ou for definido como VpsMaxLatencyPictures [ CurrLayerId ][ HighestTid ] para o currLayerId quando currLayerId for maior que 0. De outra forma, se os parâmetros de informações de DPB de camada layer_dpb_info_parameters() não estiverem presentes para o ponto de operação sob teste, MaxLatencyIncreasePlus1[ currLayerId ][ HighestTid ] for definido como sps_max_latency_increase_plus1[ HighestTid ] do SPS ativo (quando currLayerId for igual a 0) ou o SPS de camada ativa para o valor de currLayerId e MaxLatencyPictures[ currLayerId ][ HighestTid ] for definido como SpsMaxLatencyPictures[ currLayerId ][ HighestTid ] derivado a partir do SPS ativo (quando currLayerId for igual a 0) ou a partir do SPS de camada ativa para o valor de currLayerId.
[00688] Se os parâmetros de informações de DPB de ponto de operação oop_dpb_maxbuffering_parameters () estiverem presentes para o conjunto de camadas de saída selecionado, MaxDecPicBufferingMinus1[ currLayerId ][HighestTid ] será definido como vps_max_dec_pic_buffering_minus1[ HighestTid ] quando currLayerId for igual a 0 ou for definido como max_vps_dec_pic_buffering_minus1[ CurrLayerId ][ HighestTid ] para o currLayerId para o ponto de operação sob teste quando currLayerId for maior que 0. De outra forma, se os parâmetros de informações de DPB de ponto de operação oop_dpb_maxbuffering_parameters () não estiverem presentes para o ponto de operação sob teste, MaxDecPicBufferingMinus1[ currLayerId ][HighestTid ] será definido como sps_max_dec_pic_buffering_minus1[ HighestTid ] do SPS ativo (quando currLayerId for igual a 0) ou a partir do SPS de camada ativa para o valor de currLayerId.
[00689] Quando uma ou mais das seguintes forem verdadeiras, o processo de “bumping” especificado na subcláusula F.13.5.2.4 será invocado repetidamente enquanto decrementa adicionalmente a integralidade de DPB por um para cada memória temporária de armazenamento de imagem adicional que é esvaziada, até que nenhuma dentre as seguintes seja verdadeira:
[00690] (1) O número de imagens com nuh_layer_id igual a currLayerId no DPB que são marcadas como “necessária para saída” for maior que MaxNumReorderPics[CurrLayerId][HighestTid].
[00691] (2) Se MaxLatencyIncreasePlus1[CurrLayerId][HighestTid] não for igual a 0 e houver pelo menos uma imagem com nuh_layer_id igual a currLayerId no DPB que é marcado como “necessário para saída” para o qual a variável PicLatencyCount[ currLayerId ] associada for maior que ou igual a MaxLatencyPictures[CurrLayerId][HighestTid].
[00692] (3) O número de imagens com nuh_layer_id igual a currLayerId no DPB for maior que ou igual a MaxDecPicBuffering[CurrLayerId][HighestTid].
[00693] Os processos especificados nesta subcláusula acontecem instantaneamente quando a última unidade de decodificação de unidade de acesso n que contém a imagem atual é removida a partir do CPB.
[00694] A variável currLayerId é definida como igual a nuh_layer_id da imagem decodificada atual.
[00695] Para cada imagem no DPB que for marcada como “necessária para saída” e que tiver um valor de nuh_layer_id igual a currLayerId, a variável PicLatencyCount[ currLayerId ] associada será definida como igual a PicLatencyCount[ currLayerId ] + 1.
[00696] A imagem atual é considerada como decodificada após a última unidade de decodificação da imagem ser decodificada. A imagem decodificada atual é armazenada em uma memória temporária de armazenamento de imagem vazia no DPB e o seguinte se aplica:
[00697] (A) Se a imagem decodificada atual tiver PicoutputFlag igual a 1, a mesma será marcada como “necessária para saída” e sua variável PicLatencyCount[ currLayerId ] associada será definida como igual a 0.
[00698] (B) De outra forma, (a imagem decodificada atual tiver PicoutputFlag igual a 0), a mesma será marcada como “não necessária para a saída”.
[00699] A imagem decodificada atual é marcada como “usada para referência a curto prazo”.
[00700] Quando uma ou mais das seguintes forem verdadeiras, o processo de “bumping” especificado na subcláusula F.13.5.2.4 será invocado repetidamente até que nenhuma dentre as seguintes seja verdadeira.
[00701] (A) O número de imagens com nuh_layer_id igual a currLayerId no DPB que são marcadas como “necessária para saída” for maior que MaxNumReorderPics[CurrLayerId][HighestTid].
[00702] (B) MaxLatencyIncreasePlus1[CurrLayerId][HighestTid] não for igual a 0 e houver pelo menos uma imagem com nuh_layer_id igual a currLayerId no DPB que é marcada como “necessária para saída” para o qual a variável PicLatencyCount[ currLayerId ] associada for maior que ou igual a MaxLatencyPictures[CurrLayerId][HighestTid].
[00703] O processo de “bumping” consiste nas seguintes etapas ordenadas:
[00704] (A) As imagens que são primeiro para a saída são selecionadas como aquelas que têm o menor valor de PicOrderCntVal de todas as imagens no DPB marcadas como “necessária para saída”.
[00705] (B) Essas imagens são cortadas, com o uso da janela de corte de conformidade especificada no SPS ativo para a imagem com nuh_layer_id igual a 0 ou no SPS de camada ativa para um valor de nuh_layer_id igual àquela da imagem, as imagens cortadas são emitidas na ordem ascendente de nuh_layer_id, e as imagens são marcadas como “não necessária para a saída”.
[00706] (C) Cada memória temporária de armazenamento de imagem que contém uma imagem marcada como “não usada para referência” e que incluiu uma das imagens que foram cortadas e a saída é esvaziada.
[00707] Referindo-se à Figura 62, uma sintaxe de conjunto de parâmetros (sps) de sequência modificada exemplificativa seq_parameter_set_rbsp é ilustrada. O sps modificado inclui um sps_dpb_params_present_flag. Em uma modalidade com base no valor dessa sinalização e com base no valor de nuh_layer_id parte dos elementos de sintaxe (por exemplo, sps_sub_layer_ordering_info_present_flag, sps_max_dec_pic_buffering_minus1[i], sps_max_num_reorder_pics[i], sps_max_latency_incease_plus1[i] não podem ser sinalizados.
[00708] sps_dpb_params_present_flag igual a 0 especifica que, para SPS com nuh_layer_id >0, os elementos de sintaxe sps_sub_layer_ordering_info_present_flag, sps_max_dec_pic_buffering_minus1[ i ], sps_max_num_reorder_pics[ i ], sps_max_latency_increase_plus1[ i ] não estão presentes nesse SPS. O valor desses parâmetros é definido igual ao valor de parâmetros sub_layer_vps_buf_info_present_flag[ i ], max_vps_num_reorder_pics[ i ][ j ] e max_vps_latency_increase_plus1[ i ][ j ] sinalizados na extensão VPS ativa. sps_dpb_params_present_flag igual a 1 especifica que, para SPS com nuh_layer_id >0, os elementos de sintaxe sps_sub_layer_ordering_info_present_flag, sps_max_dec_pic_buffering_minus1[ i ], sps_max_num_reorder_pics[ i ], sps_max_latency_increase_plus1[ i ] estão presentes nesse SPS.
[00709] Em outra modalidade, um ou mais dos elementos de sintaxe podem ser sinalizados com o uso de um número fixo conhecido dos bits em vez de u(v) em vez de ue(v). Por exemplo, os mesmos devem ser sinalizados com o uso de u(8) ou de u(16) ou de u(32) ou de u(64), etc..
[00710] Em outra modalidade, um ou mais desses elementos de sintaxe podem ser sinalizados com ue(v) ou algum outro esquema de codificação ao invés do número fixo dos bits tais como codificação de u(v).
[00711] Em outra modalidade, os nomes de diversos elementos de sintaxe e suas semânticas podem ser alterados através da adição de um plus1 ou plus2 ou através da subtração de um minus1 ou a minus2 em comparação à sintaxe e à semântica descritas.
[00712] Em ainda outra modalidade, diversos elementos de sintaxe podem ser sinalizados por imagem em qualquer lugar no fluxo de bits. Por exemplo, os mesmos podem ser sinalizados no cabeçalho de segmento de fatia, pps/ sps/ vps/ ou de qualquer outro conjunto de parâmetros ou outras partes normativa do fluxo de bits.
[00713] Em ainda outras modalidades, todos os conceitos definidos nessa invenção em relação aos conjuntos de camada de saída podem ser aplicados aos pontos de operação de saída [2,3] e/ ou aos pontos de operação [1].
EXEMPLO 3
[00714] Um método para codificação de vídeo é revelado. O método inclui começar a analisar um primeiro cabeçalho de fatia de uma imagem atual. Determina-se quais etapas realizadas por uma memória temporária de imagem decodificada (DPB) será à base de imagem e cujas etapas serão à base de unidade de acesso (AU). Uma remoção a partir do DPB é realizada. Uma saída de imagem a partir do DPB é realizada. Uma decodificação e armazenamento de uma imagem decodificada atual no DPB são realizados. A imagem decodificada atual no DPB é marcada. Uma saída de imagem adicional a partir do DPB também é realizada.
[00715] Em algumas configurações, a remoção e a saída a partir do DPB pode ter como base pelo menos um sinalizador de saída de AU, tal como um sinalizador de saída de AU, um sinalizador sem saída de rasl de AU e/ou um sinalizador sem saída de AU de imagens anteriores. O sinalizador de saída de AU pode ser derivado com base nos elementos de sintaxe sinalizados no fluxo de bits e outras condições. Os sinalizadores de AU representam os sinalizadores derivados e aplicados no nível de unidade de acesso (AU). Em alguns casos, esses serão sinalizadores diferentes daqueles sinalizadores similares que são sinalizados ou derivados no nível de imagem, tal como sinalizadores de saída de imagem (por exemplo, pic_output_flag), uma imagem no sinalizador de saída rasl (por exemplo, NoRasloutputFlag) e/ou um sinalizador sem saída de imagens anteriores (por exemplo, no_output_of_prior_pics_flag).
[00716] Em uma configuração, um primeiro sinalizador de saída de AU pode ser derivado e usado pelo DPB e um segundo sinalizador de saída de AU é derivado e usado pelo DPB. Em outra configuração, todos os valores de sintaxe de elementos de sinalizadores de saída de imagem podem ser limitados ao mesmo valor para todas as imagens codificadas em um AU quando um sinalizador de saída de imagem estiver presente no primeiro cabeçalho de fatia. Em algumas configurações, todos os valores de sintaxe de elementos de sinalizadores de saída de imagem podem ser limitados ao mesmo valor para todas as imagens codificadas em um AU quando um sinalizador de saída sem imagem estiver presente no primeiro cabeçalho de fatia.
[00717] Em uma configuração, a remoção pode ter como base a imagem, a saída de imagem pode ter como base o AU (unidade de acesso), o armazenamento e a decodificação podem ter como base uma imagem, a marcação pode ter como base a imagem, e a saída de imagem adicional pode ter como base o AU. A remoção a partir de DPB pode remover uma ou mais imagens a partir do DPB antes de decodificar a imagem atual.
[00718] Em outra configuração, a remoção pode ter como base uma imagem, e a saída de imagem, a decodificação e o armazenamento, a marcação e a saída de imagem adicional pode ter como base o AU. Em ainda outra configuração, a remoção, a saída de imagem, a decodificação e o armazenamento, a marcação e a saída de imagem adicional pode ter como base o AU. Em outra configuração, a remoção, a decodificação e o armazenamento e a marcação pode ter como base a imagem e a saída de imagem e a saída de imagem adicional pode ser à base de AU. Em ainda outra configuração, a remoção, a saída de imagem, a decodificação e o armazenamento, a marcação e a saída de imagem adicional pode ter como base a imagem.
[00719] A marcação da imagem decodificada atual no DPB pode incluir uma etapa de marcação de referência e uma etapa de marcação de saída. A etapa de marcação de referência pode ter como base a imagem e a etapa de marcação de saída pode ter como base o AU. Uma integralidade de DPB pode ser incrementada por um quando uma imagem decodificada for armazenada no DPB em uma memória temporária de armazenamento vazia. A Integralidade de DPB pode ser diminuída por um quando uma imagem for emitida a partir de DPB. A integralidade de DPB pode ser rastreada por camada. A integralidade de DPB também pode ser rastreada por um conjunto de camadas de saída.
[00720] O DPB pode incluir memórias temporárias de imagem identificadas e gerenciadas de modo separado para imagens decodificadas que têm um ou mais resoluções diferentes, profundidades de bit diferentes e cromaticidade de cor diferentes. O DPB pode incluir um fundo comum de memória temporária de armazenamento de imagem. Uma imagem decodificada pode ser armazenada na memória temporária de armazenamento de imagem com base em pelo menos um dentre o tamanho, a resolução e a profundidade de bit. Em uma configuração, uma imagem decodificada pode ser armazenada em uma fenda de memória temporária de imagem da memória temporária de armazenamento de imagem.
[00721] O método pode ser realizado através de um decodificador dentro de um dispositivo eletrônico que se conforma a um padrão de codificação de vídeo de alta eficiência escalonável (SHVC). O método também pode ser realizado através de um decodificador dentro de um dispositivo eletrônico que se conforma a um padrão codificação de vídeo de alta eficácia de visualização múltipla (MV-HEVC).
[00722] Um dispositivo eletrônico configurado para codificação de vídeo também é revelado. O dispositivo eletrônico inclui um processador e uma memória em comunicação eletrônica com o processador. As instruções na memória são executáveis para começar a analisar um primeiro cabeçalho de fatia de uma imagem atual. As instruções na memória também são executáveis para determinar quais etapas realizadas através de uma memória temporária de imagem decodificada (DPB) terão como base a imagem e quais etapas terão como base a unidade de acesso (AU). As instruções na memória são executáveis adicionalmente para realizar uma remoção a partir de DPB. As instruções na memória também são executáveis para realizar uma saída de imagem a partir de DPB. As instruções na memória são executáveis adicionalmente para realizar a decodificação e o armazenamento de uma imagem decodificada atual no DPB. As instruções na memória também são executáveis para marcar a imagem decodificada atual no DPB. As instruções na memória são executáveis adicionalmente para realizar uma saída de imagem adicional a partir do DPB.
[00723] Diversas configurações são agora descritas com referência às Figuras, em que números de referência similares podem indicar elementos de funcionalidade similar. Os sistemas e os métodos, conforme descrito de modo geral, e ilustrados nas Figuras no presente documento, podem ser dispostos e projetados em uma ampla variedade de configurações diferentes. Desse modo, a descrição mais detalhada a seguir de diversas configurações, conforme representado nas Figuras, não se destina a limitar o escopo, conforme reivindicado, porém, é apenas representativo dos sistemas e dos métodos.
[00724] A Figura 63 é um diagrama de bloco que ilustra a codificação de vídeo entre múltiplos dispositivos eletrônicos 2102a a b. Um primeiro dispositivo eletrônico 2102a e um segundo dispositivo eletrônico 2102b são ilustrados. No entanto, deve-se observar que um ou mais desses recursos e funcionalidade descritos em relação ao primeiro dispositivo eletrônico 2102a e o segundo dispositivo eletrônico 2102b podem ser combinados em um único dispositivo eletrônico 102, em algumas configurações. Cada um dos dispositivos eletrônicos 102 pode ser configurado para codificar o vídeo e/ou decodificar vídeo. Os dispositivos eletrônicos 102 podem ser configurados para usar operação de memória temporária de imagem decodificada (DPB) híbrida. A operação de memória temporária de imagem decodificada (DPB) híbrida se refere aos cenários em que as diversas etapas de remoção, de saída (bumping), de armazenamento, de marcação e de saída adicional (bumping) realizadas em uma memória temporária de imagem decodificada (DPB) 116 ocorrem em uma base de imagem ou uma base de unidade de acesso (AU). Embora combinações específicas dessas etapas sejam referidas como sendo realizadas em uma base de imagem ou em uma base de unidade de acesso (AU), todas as combinações possíveis de fazer cada uma dessas etapas individualmente em uma base de imagem ou uma base de unidade de acesso (AU) são suportadas.
[00725] Conforme usado no presente documento, a unidade de acesso (AU) se refere a um conjunto de unidades de camada de abstração de rede que são associados entre si de acordo com uma regra de classificação especificada, que são consecutivos na ordem de decodificação, e que incluem a unidades de NAL de camada de codificação de vídeo (VCL) de todas as imagens codificadas associadas ao mesmo tempo de saída e suas não unidades de NAL de VCL associadas. A camada-base é uma camada na qual todas as unidades de NAL de VCL têm um nuh_layer_id igual a 0. Uma imagem codificada é uma representação codificada de uma imagem que inclui as unidades de NAL de VCL com um valor particular de nuh_layer_id e que inclui todas as unidades de árvore de codificação da imagem. Em alguns casos, uma imagem codificada pode ser chamada de um componente de camada. Detalhes adicionais sobre as etapas que são à base de imagem ou à base de unidade de acesso (AU) são dadas em relação às Figuras 69 e 70 abaixo.
[00726] Em uma configuração, cada um dos dispositivos eletrônicos 102 pode se conformar com o padrão de Codificação de Vídeo de Alta Eficiência (HEVC), padrão de Codificação de vídeo de Alta Eficácia Escalonável (SHVC) ou padrão de Codificação de vídeo de Alta Eficácia de Visualização Múltipla (MV-HEVC). O padrão de HEVC é um padrão de compressão de vídeo que atua como um sucessor do H.264/MPEG-4 AVC (Codificação de Vídeo Avançada) e que fornece qualidade de vídeo otimizada e razões de compressão de dados aumentadas. Conforme usado no presente documento, uma imagem é uma arranjo de amostras de luminância em formato monocromático ou um arranjo de amostras de luminância e dois arranjos correspondentes de amostras de croma em 4:2:0, 4:2:2 e 4:4:4 formato de cor ou algum outro formato de cor. A operação de um decodificador hipotético de referência (HRD) e a operação da memória temporária de imagem decodificada de ordem de saída (DPB) 116 são descritas para SHVC e para MV-HEVC em JCTVC-M1008, JCTVC-L1008, JCTVC-D1004, JCT3V-C1004, JCTVC-L0453 e JCTVC-L0452.
[00727] O primeiro dispositivo eletrônico 2102a pode incluir um codificador 2108 e um módulo de sinalização de sobrecarga 2112. O primeiro dispositivo eletrônico 2102a pode obter uma imagem de entrada 2106. Em algumas configurações, a imagem de entrada 2106 pode ser capturada no primeiro dispositivo eletrônico 2102a com o uso de um sensor de imagem, recuperado a partir da memória e/ou recebido a partir de outro dispositivo eletrônico 102. O codificador 2108 pode codificar a imagem de entrada 2106 para produzir dados codificados 2110. Por exemplo, o codificador 2108 pode codificar uma série de imagens de entrada 2106 (por exemplo, vídeo). Os dados codificados 2110 podem ser dados digitais (por exemplo, um fluxo de bits).
[00728] O módulo de sinalização de sobrecarga 2112 pode gerar sinalização de sobrecarga à base de dados codificados 2110. Por exemplo, o módulo de sinalização de sobrecarga 2112 pode adicionar os dados de sobrecarga aos dados codificados 2110 tais como informações de cabeçalho de fatia, informações de conjunto de parâmetros de vídeo (VPS), informações de conjunto de parâmetros de sequência (SPS), informações de conjunto de parâmetros de imagem (PPS), contagem de ordem de imagem (POC), designação de imagem de referência, etc. Em algumas configurações, o módulo de sinalização de sobrecarga 2112 pode produzir um indicador de encapsulamento que indica uma transição entre dois conjuntos de imagens.
[00729] O codificador 2108 (e módulo de sinalização de sobrecarga 2112, por exemplo,) pode produzir um fluxo de bits 2114. O fluxo de bits 2114 pode incluir dados de imagem codificada à base da imagem de entrada 2106. Em algumas configurações, o fluxo de bits 2114 também pode incluir os dados de sobrecarga, tais como as informações de cabeçalho de fatia, Informações de VPS, Informações SPS, informações PPS, etc. Como imagens de entrada adicionais 2106 são codificadas, o fluxo de bits 2114 pode incluir uma ou mais imagens codificadas. Por exemplo, o fluxo de bits 2114 pode incluir uma ou mais imagens de referência codificada e/ou outras imagens.
[00730] O fluxo de bits 2114 pode ser fornecido a um decodificador 2104. Em um exemplo, o fluxo de bits 2114 pode ser transmitido ao segundo dispositivo eletrônico 2102b com o uso de um enlace com fio ou sem fio. Em alguns casos, isso pode ser feito através de uma rede, tal como a Internet ou uma Rede de Área Local (LAN). Conforme ilustrado na Figura 63, o decodificador 2104 pode ser implantado no segundo dispositivo eletrônico 2102b de modo separado do codificador 2108 no primeiro dispositivo eletrônico 2102a. No entanto, deve-se observar que o codificador 2108 e o decodificador 2104 possam ser implantados no mesmo dispositivo eletrônico 102 Em algumas configurações, quando o codificador 2108 e o decodificador 2104 forem implantados no mesmo dispositivo eletrônico, por exemplo, o fluxo de bits 2114 pode ser fornecido através de um barramento para o decodificador 2104 ou armazenados na memória para recuperação do decodificador 2104.
[00731] O decodificador 2104 pode receber (por exemplo, obter) o fluxo de bits 2114. O decodificador 2104 pode gerar uma imagem decodificada 2118 (por exemplo, uma ou mais imagens decodificadas 2118) à base do fluxo de bits 2114. A imagem decodificada 2118 pode ser exibida, reproduzida, armazenada na memória e/ou transmitida para outro dispositivo, etc..
[00732] O decodificador 2104 pode incluir uma memória temporária de imagem decodificada (DPB) 116. A memória temporária de imagem decodificada (DPB) 116 pode ser uma memória temporária que mantém as imagens decodificadas para referência, a reordenação de saída ou atraso de saída especificados para um decodificador hipotético de referência (HRD). Em um dispositivo eletrônico 102, uma memória temporária de imagem decodificada (DPB) 116 pode ser usada para armazenar imagens reconstruídas (por exemplo, decodificadas) em um decodificador 2104. Essas imagens armazenadas podem, então, ser usadas, por exemplo, em um mecanismo de interpredição. Quando as imagens forem decodificadas fora de ordem, as imagens poderão ser armazenadas na memória temporária de imagem decodificada (DPB) 116 de modo que os mesmos possam ser exibidos posteriormente em ordem.
[00733] No H.264 ou padrão de codificação de vídeo avançada (AVC), o gerenciamento de memória temporária de imagem decodificada (DPB) 116 (por exemplo, apagamento, adição de imagens, reordenação de imagens, etc.) é realizado com o uso de operações de controle de gerenciamento de memória (MMCO). Diversas abordagens de gerenciamento de memória temporária de imagem decodificada (DPB) 116 diferentes são levadas em consideração.
[00734] O decodificador 2104 pode incluir um módulo híbrido de operação de memória temporária de imagem decodificada 2120. O módulo híbrido de operação de memória temporária de imagem decodificada 2120 pode permitir que as abordagens de gerenciamento de memória temporária de imagem decodificada (DPB) 116 tenham etapas à base de imagem 2122 e/ou abordagens de gerenciamento de memória temporária de imagem decodificada (DPB) 116 tenham etapas à base de unidade de acesso (AU) 2124. Por exemplo, uma vantagem do uso das etapas de base de imagem 2124 para remoção para armazenamento e marcação de referência é que a memória de memória temporária ideal de imagem decodificada (DPB) 116 será usada por diversas camadas. Desse modo, a memória exigida de modo geral quando for usar as etapas de base de imagem pode ser menor. Uma vantagem do uso de etapas à base de unidade de acesso (AU) 2124 para a saída (incluindo saída, marcação de saída e saída adicional) é que o processo de saída pode ser simplificado.
[00735] A Figura 64 é um diagrama em fluxo de um método 2200 para operação de memória temporária de imagem decodificada híbrida (DPB) 116. O método 2200 pode ser realizado através de uma memória temporária de imagem decodificada (DPB) 116 como parte de um decodificador 2104 em um dispositivo eletrônico 102. Em uma configuração, o método 2200 pode ser realizado através de um módulo híbrido de operação de memória temporária de imagem decodificada 2120. A memória temporária de imagem decodificada (DPB) 116 pode começar a analisar 2202 um primeiro cabeçalho de fatia de uma imagem atual. A memória temporária de imagem decodificada (DPB) 116 pode determinar 2204 quais etapas da operação de memória temporária de imagem decodificada (DPB) híbrida serão à base de imagem e quais etapas serão à base de unidade de acesso (AU).
[00736] A memória temporária de imagem decodificada (DPB) 116 pode realizar 2206 uma remoção (sem saída) a partir da memória temporária de imagem decodificada (DPB) 116. A remoção pode remover imagens A partir da memória temporária de imagem decodificada (DPB) 116 antes de decodificar a imagem atual. A memória temporária de imagem decodificada (DPB) 116 pode realizar 2208 uma saída de imagem (bumping) a partir da memória temporária de imagem decodificada (DPB) 116. Uma saída de imagem (bumping) pode se referir à saída de imagens a partir da memória temporária de imagem decodificada (DPB) 116 no tempo de remoção de memória temporária de imagem codificada (CPB). Em algumas configurações, o termo bumping pode ser usado para indicar a saída de uma ou mais imagens a partir da memória temporária de imagem decodificada (DPB) 116. Desse modo, os termos bumping e saída podem ser usados intercambiavelmente.
[00737] A memória temporária de imagem decodificada (DPB) 116 pode decodificar 2210 e armazenar a imagem atual na memória temporária de imagem decodificada (DPB) 116. A memória temporária de imagem decodificada (DPB) 116 pode marcar 2212 a imagem decodificada atual armazenada na memória temporária de imagem decodificada (DPB) 116. Por exemplo, a memória temporária de imagem decodificada (DPB) 116 pode marcar 2212 a imagem decodificada atual como “não usada para referência”, “usada para referência”, “necessária para saída” ou “não necessária para a saída”. A memória temporária de imagem decodificada (DPB) 116 também pode realizar 2214 outra saída de imagem (bumping adicional) a partir da memória temporária de imagem decodificada (DPB) 116. Em algumas configurações, uma remoção/bumping repetida das imagens a partir da memória temporária de imagem decodificada (DPB) 116 pode ocorrer até que certas condições sejam satisfeitas.
[00738] A Figura 65 é um diagrama em fluxo de outro método 2300 para a operação de memória temporária de imagem decodificada híbrida (DPB) 116. Por exemplo, o método 2300 da Figura 65 pode ser um método preferido para a operação de memória temporária de imagem decodificada híbrida (DPB) 116. O método 2300 pode ser realizado através de uma memória temporária de imagem decodificada (DPB) 116 como parte de um decodificador 2104 em um dispositivo eletrônico 102. Em uma configuração, o método 2300 pode ser realizado através de um módulo híbrido de operação de memória temporária de imagem decodificada 2120. A memória temporária de imagem decodificada (DPB) 116 pode começar a analisar 2302 um primeiro cabeçalho de fatia de uma imagem atual. O termo híbrido se refere ao fato de que parte das etapas de operação de memória temporária de imagem decodificada (DPB) 116 é realizada em uma base de imagem e parte das etapas de operação de memória temporária de imagem decodificada (DPB) 116 é realizada em uma base de unidade de acesso (AU). A memória temporária de imagem decodificada (DPB) 116 pode realizar 2304 uma remoção à base de imagem (sem saída) a partir da memória temporária de imagem decodificada (DPB) 116. A memória temporária de imagem decodificada (DPB) 116 pode realizar 2306 uma saída de imagem (bumping) à base de unidade de acesso (AU) a partir da memória temporária de imagem decodificada (DPB) 116. A memória temporária de imagem decodificada (DPB) 116 pode realizar 2308 a decodificação e o armazenamento à base de imagem da imagem atual na memória temporária de imagem decodificada (DPB).
[00739] A memória temporária de imagem decodificada (DPB) 116 pode realizar 310 a marcação à base de imagem da imagem decodificada atual na memória temporária de imagem decodificada (DPB). A etapa de marcação realizada através da memória temporária de imagem decodificada (DPB) 116 pode ser subdividida adicionalmente para incluir tanto uma etapa de marcação de referência quanto uma etapa de marcação de saída. Conforme usado no presente documento, a marcação de imagens como “não usada para referência” ou “usada para referência” é chamada como a etapa de marcação de referência. Uma imagem decodificada na memória temporária de imagem decodificada (DPB) 116 pode ser marcada como apenas uma de “não usada para referência”, “usada para referência a curto prazo”, ou “usada para referência a longo prazo” em qualquer dado momento durante a operação de processo de decodificação. Atribuindo-se uma dentre essas marcações a uma imagem remove implicitamente outra das marcações que são atribuídas à imagem. Quando uma imagem for chamada como sendo marcada como “usada para referência,” isso se refere de modo coletivo à que é marcada como “usada para referência a curto prazo” ou “usada para referência a longo prazo”, porém, nunca ambos. Conforme usado no presente documento, a marcação de imagens como “necessária para saída” ou “não necessária para a saída” é chamada como a etapa de marcação de saída.
[00740] A memória temporária de imagem decodificada (DPB) 116 pode operar de tal maneira que a etapa de marcação de referência e a etapa de marcação de saída possam ocorrer em uma base de imagem ou em uma base de unidade de acesso (AU). Em geral, todas as combinações possíveis (tipicamente quatro combinações) de fazer essas duas etapas de marcação individualmente em uma base de imagem ou em uma base de unidade de acesso (AU) são suportadas. No entanto, pode ser preferencial que a etapa de marcação de referência seja à base de imagem e a etapa de marcação de saída seja à base de unidade de acesso (AU).
[00741] A memória temporária de imagem decodificada (DPB) 116 também pode realizar 2312 uma marcação de saída à base de unidade de acesso (AU) da imagem decodificada atual. A memória temporária de imagem decodificada (DPB) 116 pode realizar 2314 outra saída de imagem (bumping adicional) à base de unidade de acesso (AU) a partir da memória temporária de imagem decodificada (DPB) 116. Em algumas configurações, uma remoção/bumping repetida de imagens a partir da memória temporária de imagem decodificada (DPB) 116 pode ocorrer até que certas condições sejam satisfeitas.
[00742] Em algumas abordagens, as restrições de conformidade de fluxo de bits podem ser exigidas para sinalizadores no cabeçalho de segmento de fatia. Em alguns casos, as restrições podem ser aplicadas para os sinalizadores através das imagens que pertencem à mesma unidade de acesso (AU). Por exemplo, pode-se exigir que os sinalizadores pic_output_flag e/ou no_output_of_prior_pics_flag sigam as restrições de conformidade de fluxo de bits. Por exemplo, JCTVC- L1003, JCTVC-M1008 e JCT3V-D1004 descrevem, cada um, um sinalizador no cabeçalho de segmento de fatia com o uso de pic_output_flag e no_output_of_prior_pics_flag. Ademais, os sinalizadores tais como PicoutputFlag, NoRasloutputFlag e NooutputOfPriorPicsFlag são deriváveis com base nos elementos de sintaxe e nos tipos de unidade de NAL.
[00743] JCTVC-L1003, JCTVC-M1008 e JCT3V-D1004, também incluem as descrições de DPB para HEVC, para SHVC e para MV- HEVC. Texto de Rascunho 1 de JCTVC-M1008 SHVC fornece rascunho de texto para uma extensão escalonável de HEVC. Texto de Rascunho 4 JCT3V-D1004 MV-HEVC descreve o rascunho de texto para extensão de múltipla visualização de HEVC.
[00744] O fluxo de bits codificado de vídeo, de acordo com JCTVC- L1003, JCTVC-M1008 e/ou JCT3V-D1004, pode incluir estrutura de sintaxe que é colocada em pacotes de dados lógicos chamados de modo geral como Unidades de Camada de Abstração de Rede (NAL). Cada Tipo de unidade de NAL inclui um cabeçalho de unidade de NAL, tal como um cabeçalho de unidade de NAL de dois bits (por exemplo, 16 bits), para identificar o propósito da carga de dados associada. Por exemplo, cada fatia codificada (e/ou imagem) pode ser codificada em uma ou mais unidades de NAL de fatia (e/ou imagem). Outras unidades de NAL podem ser incluídas para outras categorias de dados, tal como, por exemplo, informações de otimização suplementar, uma imagem de fatia codificada de acesso de subcamada temporal (TSA), uma fatia codificada de imagem acesso de subcamada temporal faseado (STSA), um não TSA de fatia codificada a, imagem de posterior de não STSA, uma fatia codificada de imagem de acesso de enlace desfeito, uma fatia codificada de imagem de atualização decodificada instantânea, uma fatia codificada de imagem de acesso de aleatório limpo, uma fatia codificada de imagem de anterior decodificável, uma fatia codificada de marcação para descartar imagem, um conjunto de parâmetros de vídeo, conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, delimitador de unidade de acesso, um fim de sequência, um fim de fluxo de bits, dados de preenchimento e/ou uma mensagem de informações de otimização de sequência. A Tabela (7) abaixo ilustra um exemplo de Códigos de unidade NAL e classes de tipo de unidade NAL. Outros tipos de unidade de NAL também podem ser incluídos, conforme desejado.
[00745] Deve-se entender também que os valores de tipo de unidade de NAL para as unidades de NAL mostradas na Tabela (7) podem ser redispostos e reatribuídos. Ademais, tipos de unidade de NAL adicionais podem ser adicionados ou removidos.
[00746] Uma imagem de ponto de acesso interaleatório (IRAP) é uma imagem codificada para a qual cada unidade de NAL de camada de codificação de vídeo que tem nal_unit_type em uma faixa de BLA_W_LP a RSV_IRAP_VCL23, inclusive, conforme mostrado na Tabela (7) abaixo. Uma imagem de IRAP inclui apenas Fatias (I) intracodificadas.
[00747] Uma imagem de atualização de decodificação instantânea (IDR) é uma imagem de IRAP para a qual cada unidade de NAL de camada de codificação de vídeo tem nal_unit_type igual a IDR_W_RADL ou IDR_N_LP, conforme mostrado na Tabela (7). Uma imagem de atualização de decodificação instantânea (IDR) inclui apenas fatias I e pode ser a primeira imagem no fluxo de bits na ordem de decodificação, ou pode aparecer posteriormente no fluxo de bits.
[00748] Cada imagem de IDR é a primeira imagem de uma sequência de vídeo decodificada (CVS) na ordem de decodificação. Uma imagem de acesso de enlace desfeito (BLA) é uma imagem de IRAP para a qual cada unidade de NAL de camada de codificação de vídeo tem nal_unit_type igual a BLA_W_LP, BLA_W_RADL, ou BLA_N_LP, conforme mostrado na Tabela (7).
[00749] Uma Imagem de BLA inclui apenas as fatias I e pode ser a primeira imagem no fluxo de bits na ordem de decodificação ou pode aparecer posteriormente no fluxo de bits. Cada imagem de BLA começa uma nova sequência de vídeo decodificada e tem o mesmo efeito no processo de decodificação como uma Imagem de IDR. No entanto, uma imagem de BLA inclui elementos de sintaxe que especificam um conjunto de imagem de referência não vazio. [TABELA 42]
Figure img0061
Figure img0062
Figure img0063
[00750] Referindo-se à Tabela (8) abaixo, a sintaxe de cabeçalho de unidade de NAL pode incluir dois bits de dados, a saber, 16 bits. O primeiro bit pode ser um “forbidden_zero_bit” que é sempre definido como zero no início de um tipo de unidade de NAL. Os próximos seis bits podem ser um “nal_unit_type” que especifica o tipo de estrutura de dados de carga de sequência de bits brutos (“RBSP”) incluída no tipo de unidade de NAL conforme mostrado na Tabela (7) acima. Os próximos 6 bits podem ser um “nuh_layer_id” que especifica o identificador da camada. Em alguns casos, esses seis bits podem ser especificados como “nuh_reserved_zero_6bits” em vez disso. O nuh_reserved_zero_6bits pode ser igual a 0 na especificação-base do padrão. Em uma codificação de vídeo escalonável e/ou extensões de sintaxe, nuh_layer_id pode especificar que esse tipo de unidade de NAL particular pertence à camada identificada pelo valor desses 6 bits.
[00751] Os próximos elementos de sintaxe podem ser “nuh_temporal_id_plus1”. O nuh_temporal_id_plus1 menos 1 pode especificar um identificador temporal para o tipo de unidade de NAL. I identificador temporal variável TemporalId pode ser especificado como TemporalId = nuh_temporal_id_plus1 - 1. O identificador temporal TemporalId é usado para identificar uma subcamada temporal. A variável HighestTid identifica a subcamada temporal mais alta a ser decodificada. [TABELA 43]
Figure img0064
[00752] A Tabela (9) abaixo mostra uma estrutura de sintaxe de conjunto de parâmetros de sequência (SPS) exemplificativa. pic_width_in_luma_samples especifica a espessura de cada imagem decodificada nas unidades de amostras de luminância. pic_width_in_luma_samples não deve ser igual a 0. pic_height_in_luma_samples especifica a altura de cada imagem decodificada nas unidades de amostras de luminância. pic_height_in_luma_samples não deve ser igual a 0.
[00753] sps_max_sub_layers_minus1 mais 1 especifica o número máximo de subcamadas temporais que podem estar presentes em cada CVS que se referindo ao SPS. O valor de sps_max_sub_layers_minus1 está em uma faixa de 0 a 6, inclusive.
[00754] O sinalizador sps_sub_layer_ordering_info_present_flag igual a 1 especifica que os elementos de sintaxe de sps_max_dec_pic_buffering_minus1[ i ], sps_max_num_reorder_pics[ i ] e sps_max_latency_increase_plus1[ i ] estão presentes para as subcamadas sps_max_sub_layers_minus1 + 1. sps_sub_layer_ordering_info_present_flag igual a 0 especifica que os valores de sps_max_dec_pic_buffering_minus1[ sps_max_sub_layers_minus1 ], sps_max_num_reorder_pics[ sps_max_sub_layers_minus1 ] e sps_max_latency_increase_plus1[ sps_max_sub_layers_minus1 ] se aplicam a todas as subcamadas.
[00755] sps_max_dec_pic_buffering_minus1[ i ] mais 1 especifica que o tamanho máximo necessário da memória temporária de imagem decodificada para o CVS nas unidades de memória temporária de armazenamento de imagem quando HighestTid for igual a i. O valor de sps_max_dec_pic_buffering_minus1[ i ] está em uma faixa de 0 a MaxDpbSize - 1, inclusive em que MaxDpbSize especifica o tamanho máximo de memória temporária de imagem decodificada nas unidades de memória temporária de armazenamento de imagem. Quando i for maior que 0, sps_max_dec_pic_buffering_minus1[ i ] será maior que ou igual a sps_max_dec_pic_buffering_minus1[ i - 1 ]. Quando sps_max_dec_pic_buffering_minus1[ i ] não estiver presente para i em uma faixa de 0 a sps_max_sub_layers_minus1 - 1, inclusive, devido ao sps_sub_layer_ordering_info_present_flag ser igual a 0, o mesmo será inferido igual a sps_max_dec_pic_buffering_minus1[ sps_max_sub_layers_minus1 ].
[00756] sps_max_num_reorder_pics[ i ] indica o número máximo permitido de imagens que pode preceder qualquer imagem no CVS na ordem de decodificação e permite que a imagem na ordem de saída quando HighestTid for igual a i. O valor de sps_max_num_reorder_pics[ i ] está em uma faixa de 0 a sps_max_dec_pic_buffering_minus1[ i ], inclusive. Quando i for maior que 0, sps_max_num_reorder_pics[ i ] pode ser maior que ou igual a sps_max_num_reorder_pics[ i - 1 ]. Quando sps_max_num_reorder_pics[ i ] não estiver presente para i em uma faixa de 0 a sps_max_sub_layers_minus1 - 1, inclusive, devido ao sps_sub_layer_ordering_info_present_flag ser igual a 0, o mesmo será inferido igual a sps_max_num_reorder_pics[ sps_max_sub_layers_minus1 ].
[00757] sps_max_latency_increase_plus1[ i ] não igual a 0 pode ser usada para computar o valor de SpsMaxLatencyPictures[ i ], que especifica o número máximo de imagens que pode preceder qualquer imagem no CVS na ordem de saída e segue que a imagem na ordem de decodificação quando HighestTid for igual a i. Quando sps_max_latency_increase_plus1[ i ] não for igual a 0, O valor de SpsMaxLatencyPictures[ i ] será especificado como SpsMaxLatencyPictures[ i ] = sps_max_num_reorder_pics[ i ] + sps_max_latency_increase_plus1[ i ] - 1. Quando sps_max_latency_increase_plus1[ i ] for igual a 0, nenhum limite correspondente será expresso.
[00758] O valor de sps_max_latency_increase_plus1[ i ] está em uma faixa de 0 a 232 - 2, inclusive. Quando sps_max_latency_increase_plus1[ i ] não estiver presente para i em uma faixa de 0 a sps_max_sub_layers_minus1 - 1, inclusive, devido ao sps_sub_layer_ordering_info_present_flag ser igual a 0, o mesmo será inferido igual a sps_max_latency_increase_plus1[ sps_max_sub_layers_minus1 ]. [TABELA 44]
Figure img0065
[00759] Ademais, JCTVC-L1003 descreve o padrão HEVC. Por exemplo, detalhes sobre pic_out_flag e sobre no_output_of_prior_pics_flag são fornecidos na Tabela (10) abaixo: [TABELA 45]
Figure img0066
[00760] Na Tabela (10), no_output_of_prior_pics_flag afeta a saída de imagens decodificadas anteriormente na memória temporária de imagem decodificada (DPB) após a decodificação de um IDR ou uma imagem de BLA que não é a primeira imagem no fluxo de bits conforme especificado no Anexo C de JCTVC-L1003.
[00761] output_flag_present_flag igual a 1 indica que o elemento de sintaxe pic_output_flag está presente no cabeçalho de fatias associado. output_flag_present_flag igual a 0 indica que o elemento de sintaxe pic_output_flag não está presente no cabeçalho de fatias associado. pic_output_flag afeta os processos de saída e de remoção de imagem decodificada conforme especificado no Anexo C de JCTVC-L1003. Quando pic_output_flag não está presente, o mesmo será inferido igual a 1.
[00762] Para o processo de decodificação geral (conforme constatado em 8.1 de JCTVC-L1003), PicoutputFlag é definido conforme o seguinte:
[00763] - Se a imagem atual for uma Imagem de RASL e NoRasloutputFlag da imagem de IRAP associada for igual a 1, PicoutputFlag pode ser definida como igual a 0.
[00764] - De outra forma, PicoutputFlag pode ser definida como igual a pic_output_flag.
[00765] Adicionalmente, durante o processo de decodificação geral para imagens de referência indisponíveis de geração (conforme constatado na seção 8.3.3.1 de JCTVC-L1003), o valor de PicoutputFlag para a imagem gerada pode ser definida como igual a 0 sob certas condições.
[00766] Quando a imagem atual for uma Imagem de IRAP, o seguinte se aplica:
[00767] - Se a imagem atual for uma imagem de IDR, uma imagem de BLA, a primeira imagem no fluxo de bits na ordem de decodificação ou a primeira imagem que segue um fim de tipo de unidade de NAL de sequência na ordem de decodificação, a variável NoRasloutputFlag pode ser definida como igual a 1.
[00768] - De outra forma, se alguns meios externos não especificados em JCTVC-L1003 estiverem disponíveis para definir a variável HandleCraAsBlaFlag a um valor para uma imagem atual, a variável HandleCraAsBlaFlag pode ser definida como igual ao valor contato que os meios externos e a variável NoRasloutputFlag possam ser definidos como igual a HandleCraAsBlaFlag.
[00769] - De outra forma, a variável HandleCraAsBlaFlag pode ser definida como igual a 0 e a variável NoRasloutputFlag pode ser definida como igual a 0.
[00770] Conforme descrito acima, a unidade de acesso (AU) se refere a um conjunto de unidades de camada de abstração de rede que são associados entre si de acordo com uma regra de classificação especificada, que são consecutivos na ordem de decodificação, e que inclui as unidades de NAL de camada de codificação de vídeo (VCL) de todas as imagens codificadas associadas com o mesmo tempo de saída e suas não unidades de NAL de VCL associadas. A camada- base é uma camada na qual todas as unidades de NAL de VCL tem um nuh_layer_id igual a 0. Uma imagem codificada é uma representação codificada de uma imagem que inclui as unidades de NAL de VCL com um valor particular de nuh_layer_id e que inclui todas as unidades de árvore de codificação da imagem. Em alguns casos, uma imagem codificada pode ser chamada como um componente de camada. Os detalhes adicionais sobre as etapas que são à base de imagem ou à base de unidade de acesso (AU) são dados em relação às Figuras 69 e 70 abaixo.
[00771] Em algumas configurações, as restrições de conformidade de fluxo de bits para pic_output_flag e/ou no_output_of_prior_pics_flag podem ser usadas para imagens codificadas em uma unidade de acesso (AU). Além disso, três novos sinalizadores de saída de unidades de acesso, o sinalizador de saída de AU (por exemplo, AuoutputFlag), sinalizador sem saída de rasl de AU (por exemplo, AuNoRasloutputFlag) e sinalizador sem saída de AU de imagens anteriores (por exemplo, AuNooutputOfPriorPicsFlag), podem ser derivados para um AU com base no valor de diversos elementos de sintaxe e tipos de unidade de NAL para as imagens codificadas no AU. Em algumas configurações, a saída e a remoção das imagens podem ter como base nesses três sinalizadores (por exemplo, AuoutputFlag, AuNoRasloutputFlag e AuNooutputOfPriorPicsFlag) para SHVC e HEVC de múltipla visualização.
[00772] Por exemplo, as restrições de conformidade de fluxo de bits para extensões de HEVC podem ser seguidas conforme descrito nos sistemas e nos métodos no presente documento. Em particular, as restrições de conformidade de fluxo de bits podem ser aplicadas ao Fluxo de bits de SHVC. Além disso, as restrições de conformidade de fluxo de bits podem ser aplicadas para o Fluxo de bits de MV-HEVC.
[00773] Em uma configuração, quando presente, pode-se exigir que o valor dos elementos de sintaxe de cabeçalho de segmento de fatia pic_output_flag seja o mesmo em todos os cabeçalhos de segmento de fatias de imagens codificadas em uma unidade de acesso (AU). Em outra configuração, o valor dos elementos de sintaxe de cabeçalho de segmento de fatia pic_output_flag, quando presentes, pode ser o mesmo em todos os cabeçalhos de segmento de fatias das imagens codificadas em uma unidade de acesso (AU) quando as imagens codificadas tiverem o mesmo tipo de unidade de NAL.
[00774] Em uma configuração, quando presente, o valor dos elementos de sintaxe de cabeçalho de segmento de fatia pic_output_flag para os segmentos de fatia com nuh_layer_id igual ao valor de nuh_layer_id de uma camada-alvo pode ser o mesmo em todos os cabeçalhos de segmento de fatias de tais imagens codificadas em uma unidade de acesso (AU). Em outra configuração, quando presente, o valor dos elementos de sintaxe de cabeçalho de segmento de fatia pic_output_flag para os segmentos de fatia com nuh_layer_id não igual ao valor de nuh_layer_id de uma camada-alvo pode ser 0 em todos os cabeçalhos de segmento de fatias de tais imagens codificadas em uma unidade de acesso (AU).
[00775] Em uma configuração, uma camada-alvo pode ser uma camada que pertence a um conjunto de camadas ou um conjunto de camadas-alvo ou um conjunto de camadas de saída conforme definido em JCTVC-L1003, JCTVC-M1008 ou JCT3V-D1004. Em outra configuração, uma camada-alvo pode ser uma camada que se destina a ser decodificada. Em ainda outra configuração, uma camada-alvo pode ser uma camada que se destina a ser decodificada e emitida (exibida ou de outra forma, enviada para saída).
[00776] Em algumas configurações, quando presente, o valor dos elementos de sintaxe de cabeçalho de segmento de fatia no_output_of_prior_pics_flag pode ser a mesma em todos os cabeçalhos de segmento de fatias de imagens codificadas em uma unidade de acesso (AU). Em outras configurações, quando presente, o valor dos elementos de sintaxe de cabeçalho de segmento de fatia no_output_of_prior_pics_flag pode ser o mesmo em todos os cabeçalhos de segmento de fatias de imagens codificadas em uma unidade de acesso (AU) quando as imagens codificadas têm o mesmo tipo de unidade de NAL. Em uma configuração, quando presente, o valor dos elementos de sintaxe de cabeçalho de segmento de fatia no_output_of_prior_pics_flag para os segmentos de fatia com nuh_layer_id igual ao valor de nuh_layer_id de uma camada-alvo pode ser o mesmo em todos os cabeçalhos de segmento de fatias de tais imagens codificadas em uma unidade de acesso (AU).
[00777] Em outra configuração, os elementos de sintaxe pic_output_flag e/ou no_output_of_prior_pics_flag não podem ser sinalizados quando nuh_layer_id > 0. Nesse caso, os valores para as camadas com nuh_layer_id > 0 podem ser inferidos como sendo iguais a seus valores sinalizados para nuh_layer_id igual a 0.
[00778] Em algumas configurações, os sinalizadores adicionais, tal como AuoutputFlag e AuNoRasloutputFlag podem ser empregados. Os sinalizadores AuoutputFlag e AuNoRasloutputFlag podem ser derivados de acordo com um número de abordagens. Em uma abordagem ou configuração, os dois sinalizadores, AuoutputFlag e AuNoRasloutputFlag podem ser derivados e usados para Operação de DPB. AuoutputFlag pode ser definida como igual a 1 se PicoutputFlag for igual a 1 para todas as imagens no AU. De outra forma, AuoutputFlag pode ser definido igual a 0.
[00779] Em outra abordagem, AuoutputFlag pode ser definido como igual a 1 se PicoutputFlag for igual a 1 para pelo menos uma imagem no AU. De outra forma, AuoutputFlag pode ser definido igual a 0. Desse modo, nesse caso, o AuoutputFlag pode ser definido igual a 0 se PicoutputFlag for igual a 0 para todas as imagens em um AU.
[00780] Em ainda outra abordagem, AuoutputFlag pode ser definido igual a 1 se PicoutputFlag for igual a 1 para imagens que pertencem a todas as camadas-alvo de saída no AU. De outra forma, AuoutputFlag pode ser definido igual a 0.
[00781] Em ainda outra abordagem, AuoutputFlag pode ser definida como igual a 1 se PicoutputFlag for igual a 1 para imagem que pertence a pelo menos uma das camadas-alvo de saída no AU. De outra forma, AuoutputFlag pode ser definida como igual a 0.
[00782] Em uma abordagem, AuNoRasloutputFlag pode ser definida como igual a 1 se NoRasloutputFlag for igual a 1 para todas as imagens no AU. De outra forma, AuNoRasloutputFlag pode ser definida como igual a 0.
[00783] Em outra abordagem, AuNoRasloutputFlag pode ser definido igual a 1 se NoRasloutputFlag for igual a 1 para pelo menos uma imagem no AU. De outra forma, AuNoRasloutputFlag pode ser definido igual a 0. Desse modo, nesse caso, o AuNoRasloutputFlag pode ser definido igual a 0 se NoRasloutputFlag for igual a 0 para todas as imagens em um AU.
[00784] Em ainda outra abordagem, AuNoRasloutputFlag pode ser definida como igual a 1 se NoRasloutputFlag for igual a 1 para as imagens que pertencem a todas as camadas-alvo de saída no AU. De outra forma, AuNoRasloutputFlag pode ser definido igual a 0.
[00785] Em ainda outra abordagem, AuNoRasloutputFlag pode ser definido como igual a 1 se NoRasloutputFlag for igual a 1 para imagem que pertence a pelo menos uma das camadas-alvo de saída no AU. De outra forma, AuNoRasloutputFlag pode ser definido igual a 0.
[00786] Em parta das abordagens e configurações acima, a Operação de DPB pode usar o AuoutputFlag no lugar do PicoutputFlag. Adicionalmente, a operação de DPB pode usar AuNoRasloutputFlag no lugar do NoRasloutputFlag.
[00787] Os exemplos mostram o uso dos sinalizadores de saída de AU, tais como AuoutputFlag e AuNoRasloutputFlag, de acordo com os sistemas e os métodos presentes, que são fornecidos abaixo na Listagem (1A) e na Listagem (2A) abaixo. Ademais, conforme descrito abaixo na Listagem (1), na Listagem (1A), na Listagem (2) e na Listagem (2A), o sinalizador de saída de AU AuNooutputOfPriorPicsFlag pode ser derivado e usado para a operação de DPB.
[00788] Os sistemas e métodos presentes podem ser implantados através de alterações aos documentos padrões. A Listagem (1) abaixo fornece as seções de JCTVC-L1003 que seriam alteradas para acomodar os sistemas e métodos presentes.
LISTAGEM 1 C.3 OPERAÇÃO DA MEMÓRIA TEMPORÁRIA DE IMAGEM DECODIFICADA (DPB) C.3.1 GERAL
[00789] A especificação nesta subcláusula se aplica de modo independente a cada conjunto de parâmetros de DPB selecionados conforme especificado na subcláusula C.1. O DPB opera de modo separado ou de modo independente para cada camada. Desse modo, as seguintes etapas ocorrem de modo separado para cada imagem decodificada com um valor particular de nuh_layer_id.
[00790] A memória temporária de imagem decodificada contém memória temporária de armazenamento de imagem. Cada camada consiste em seu próprio conjunto de memória temporária de armazenamento de imagem. Desse modo, as memórias temporárias de armazenamento de imagem de cada camada são associadas ao valor de nuh_layer_id da camada. Cada uma das memórias temporárias de armazenamento de imagem pode conter uma imagem decodificada que é marcada como “usada para referência” ou ser mantida para saída futura. Os processos especificados nas subcláusulas C3.2, C.3.3 e C.3.4 são subsequencialmente aplicados conforme especificado abaixo.
C.3.2 REMOÇÃO DE IMAGENS A PARTIR DO DPB
[00791] A remoção das imagens a partir do DPB antes da decodificação da imagem atual (porém, após a análise do 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 que pertence à unidade de acesso n (que contém a imagem atual) e prossegue conforme o seguinte:
[00792] - O processo de decodificação para RPS conforme especificado na subcláusula 8.3.2 é invocado.
[00793] Quando a imagem atual for uma imagem de MAP com NoRasloutputFlag igual a 1 que não for imagem 0, as seguintes etapas ordenadas são aplicadas:
[00794] 1. A variável NooutputOfPriorPicsFlag será derivada para o decodificador sob teste conforme o seguinte:
[00795] - Se a imagem atual for uma imagem de CRA, NooutputOfPriorPicsFlag será definido igual a 1 (independente do valor de sem saída of_prior_pics_flag).
[00796] - De outra forma, se o valor de pic_width_in_luma_samples, de pic_height in_luma_samples ou de sps_max_clec pic_buffering_minusll HighestTid derivados do SPS ativo correspondentes ao valor de nuh_layer_id da imagem atual for diferente do valor de pic_width_in_luma_samples, de pic_height in_luma_samples, ou de sps_max dee_pic_buffering_minusll HighestTid ], respectivamente, derivado a partir do SPS ativo para a imagem precedente com o valor de nuh_layer_id igual ao valor de nuh_layer_id da imagem atual, NooutputOtPriorPiesFlag pode ser (porém, não deve) definido a I através do decodificador sob teste, independente do valor de no_output_of priouncs_flag.
[00797] OBSERVAÇÃO - Embora a definição de NooutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificador sob teste é deixado definir NooutputOfPriorPicsFlag a I, nesse caso.
[00798] - De outra forma, Nooutput0iPriorPicsFlag é definido igual a no_output of_prior_pics_flag.
[00799] 2. O valor de NooutputOfPriorPicsFlag derivado para o decodificador sob teste é aplicado para o HRD, de modo que quando o valor de NooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem correspondente ao valor de nuh_layer_id da imagem atual no DPB serão esvaziadas sem saída das imagens que as mesmas contêm e a integralidade de DPB para o valor de nuh_layer_id da imagem atual será definida como igual a 0.
[00800] Em uma modalidade, o valor de NooutputOfPriorPicsFlag derivado para o decodificador sob teste é aplicado para o HRD, de modo que quando o valor de NooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem correspondentes a todos os valores de nuh_layer_id no DPB serão esvaziados sem saída das imagens que as mesmas contêm e a integralidade de DPB para todos os valores de nuh_layer_id será definida como igual a 0.
[00801] Em uma modalidade, o valor de NooutputOfPriorPicsFlag derivado para o decodificador sob teste será aplicado para o HRD, de modo que quando o valor de NooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem PSB[cuffLayerId] com currLayerld igual ao valor de nuh_layer_id da imagem atual no DPB serão esvaziados sem saída das imagens que as mesmas contêm e a Integralidade de DPB DPBFullness[currLayerId] para o valor de nuh_layer_id currLayerld da imagem atual será definido igual a 0.
[00802] Em uma modalidade, o valor de NooutputOfPriorPicsFlag derivado para o decodificador sob teste será aplicado para o HRD, de modo que quando o valor de NooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem PSB[nuh_layer_id] para todos os valores de nuh_layer_id no DPB serão esvaziados sem saída das imagens que as mesmas contêm e a integralidade de DPB DPBFullness[nuh_layer_id] para todos os valores de nuh_layer_id será definida como igual a 0.
[00803] - Quando ambas as seguintes condições forem verdadeiras para quaisquer imagens k na memória temporária de armazenamento de imagem correspondente ao valor de nuh_layer_id da imagem atual no DPB, todas as imagens k no DPB serão removidas a partir do DPB:
[00804] - a imagem k é marcada como “não usada para referência”
[00805] - a imagem k tem PicoutputFlag igual a 0 ou seu Tempo de saída de DPB é menor que ou igual ao tempo de remoção de CPB da primeira unidade de decodificação (chamado como unidade de decodificação m) da imagem atual n; isto é, DpboutputTimc[ k ] é menor que ou igual a CpbRemovalTime( m )
[00806] - Para cada imagem que é removida a partir do DPB, a integralidade de DPB é diminuída por um.
[00807] - Em uma modalidade, para cada imagem k que têm valor de nuh_layer_id nuhLayerldk que é removido a partir do DPB, a integralidade de DPB DPBfullness[nuhLayerIdk] é diminuída por um.
C.3.3 SAÍDA DE IMAGEM
[00808] Os processos especificados nesta subcláusula acontecem instantaneamente no tempo de remoção de CPB da unidade de acesso n, AuCpbRemovalThne [n].
[00809] Quando a imagem n tiver PicoutputFlag igual a 1, seu tempo de saída de DPB DpboutputTime[ n ] é derivado como se segue, em que a variável firstPieInBufferingPeriodFlag é igual a 1 se a unidade de acesso n for a primeira unidade de acesso de um período de memória temporária e 0 o contrário: If(!SubPiclindriag){ DpboutputTime[ n ] = AuCpbRemovalTime[ n ]+ ClockTick * picDpboutputDelay (C-16) if( firstFicInBufferingPeriodFlag ) DpboutputTime[ n ]—= ClockTick • DpbDelayOffset) ou DpboutputTime[ n ]= AuCpbRemovalTime[ n ] + ClockSubTick * picSptDpboutputDuDelay
[00810] em que picDpboutputDelay é o valor de pic_dpb_output_delay na mensagem SEI de tempo de imagem associada à unidade de acesso n e picSptDpboutputDuDelay é o valor de pic_spt_dpb_output du_delay, quando presente, na mensagens SEI de informação de unidade de decodificação associadas à unidade de acesso n, ou o valor de pic_dpb_output_du_delay na mensagem SEI de tempo de imagem associadas à unidade de acesso n quando não houver mensagem SEI de informações de unidade de decodificação associada à unidade de acesso n ou quando nenhuma mensagem SEI de informações de unidade de decodificação associada à unidade de acesso n tiver pic_spt dpb output_du_delay presente.
[00811] OBSERVAÇÃO - Quando os elementos de sintaxe pic_spt_dpb_output_du_delay não estiverem presentes em qualquer mensagem SEI de informações de unidade de decodificação associada à unidade de acesso n, o valor será inferido como igual a pic_dpb_output du_delay na mensagem SEI de tempo de imagem associada à unidade de acesso n.
[00812] A saída da imagem atual se seu nuh_layer_id pertencer à camada na TargetDecLaycrIdList será especificada conforme segue:
[00813] - Se PicoutputFlag for igual a 1 e DpboutputTime[ n ] for igual a AuCpbRemovalTime[ n ], a imagem atual será emitida.
[00814] - De outra forma, se PicoutputFlag for igual a 0, a imagem atual não será emitida, porém, será armazenada na memória temporária de armazenamento de imagem correspondente ao valor de nuh_layer_id da imagem atual no DPB conforme especificado na subcláusula C.3.4.
[00815] Em uma modalidade: De outra forma, se PicoutputFlag for igual a 0, a imagem atual não será emitida, porém, será armazenada na memória temporária de armazenamento de imagem PSB[currLayerld] correspondente ao valor de nuh_layer_id currLayerid da imagem atual no DPB conforme especificado na subcláusula C.3.4.
[00816] De outra forma, (PicoutputFlag é igual a 1 e DpboutputTime[ n ] é maior que AuCpbRemovalTime[ n ] ), a imagem atual é emitida e será armazenada na memória temporária de armazenamento de imagem correspondente ao valor de nuh_layer_id da imagem atual no DPB (conforme especificado na subcláusula C.3.4) e é emitida no tempo DpboutputTime[ n ] salvo indicação para não ser emitida através da decodificação ou inferência de no_output_of_prior_pics_flag igual a I em um tempo que precede DpboutputTime [n].
[00817] Em outra modalidade, as etapas acima são especificadas para:
[00818] A saída da imagem atual se seu nuh_layer_id pertencer a uma camada que pertence ao conjunto de camadas de saída correspondente ao ponto de operação (atual).
[00819] Em ainda outra modalidade, as etapas acima são especificadas para:
[00820] A saída da imagem atual (sem verificar se a mesma pertence ao TargetDecLayerIdList ou o conjunto de camadas de saída para o ponto de operação atual).
[00821] Quando emitida, a imagem é cortada, com o uso da janela de corte de conformidade especificada no SPS ativo para a imagem.
[00822] Quando a imagem n for uma imagem que é emitida e não for a última imagem do fluxo de bits que é emitida, o valor da variável DpboutputIntervalf n 1 será derivado como se segue: DphoutputInterval[ n ]= DpboutputTime[ nextPielnoutputOrder ] — DpboutputTime[ n ](C-17)
[00823] em que nextPicInoutputOrder é a imagem que segue a imagem n na ordem de saída e tem PicoutputFlag igual a 1.
C.3.4 MARCAÇÃO E ARMAZENAMENTO DE IMAGEM DECODIFICADA ATUAL
[00824] O processo especificado nesta subcláusula acontece instantaneamente no tempo de remoção de CPB da unidade de acesso n, CpbRemovalTime[n].
[00825] A imagem decodificada atual é armazenada no DPB em uma memória temporária de armazenamento de imagem vazia correspondente ao valor de nuh_layer_id da imagem atual, a integralidade de DPB para o valor de nuh_layer_id da imagem atual é incrementado por um e a imagem atual é marcada como “usada para referência a curto prazo”.
[00826] Em uma modalidade:
[00827] A imagem decodificada atual com nuh_layer_id igual a currLayerId é armazenada no DPB em uma memória temporária de armazenamento de imagem vazia PSB[currLayerId] com currLayertd igual a valor de nuh_layer_id da imagem atual no DPB, a integralidade de DPB para o valor de nuh_layer_id da imagem atual DPBFullness[currLayerId] é incrementado por um e a imagem atual é marcada como “usada para referência a curto prazo”.
C4 CONFORMIDADE DE FLUXO DE BITS
[00828] A especificação na subcláusula C.4 se aplica.
C.5 CONFORMIDADE DE DECODIFICADOR
[00829] F.8.1.1 C.5.1 Geral
[00830] A especificação na subcláusula C.5.1 se aplica.
LISTAGEM (1)
[00831] Conforme usado na Listagem (1) acima, PSB se refere a uma memória temporária de armazenamento de imagem. DPBFullness se refere a uma variável usada para descrever a integralidade da memória temporária de imagem decodificada (DPB) 116.
[00832] A Listagem (1A) abaixo fornece uma abordagem alternativa à seção C.3.2 da Listagem (1) de acordo com a acomodação dos sistemas e métodos presentes. Em algumas configurações, a Listagem (1A) pode apenas representar as alterações à seção C.3.2 no documento JCTVC-L1003. A Listagem (1A) pode usar os sinalizadores AuNooutputOfPriorPicsFlag e AuNoRasloutputFlag definidos acima.
C.3.2 REMOÇÃO DE IMAGENS A PARTIR DE DPB
[00833] A remoção de imagens a partir do DPB antes da decodificação da imagem atual (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 que pertence à unidade de acesso n (que contém a imagem atual) e prossegue conforme o seguinte;
[00834] - O processo de decodificação para RPS conforme especificado na subcláusula 8.3.2 é invocado.
[00835] - Quando a imagem atual for uma imagem de IRAP com AuNoRasloutputFlag igual a 1 que não é uma imagem 0, as seguintes etapas ordenadas serão aplicadas:
[00836] - Em outra configuração, quando a imagem atual for uma Imagem de TRAP com NoRaslOuipirtFlag igual a 1 que não é uma imagem 0, as seguintes etapas ordenadas serão aplicadas:
[00837] 1. A variável AuNooutputOfPriorPicsFlag é derivada para o decodificador sob teste conforme o seguinte:
[00838] - Se a imagem atual for uma imagem de CRA, AuNooutputOfPriorPicsFlag será definido igual a I (independente do valor de no_output_of_prior_pics_flag para a imagem atual ou outras imagens no AU).
[00839] - De outra forma, se o valor de pic_width_in_uma_samples, de pic_height_in_lurna_samples ou de sps_max_dec_pic_buffering_minus1 [HighesTid derivado a partir do SPS ativo for diferente do valor de pic_width_in_lurna_samples, de pic_height_in_hung_samples ou de sps_max_dec_pic_huffering_minuslI HighestTid ], respectivamente, derivados a partir do SPS ativo para uma imagem precoce, AuNooutputOtPriorficsFlag pode ser (porém, não deve) definido como 1 através do decodificador sob teste, independente do valor de no_output_of_prior_pics_flag.
[00840] OBSERVAÇÕES - Embora a definição de AuNooutputOIPriorPiesFlag igual a no_output_of_prior_pics_fiag seja preferida sob essas condições, o decodificador sob teste é deixado definir AuNoCrutputOIPriorPiesFlag para 1 nesse caso.
[00841] De outra forma, AuNooutputOfPriorPicsFlag é definido com base no valor de no_output_of_prior_pics_flag para uma imagem atual e outras imagens no AU conforme o seguinte:
[00842] - AuNooutputOfPriorPicsFlag é definido igual a 1 se no_output_of_prior_pics_flag for igual a I para pelo menos uma imagem no AU. De outra forma, AuNooutputOfPriorPicsFlag é definido igual a 0. Desse modo, nesse caso o AuNooutputO1PriorPiesFlag é definido igual a 0 se no_output_of_prior_pics_flag for igual a 0 para todas as imagens em um AU.
[00843] - Em outra modalidade, AuNooutputOfPriorPicsFlag é definido igual a 1 se o sinalizador no_output_of_prior_pics for igual a 1 para uma imagem atual. De outra forma, AuNooutputOfPriorPicsFlag é deixado sem alteração.
[00844] - Em outra modalidade, AuNooutputOfPriorPicsFlag é definido igual a 1 se no_output_of_prior_pics_flag for igual a 1 para todas as imagens no AU. De outra forma, AuNooutputOfPriorPicsFlag é definido igual a 0.
[00845] - Em outra modalidade, AuNooutputOfPriorPicsFlag é definido igual a 1 se no_output of_prior_pics_flag for igual a 1 para todas as imagens que pertencem às camadas-alvo de saída no AU. De outra forma, AuNooutputOfPriorPicsFlag é definido igual a 0.
[00846] - Em outra modalidade, AuNooutputOfPriorPicsElag é definido igual a 1 se no_output of_prior_pics_flag for igual a 1 para pelo menos uma imagem que pertence às camadas-alvo de saída no AU. De outra forma, AuNooutputOfPriorPicsFlag é definido igual a 0.
[00847] 2. O valor de AuNooutputOfPriorPicsFlag derivado para o decodificador sob teste é aplicado para o HRD, de modo que quando o valor de AuNooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem correspondentes a todos os valores de nuh_layer_id no DPB serão esvaziados sem saída das imagens que as mesmas contêm e a integralidade de DPB para todos os valores de nuh_layer_id será definida como igual a 0.
[00848] Em outra modalidade, o valor de AuNooutputOfPriorPicsFlag derivado para o decodificador sob teste é aplicado para o HRD, de modo que quando o valor de AuNooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem correspondentes ao valor de nuh_layer_id da imagem atual no DPB serão esvaziadas sem saída das imagens que as mesmas contêm e a integralidade de DPB para o valor de nuh_layer_id da imagem atual será definida como igual a O.
LISTAGEM (1A)
[00849] A Listagem (2) abaixo fornece as seções de JCTVC-L1008 que serial alteradas para acomodar os sistemas e os métodos presentes.
LISTAGEM 2 F.13 DECODIFICADOR HIPOTÉTICO DE REFERÊNCIA F.13.1 GERAL
[00850] A especificação na subcláusula C.1 se aplica.
F.13.2 A OPERAÇÃO DE MEMÓRIA TEMPORÁRIA DE IMAGEM CODIFICADA (CPB)
[00851] A especificação na subcláusula C.2 se aplica.
F.13.3 A OPERAÇÃO DA MEMÓRIA TEMPORÁRIA DE IMAGEM DECODIFICADA (DPB)
[00852] A especificação na subcláusula C.3 se aplica de modo separado para cada conjunto de imagens decodificadas com um valor particular de nuh_layer id.
[00853] PicoutputFlag para as imagens que não são incluídas em uma camada-alvo de saída é definido igual a 0.
[00854] As imagens decodificadas com o mesmo Tempo de saída de DPB e com PicoutputFlag igual a 1 são emitidos na ordem ascendente de valores de nuh_laycr_id dessas imagens decodificadas.
F.13.5 CONFORMIDADE DE DECODIFICADOR F.13.5.1 GERAL
[00855] A especificação na subcláusula C.5.1 se aplica.
F.13.5.2 A OPERAÇÃO DO DPB DE ORDEM DE SAÍDA F.13.5.2.1 GERAL
[00856] A memória temporária de imagem decodificada contém a memória temporária de armazenamento de imagem. Cada camada consiste em seu próprio conjunto de memória temporária de armazenamento de imagem. Desse modo, as memórias temporárias de armazenamento de imagem de cada camada são associadas ao valor de nuh_layer_id da camada. O número de memória temporária de armazenamento de imagem para nuh_layer_id igual a 0 é derivado a partir do SPS ativo da camada com nuh_layer_id igual a 0. O número de memória temporária de armazenamento de imagem para cada valor não zero de nuh_layer_id é derivada a partir do SPS de camada ativa para tal valor não zero de id de nuh_layer. Cada uma das memórias temporárias de armazenamento de imagem contém uma imagem decodificada que é marcada como “usada para referência” ou é mantida para saída futura. O processo para saída e remoção de imagens a partir do DPB conforme especificado na subcláusula F.13.5.2.2 é chamado, seguido pela invocação do processo para decodificação, para marcação, para bumping adicional e para armazenamento de imagem conforme especificado na subcláusula F.13.5.2.3. O processo de “bumping” é especificado na subcláusula F.13.5.2.4 e é invocado conforme especificado na subcláusulas F.13.5.2.2 e F.13.5.2.3
F.13.5.2.2 SAÍDA E REMOÇÃO DE IMAGENS A PARTIR DE DPB
[00857] A saída e remoção de imagens a partir do DPB antes da decodificação da imagem atual (porém, após analisar o cabeçalho de fatia da primeira fatia da imagem atual) acontece instantaneamente quando a primeira unidade de decodificação da imagem atual, que pertence à unidade de acesso que contém a imagem atual, é removida a partir do CPB e prossegue conforme o seguinte.
[00858] O processo de decodificação para RPS conforme especificado na subcláusula 8.3.2 é invocado.
[00859] - Se a imagem atual for uma imagem de MAP com NoRasloutputFlag igual a 1 e com nub_layer_id igual a 0 que não é uma imagem 0, as seguintes etapas ordenadas serão aplicadas:
[00860] 1. A variável NooutputOfPriorPicsFlag será derivada para o decodificador sob teste conforme o seguinte: Se a imagem atual for uma imagem de CRA” NooutputO1PriorPicsFlag será definido igual a 1 (independente do valor de no_output_of_prior_pics flag).
[00861] - De outra forma, se o valor de pic_width_in_luma_samples, de pic_height_in_luma_samples ou de sps_max_dec_pic buffering_minusl[ HighestTid ] derivado a partir do SPS ativo correspondente ao valor de nuh_layer_id da imagem atual for diferente do valor de pic_width_in_luma_samples, de pic_height_in_luma samples ou d sps_max_dec_pic_buffering_minu.s1[ HighestTid ], respectivamente, derivado a partir de SPS ativo para uma imagem precoce com o valor de nuh_layer_id igual ao valor de nuh_layer_id de camada de id da imagem atual, NooutputOtPriorPiesFlag pode ser (porém, não deve) definido como 1 através do decodificador sob teste, independente do valor de no_output of_prior_pics_flag.
[00862] OBSERVAÇÕES - Embora a definição de NooutputOfPriorPicsFlag como igual a No_output of_prior_pics_flag seja preferida sob essas condições, o decodificador sob teste é deixado definir Nooutput0PriorPicsFlag para 1 nesse caso.
[00863] - De outra forma, NooutputO1PriorPicsFlag será definido igual a n output_of_prior_pics flag.
[00864] 2. O valor de NooutputOfPriorPicsfiag derivado para o decodificador sob teste será aplicado para o HRD conforme o seguinte:
[00865] - Se NooutputOfPriorPiesFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem correspondente ao valor de nuh_layer_id da imagem atual no DPB serão esvaziados sem saída das imagens que as mesmas contêm e a integralidade de DPB para o valor de nuh_layer_id da imagem atual será definido igual a 0.
[00866] Em uma modalidade, se NooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem correspondentes a todos os valores de nuh_layer_id no DPB serão esvaziadas sem a saída das imagens que as mesmas contêm e a integralidade de DPB para todos os valores de nuh_layer_id será definido igual a 0.
[00867] Em uma modalidade, se NooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem PSB[currLa.yerld] correspondentes ao valor de nuh_layer_id currLayerld da imagem atual no DPB serão esvaziadas sem a saída das imagens que as mesmas contêm e a integralidade de DPB DPBFullness[ourrLayerId] é definido igual a 0.
[00868] Em uma modalidade, se NooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem PSB[nuh_layer_id] para todos os valores de nuh_layer_id no DPB serão esvaziadas sem a saída das imagens que as mesmas contêm e a integralidade de DPB DPBFullness[nuh_layer_idj para todos os valores de nuh_layer_id será definida como igual a 0.
[00869] De outra forma, (NooutputOfPriorPicsFlag é igual a 0), todas as memórias temporárias de armazenamento de imagem que contém uma imagem que é marcada como “não necessária para a saída” e “não usada para referência” são esvaziadas (sem saída), e todas as memórias temporárias de armazenamento de imagem não vazias no DPB correspondentes ao valor de nuh_layer_id da imagem atual não são esvaziadas através da invocação repetida do processo de “bumping” especificado na subcláusula F.13.5.2.4 e a integralidade de DPB para o valor de nuh_layer_id da imagem atual é definido igual a 0.
[00870] Em outra modalidade, quando NooutputOfPriorPicsFlag for igual a 0, todas as memórias temporárias de armazenamento de imagem correspondente a todos os valores de nuh_layer_id que contém uma imagem que é marcada como “não necessária para a saída” e “não usada para referência” serão esvaziadas (sem saída), e todas as memórias temporárias de armazenamento de imagem não vazias correspondentes a todos os valores de nuh_layer_id no DPB serão esvaziadas através da invocação repetida do processo de “bumping” especificado na subcláusula F.13.5.2.4, e a integralidade de DPB para todos os valores de nuh_layer_id será definida como igual a 0.
[00871] Em outra modalidade, De outra forma, (NooutputOfPriorPicsFlag é igual a 0), todas as memórias temporárias de armazenamento de imagem que contém uma imagem que é marcada como “não necessária para a saída” e “não usada para referência” serão esvaziadas (sem saída) e todas as memórias temporárias de armazenamento de imagem não vazias PSB[currLayerld] no DPB correspondentes ao valor de nuh_layer_id currLayerld da imagem atual serão esvaziadas através da invocação repetida do processo de “bumping” especificado na subcláusula F.13.5.2.4 e a integralidade de DPB DPBFullness[currLayerId] para o valor de nuh_layer_ id da imagem atual será definida como igual a 0.
[00872] - Em outra modalidade, quando NooutputOfPriorPicsFlag for igual a 0, todas as memórias temporárias de armazenamento de imagem PSB[nuh_layer_id] para todos os valores de nuh_layer_id no DPB que contém uma imagem que é marcada como “não necessária para a saída” e “não usada para referência” serão esvaziadas (sem saída), e todas as memórias temporárias de armazenamento de imagem não vazias PSB[nuh_layer id] correspondentes a todos os valores de nuh_layer_id no DPB serão esvaziadas através da invocação repetida do processo de “bumping” especificado na subcláusula F.13.5.2.4 e a integralidade de DPB DPBFullness[nuh_layer id] para todos os valores de nuh_layer_id é definida como igual a 0.
[00873] - De outra forma, (a imagem atual não é uma imagem de IRAP com NoRasloutputFlag igual a 1 e com nuh_layer_id igual a 0), todas as memórias temporárias de armazenamento de imagem correspondente ao valor de nuh_layer_id da imagem atual que contém uma imagem que são marcadas como “não necessária para a saída” e “não usada para referência” serão esvaziadas (sem saída). Para cada memória temporária de armazenamento de imagem que é esvaziada, a integralidade de DPB correspondente ao valor de nuh_layer_id da imagem decodificada atual é diminuída por um. A variável currLayerld é definida como igual a nuh_layer_id da imagem decodificada atual e quando uma ou mais das seguintes forem verdadeiras, o processo de “bumping” especificado na subcláusula F.13.5.2.4 será invocado repetidamente enquanto diminui adicionalmente a Integralidade de DPB por um para cada memória temporária de armazenamento de imagem adicional correspondente ao valor de nuh_layer_id da imagem decodificada atual que é esvaziada, até que nenhuma dentre as seguintes seja verdadeira:
[00874] - O número de imagens com nuh_layer_id igual a currLayerId no DPB que são marcadas como “necessária para saída” é maior que sps_max_num_reorder_pics[ HighestTid do SPS ativo (quando currLayerld for igual a 0) ou a partir de SPS de camada ativa para o valor de currLayerld.
[00875] - sps max_latency_increase_plusl ligbestTid ] do SPS ativo (quando currLayerld for igual a 0) ou o SPS de camada ativa para o valor de currLayerld não for igual a 0 e houver pelo menos uma imagem com nuh_layer_id igual a currLayerId no DPB que é marcada como “necessária para saída” para a qual a variável PicLatencyCount[ currLayerId ] associada é maior que ou igual a SpsrvIaxLatencyPictures[ HighestTid ] derivada do SPS ativo (quando currLayerId for igual a 0) ou a partir de SPS de camada ativa para o valor de currLayerld.
[00876] O número de imagens com nuh_layer_id igual a currLayerId no DPB é maior que ou igual a sps_rnax_decpic_buffering_minusll HighestTid ] + 1 do SPS ativo (quando currLayerld for igual a 0) ou a partir do SPS de camada ativa para o valor de currLayerId.
[00877] Em outra modalidade: De outra forma, (a imagem atual não é uma imagem de IRAP com NoRasloutputFlag igual a 1 e com nuh_layer_id igual a 0), todas as memórias temporárias de armazenamento de imagem correspondente a todos os valores de nuh_layer_id que contém uma imagem que serão marcadas como “não necessária para a saída” e “não usada para referência” serão esvaziadas (sem saída). Para cada memória temporária de armazenamento de imagem que é esvaziada, a integralidade de DPB correspondente ao valor de nuh_layer_id da imagem é diminuída por um.
[00878] Em outra modalidade: De outra forma, (a imagem atual não é uma imagem de IRAP com NoRasloutputFlag igual a 1 e com nhu_layer_id igual a 0), todas as memórias temporárias de armazenamento de imagem PSB[currLaycrld] no DPB correspondentes ao valor de nuh_layer_id currLayerld da imagem atual que contém uma imagem que são marcadas como “não necessária para a saída” e “não usada para referência” serão esvaziadas (sem saída). Para cada memória temporária de armazenamento de imagem que é esvaziada, a integralidade de DPB DPBfullness[currLayerId] correspondente ao valor de nhu_layer_id da imagem decodificada atual é diminuída por um.
[00879] Em outra modalidade: De outra forma, (a imagem atual não é uma imagem de MAP com NoRasloutputFlag igual a 1 e com nuh_layer_id igual a 0), todas as memórias temporárias de armazenamento de imagem PSB[nuh_layer_id] para todos os valores de nul_layer_id no DPI que contêm uma imagem que são marcadas como “não necessária para a saída” e “não usada para referência” são esvaziadas (sem saída). Para cada memória temporária de armazenamento de imagem que é esvaziada, uma integralidade de DPB DPBFullness[nuh_layer_id] correspondente ao valor de nuh_layer_id da imagem esvaziada é diminuída por um.
F.13.5.2.3 DECODIFICAÇÃO, MARCAÇÃO, BUMPING ADICIONAL E ARMAZENAMENTO DE IMAGEM
[00880] Os processos especificados nesta subcláusula acontecem instantaneamente quando a última unidade de decodificação de unidade de acesso n que contém a imagem atual é removida a partir do CPB.
[00881] A variável currLayerld é definida como igual a nuh_layer_id da imagem decodificada atual.
[00882] Para cada imagem no DPB que é marcada como “necessária para saída” e que tem um valor de nuh_layer_id igual a currLayerld, a variável PiciatencyCount[ currLayerId ] associada é definida como igual a PicLatencyCount[ currLayerld +1.
[00883] A imagem atual é considerada como decodificada após a última unidade de decodificação da imagem ser decodificada. A imagem decodificada atual é armazenada em uma memória temporária de armazenamento de imagem vazia correspondente ao currLayerld (o valor de nuh_layer_id da imagem atual) no DPB, e o seguinte se aplica:
[00884] - Se a imagem decodificada atual tiver PicoutputFlag igual a 1, a mesma é marcada como “necessária para saída” e sua variável PicLatencyCount[ currLayerld ] associada é definida como igual a 0.
[00885] - De outra forma, (a imagem decodificada atual tem PicoutputFlag igual a 0), a mesma é marcada como “não necessária para a saída”.
[00886] Em uma modalidade, a imagem decodificada atual é armazenada em uma memória temporária de armazenamento de imagem vazia correspondente ao currLayerld (o valor de nuh_layer_id da imagem atual) no DPB, e o seguinte se aplica:
[00887] - Se a imagem decodificada atual tiver PicoutputFlag igual a 1, a mesma é marcada como “necessária para saída” e sua variável PicLatencyCount[ currLayerld ] associada é definida como igual a 0. Todas as memórias temporárias de armazenamento de imagem que contém uma imagem que tem o mesmo valor de contagem de ordem de imagem (PicOrderCntVal ) que a imagem decodificada atual são marcadas como “necessária para saída”.
[00888] - De outra forma, (a imagem decodificada atual tem PicoutputFla igual a 0), a mesma é marcada como “não necessária para a saída.”
[00889] Em uma modalidade, a imagem decodificada atual é armazenada em um armazenamento de imagem vazio. A memória temporária PSB[eurreLayerId] correspondente a currLayerld (o valor de nuh_layer_id da imagem atual) no DPB e a integralidade de DPB para o valor de nuh_layer_id da imagem atual DPBFullness[currLayerId] é incrementada por um, e o seguinte se aplica:
[00890] A imagem decodificada atual é marcada como “usada para referência a curto prazo”.
[00891] Quando uma ou mais das seguintes forem verdadeiras, o processo de “bumping” especificado na subcláusula F.13.5.2.4 será invocado repetidamente até que nenhuma dentre as seguintes seja verdadeira.
[00892] - O número de imagens com nuh_layer_id igual a currLayerld no DPB que são marcadas como “necessária para saída” é maior que sps max_num_reord.er_pics[ HighestTid ] do SPS ativo (quando currLayerld for igual a 0) ou a partir do SPS de camada ativa para o valor de currLayerId,
[00893] - sps_max_latency_increase_plusl [ HighestTid ] não é igual a 0 e há pelo menos uma imagem com nuh_layer_id igual a currLayerld no DPB que é marcada como “necessária para saída” a qual a variável PicLatencyCount[ currLayerld ] associada que é maior que ou igual a SpsMaxLatencyPictures[ HighestTid ] derivada do SPS ativo (quando currLayerld for igual a 0) ou a partir do SPS de camada ativa para o valor de currLayerld.
F.13.5.2.4 PROCESSO DE “BUMPING”
[00894] O processo “bumping” consiste nas seguintes etapas ordenadas:
[00895] 1. As imagens que são primeiro para saída são selecionadas como aquelas que têm o menor valor de PicOrderCntVal de todas as imagens no DPB marcadas como “necessária para saída”.
[00896] 2. Essas imagens são cortadas, com o uso da janela de corte de conformidade especificada no SPS ativo para a imagem com nuh_layer_id igual a 0 ou no SPS de camada ativa para um valor de nuh_layer_id igual aquele da imagem, as imagens cortadas são emitidas na ordem ascendente de nuh_layerid, e as imagens são marcadas como “não necessária para a saída”.
[00897] 3. Cada memória temporária de armazenamento de imagem que contém uma imagem marcada como “não usada para referência” e que inclui uma dentre as imagens que foram cortadas e emitidas é esvaziada.
LISTAGEM (2)
[00898] A Listagem (2A) abaixo fornece uma abordagem alternativa à seção F.13.5.2.2 da Listagem (2) de acordo com acomodação dos sistemas e dos métodos presentes. Em algumas configurações, a Listagem (2A) pode apenas representar as alterações à seção F.13.5.2.2 no documento JCTVC-L1008. A Listagem (2A) pode usar os sinalizadores AuNooutputOfPriorPicsFlag e AuNoRasloutputFlag definidos acima.
LISTAGEM 2A F.13.5.2.2 SAÍDA E REMOÇÃO DE IMAGENS DO DPB
[00899] A saída e a remoção das imagens do DPB antes da decodificação da imagem atual (porém, após analisar o cabeçalho de fatia da primeira fatia da imagem atual) acontecem instantaneamente quando a primeira unidade de decodificação da unidade de acesso que contém a imagem atual é removida do CPB e prossegue conforme o seguinte:
[00900] O processo de decodificação para RPS conforme especificado na subcláusula 8..3.2 é invocado.
[00901] - Se a imagem atual for uma imagem de IRAP com AuNoRasloutputFlag igual a 1 e com nuh_layer_id igual a 0 que não é uma imagem 0, as seguintes etapas ordenadas serão aplicadas:
[00902] - Em outra configuração, se uma imagem atual for uma imagem de IRAP com NoRasloutputFlag igual a 1 e com nuh_layer_id igual a 0 que não é uma imagem 0, as seguintes etapas ordenadas serão aplicadas:
[00903] 1. A variável AuNooutputOfPriorPicsFlag será derivada para o decodificador sob teste conforme o seguinte.
[00904] - Se a imagem atual tiver nuh_layer_id igual a 0 AuNooutputOfPriorPicsFlag será inicializada para 0. Então:
[00905] Se a imagem atual for uma imagem de CRA, AuNooutputOfPriorPicsFlag será definido igual a 1 (independente do valor de no_output_of_prior_pics flag para a imagem atual ou para as outras imagens no AU).
[00906] - De outra forma, se o valor de pic_width_in_luma_samples, de pic_height_in_luma_samples ou de sps_max dec_pic_buffering_minus 1 [HighestTid] derivado a partir do SPS ativo será diferente do valor de pic_width_in_luma_sampIes, de pic_height_in_luma_samples ou de sps_MaX_dec_pic_buffering_minus1 [HighestTid], respectivamente, derivados a partir do SPS ativo para a imagem precoce, AuNooutputOfPriorPicsFlag pode ser (porém, não deve) definido como 1 através do decodificador sob teste, independente do valor de no_output_of_prior_pics_flag.
[00907] OBSERVAÇÕES - Embora a definição de AuNooutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag seja preferida sob essas condições, o decodificar sob teste é deixado definir AuNooutputOfPriorPicsF1ag como 1 nesse caso.
[00908] - De outra forma, AuNooutputOfPriorPicsFlag é definido com base no valor de no_output_of_prior_pics_flag para a imagem atual e para as outras imagens no AU conforme o seguinte:
[00909] AuNooutputOfPriorPicsFlag é definido igual a 1 se no_output_of_prior_pics_flag for igual a 1 para pelo menos uma imagem no AU. De outra forma, AuNooutputOfPriorPicsFlag será definido igual a 0. Desse modo, nesse caso, o AuNooutputOfPriorPicsFlag é definido igual a 0 se no_output_of_prior_pies_flag for igual a 0 para todas as imagens em um AU. Em outra modalidade, AuNooutputOfPriorPicsFlag é definido igual a 1 se no_output_of_prior_pics_flag for igual a 1 para a imagem atual. De outra forma, AuNooutputOfPriorPicsFlag será deixado sem alteração.
[00910] - Em outra modalidade, AuNooutputOfPriorPicsFlag é definido igual a 1 se no_output_of_prior_pies_flag for igual a 1 para todas as imagens no AU. De outra forma, AuNooutputOfFriorPicsFlag será definido igual a 0.
[00911] - Em outra modalidade, AuNooutputOfPriorPicsFlag é definido igual a 1 se no_output_of_prior_pics_flag for igual a 1 para todas as imagens que pertencem às camadas-alvo de saída no AU. De outra forma, AuNooutputOfPriorPicsFlag será definido igual a 0.
[00912] - Em outra modalidade, AuNooutputOfPriorPicsFlag é definido igual a 1 se no_output_of_prior_pics_flag for igual a 1 para pelo menos uma imagem que pertence à camada-alvo de saída no AU. De outra forma, AuNooutputOfPriorPicsFlag é definido igual a 0.
[00913] 2. O valor de AuNooutputOfPriorPicsFlag entregado para o decodificador sob teste é aplicado para o HRD conforme o seguinte:
[00914] - Se AuNooutputOfPriorPksFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem no DPB correspondentes a todos os valores de nuh_layer_id serão esvaziadas sem saída das imagens que as mesmas incluem, e a integralidade de DPB será definida como igual a 0 para todos os valores de nuh_layer_id.
[00915] Em outra modalidade, se AuNooutputOfPriorPicsFlag for igual a 1, todas as memórias temporárias de armazenamento de imagem no DPB correspondentes a todos os valores de nuh_layer_id da imagem atual serão esvaziados sem saída das imagens que as mesmas incluem e a integralidade de DPB será definida como igual a 0 para o valor de nuh_layer_id da imagem atual.
[00916] De outra forma (AuNooutputOfPriorPicsFlag é igual a 0), todas as memórias temporárias de armazenamento de imagem correspondentes a todos os valores de nuh_layer_id que incluem uma imagem que é marcada como “não necessária para a saída” e “não usada para referência” são esvaziadas (sem saída) e todas as memórias temporárias de armazenamento de imagem não vazias no DPB serão esvaziadas através da invocação repetida do processo de “bumping” especificado na subcláusula F.13.5.2.4 e a integralidade de DPB para todos os valores de nuh_layer_id será definida como igual a 0.
EM OUTRA MODALIDADE:
[00917] De outra forma, (AuNooutputOfPriorPicsFlag é igual a 0), todas as memórias temporárias de armazenamento de imagem correspondentes aos valores de nuh_layer_id que incluem uma imagem que é marcada como “não necessária para a saída” e “não usada para referência” são esvaziadas (sem saída), e todas as memórias temporárias de armazenamento de imagem não vazias no DPB serão esvaziadas através da invocação repetida do processo de “bumping” especificado na subcláusula F.13.5.2.4, e a integralidade de DPB para o valor de nuh_layer_id da imagem atual será definida como igual a 0.
LISTAGEM (2A)
[00918] Em uma configuração, para o texto proposto na Listagem (1), na Listagem (1A), na Listagem (2) e na Listagem (2A) acima, todas as ocorrências de “imagem atual” podem ser substituídas pela “imagem decodificada atual”.
[00919] A Listagem (3) abaixo fornece uma seção adicional para decodificação para acomodar os sistemas e os métodos presentes. A Listagem (3) fornece as seções de JCTVC-L1003 (isto é, a versão 34 da especificação de HEVC) que seria alterada para acomodar os sistemas e os métodos presentes.
LISTAGEM 3 8.3.2. PROCESSO DE DECODIFICAÇÃO PARA CONJUNTO DE IMAGEM DE REFERÊNCIA
[00920] Quando a imagem atual for uma imagem de IRAP com NoRasloutputFlag igual a 1, todas as imagens de referência atualmente no DPB correspondentes ao valor de nuh_layer_id da imagem atual (se houver) serão marcadas como “não usada para referência.”
[00921] Em outra modalidade: Quando a imagem atual for uma imagem de IRAP com NoRasloutputFlag igual a 1, todas as imagens de referência atualmente no DPB correspondentes a todos os valores de nuh_layer_id (se houver) serão marcadas como “não usada para referência”.
LISTAGEM (3)
[00922] Diversas variantes diferentes podem ser usadas para definir as operações de memória temporária de imagem decodificada híbrida (DPB) 116, em que diversas etapas são à base de imagem ou à base de unidade de acesso. As Tabelas (11) a (15) abaixo listam múltiplas variantes das etapas e das definições à base de imagem/à base de unidade de acesso (AU) correspondentes. [TABELA 46]
Figure img0067
[TABELA 47]
Figure img0068
[TABELA 48]
Figure img0069
[TABELA 49]
Figure img0070
[TABELA 50]
Figure img0071
[00923] A Figura 66 é um diagrama de bloco que ilustra uma configuração de um decodificador 2404. O decodificador 2404 pode ser incluído em um dispositivo eletrônico 2402. Por exemplo, o decodificador 2404 pode ser um decodificador de codificação de vídeo de alta eficiência (HEVC). O decodificador 2404 e/ou um ou mais dos elementos ilustrados como incluídos no decodificador 2404 podem ser implantados no hardware, no software ou em combinação de ambos. O decodificador 2404 pode receber um fluxo de bits 2414 (por exemplo, uma ou mais imagens codificadas incluídas no fluxo de bits 2414) para decodificar. Em algumas configurações, o fluxo de bits recebido 2414 pode incluir informações de sobrecarga recebidas, tais como um cabeçalho de fatia recebido, PPS recebido, informações de descrição de memória temporária recebidas, etc. As imagens codificadas incluídas no fluxo de bits 2414 podem incluir uma ou mais imagens de referência codificadas e/ou uma ou mais de outras imagens codificadas.
[00924] Os símbolos recebidos (em uma ou mais imagens codificadas incluídas no fluxo de bits 2414) podem ser entropias decodificadas através de um módulo de decodificação de entropia 454, desse modo, a produção de sinal de informações de movimento 456 e coeficientes quantizados, escalados e/ou transformados 458.
[00925] O sinal de informações de movimento 456 pode ser combinado com uma porção de um sinal de quadro de referência 484 de uma memória de quadro 464 em um módulo de compensação de movimento 460, que pode produzir um sinal de predição interquadro 468. Os coeficientes quantizados, descalados e/ou transformados 458 podem ser quantizado de modo inverso, escalonado e transformado de modo inverso através de um módulo inverso 462, desse modo, produzindo um sinal residual decodificado 470. O sinal residual decodificado 470 pode ser adicionado a um sinal de predição 478 para produzir um sinal combinado 472. O sinal de predição 478 pode ser um sinal selecionado a partir do sinal de predição interquadro 468 ou um sinal de predição intraquadro 476 produzidos através de um módulo de predição intraquadro 474. Em algumas configurações, essa seleção de sinal pode ter como base (por exemplo, controlado por) o fluxo de bits 2414.
[00926] O sinal de predição intraquadro 476 pode ser previsto a partir das informações decodificadas anteriormente a partir do sinal combinado 472 (no quadro atual, por exemplo). O sinal combinado 472 também pode ser filtrado através de um filtro de deblocagem 480. O sinal filtrado resultante 482 pode ser escrito na memória de quadro 464. O sinal filtrado resultante 482 pode incluir uma imagem decodificada.
[00927] A memória de quadro 464 pode incluir a memória temporária de imagem decodificada (DPB) 2416 conforme descrito no presente documento. A memória temporária de imagem decodificada (DPB) 2416 pode ter a capacidade das operações de memória temporária de imagem decodificada híbrida (DPB) 116. A memória temporária de imagem decodificada (DPB) 2416 pode incluir uma ou mais imagens decodificadas que podem ser mantidas como quadros de referência a curto ou a longo prazo. A memória de quadro 464 também pode incluir informações de sobrecarga correspondentes às imagens decodificadas. Por exemplo, a memória de quadro 464 pode incluir cabeçalho de fatias, informações de conjunto de parâmetros de vídeo (VPS), informações de conjunto de parâmetros de sequência (SPS), informações de conjunto de parâmetros de imagem (PPS), parâmetros de ciclo, informações de descrição de memória temporária, etc. Uma ou mais dessas partes de informações podem ser sinalizadas a partir de um codificador (por exemplo, o codificador 2108, o módulo de sinalização de sobrecarga 2112).
[00928] A Figura 67A é um diagrama de bloco que ilustra o uso tanto de uma camada de otimização quanto de um camada-base para codificação de vídeo com as memórias temporárias de imagem decodificada separadas (DPBs) 516a a b e os módulos de operação separados de memória temporária de imagem decodificada híbrida (DPBs) 520a a b para a camada-base e para a camada de otimização. Um primeiro dispositivo eletrônico 502a e um segundo dispositivo eletrônico 502b são ilustrados. O primeiro dispositivo eletrônico 502a pode incluir um codificador de vídeo 508 que inclui um codificador de camada de otimização 526 e um codificador de camada-base 528. Cada um dos elementos incluídos no primeiro dispositivo eletrônico 502a (isto é, o codificador de camada de otimização 526 e o codificador de camada-base 528) podem ser implantados no hardware, no software ou uma combinação de ambos. O primeiro dispositivo eletrônico 502a pode obter uma imagem de entrada 2506. Em algumas configurações, a imagem de entrada 2506 pode ser capturada no primeiro dispositivo eletrônico 502a com o uso de um sensor de imagem, recuperada a partir da memória ou recebida a partir de outro dispositivo eletrônico 502.
[00929] O codificador de camada de otimização 526 pode codificar a imagem de entrada 2506 para produzir dados codificados. Por exemplo, o codificador de camada de otimização 526 pode codificar uma série de imagens de entrada 2506 (por exemplo, vídeo). Os dados codificados podem ser incluídos em um fluxo de bits de vídeo de camada de otimização codificada 530. O codificador de camada de otimização 526 pode gerar sinalização de sobrecarga com base na imagem de entrada 2506.
[00930] O decodificador de vídeo de camada de otimização 534 pode incluir uma memória temporária de imagem decodificada (DPB) 516a e um módulo híbrido de operação de memória temporária de imagem decodificada 520a. Da mesma forma, o decodificador de camada-base 536 pode incluir uma memória temporária de imagem decodificada (DPB) 516b e um módulo híbrido de operação de memória temporária de imagem decodificada 520b.
[00931] O codificador de camada-base 528 também pode decodificar a imagem de entrada 2506. Em uma configuração, a mesma imagem de entrada 2506 usada pelo codificador de camada de otimização 526 também pode ser usada pelo codificador de camada- base 528. Em outra configuração, uma imagem de entrada diferente (porém, similar) da imagem de entrada 2506 usada pelo codificador de camada de otimização 526 pode ser usada pelo codificador de camada-base 528. Por exemplo, para escalabilidade de razão sinal- ruído (SNR) (também chamada de escalabilidade de qualidade), a mesma imagem de entrada 2506 pode ser usada tanto pelo codificador de camada de otimização 526 quanto pelo codificador de camada-base 528. Como outro exemplo, para escalabilidade espacial, uma imagem com resolução reduzida pode ser usada pelo codificador de camada-base 528. Em ainda outro exemplo, para escalabilidade múltipla visualização, uma imagem de vista diferente pode ser usada pelo codificador de camada-base 528. O codificador de camada-base 528 pode produzir dados codificados incluídos em um fluxo de bits de vídeo de camada-base codificada 532.
[00932] O fluxo de bits de vídeo de camada de otimização codificada 530 e o fluxo de bits de vídeo de camada-base codificada 532 podem, cada um, incluir dados codificados com base na imagem de entrada 2506. Em um exemplo, o fluxo de bits de vídeo de camada de otimização codificada 530 e o fluxo de bits de vídeo de camada- base codificada 532 podem incluir dados de imagem codificada. Em algumas configurações, o fluxo de bits de vídeo de camada de otimização codificada 530 e/ou o fluxo de bits de vídeo de camada- base codificada 532 também podem incluir os dados de sobrecarga, tais como informações de conjunto de parâmetros de sequência (SPS), informações de conjunto de parâmetros de imagem (PPS), informações de conjunto de parâmetros de vídeo (VPS), informações de cabeçalho de fatia, etc..
[00933] O fluxo de bits de vídeo de camada de otimização codificada 530 pode ser fornecido ao segundo dispositivo eletrônico 502b. Da mesma forma, o fluxo de bits de vídeo de camada-base codificada 532 pode ser fornecido ao segundo dispositivo eletrônico 502b. O segundo dispositivo eletrônico 502b pode incluir um decodificador de vídeo 2504. O decodificador de vídeo 2504 pode incluir um decodificador de camada de otimização 534 e um decodificador de camada-base 536. Em uma configuração, o fluxo de bits de vídeo de camada-base codificada 530 é decodificado pelo decodificador de camada-base 536 enquanto o fluxo de bits de vídeo de camada de otimização codificada 530 é decodificado pelo decodificador de camada de otimização 534.
[00934] Em um exemplo, o fluxo de bits de vídeo de camada de otimização codificada 530 e o fluxo de bits de vídeo de camada-base codificada 532 pode ser transmitido ao segundo dispositivo eletrônico 502b com o uso de enlace com fio ou sem fio. Em alguns casos, isso pode ser feito através de uma rede, tal como a Internet, uma Rede de Área Local (LAN) ou outro tipo de rede para a comunicação entre os dispositivos. Deve-se observar que em algumas configurações, os codificadores (isto é, o codificador de camada de otimização 526 e o codificador de camada-base 528) e o decodificador 2504 (por exemplo, o decodificador de camada-base 536 e o decodificador de camada de otimização 534) podem ser implantados no mesmo dispositivo eletrônico 502 (isto é, o primeiro dispositivo eletrônico 502a e o segundo dispositivo eletrônico 502b podem ser parte de um único dispositivo eletrônico 502). Em uma implantação em que os codificadores e os decodificadores são implantados no mesmo dispositivo eletrônico 502, por exemplo, o fluxo de bits de vídeo de camada de otimização codificada 530 e o fluxo de bits de vídeo de camada-base codificada 532 podem ser tornados disponíveis para o decodificador de vídeo 2504 em uma variedade de formas. Por exemplo, o fluxo de bits de vídeo de camada de otimização codificada 530 e o fluxo de bits de vídeo de camada-base codificada 532 podem ser fornecidos através de um barramento para o decodificador de vídeo 2504 ou armazenados na memória para recuperação através do decodificador de vídeo 2504.
[00935] O decodificador de vídeo 2504 pode gerar uma ou mais imagens decodificadas com base no fluxo de bits de vídeo de camada de otimização codificada 530 e o fluxo de bits de vídeo de camada- base codificada 532. Uma imagem decodificada 2118 (que pode incluir uma imagem decodificada de camada de otimização 538 e uma imagem decodificada de camada-base 540) pode ser exibida, reproduzida, armazenada na memória e/ou transmitida para outro dispositivo, etc..
[00936] Em um exemplo, a imagem decodificada 2118 pode ser transmitida para outro dispositivo ou devolvida para o primeiro dispositivo eletrônico 502a. A imagem decodificada 2118 também pode ser armazenada ou mantida de outra forma no segundo dispositivo eletrônico 502b. Em outro exemplo, o segundo dispositivo eletrônico 502b pode exibir a imagem decodificada 2118. Em outras configurações, a imagem decodificada 2118 inclui os elementos da imagem de entrada 2506 com propriedades diferentes com base na codificação e outras operações realizadas no fluxo de bits 2114. Em algumas configurações, a imagem decodificada 2118 pode ser incluída em um fluxo de imagem com uma resolução, um formato, uma especificação ou um outro atributo diferente da imagem de entrada 2506.
[00937] A Figura 67B é um diagrama de bloco que ilustra o uso de uma memória temporária de imagem decodificada compartilhada (DPB) 516c e um módulo híbrido de operação de memória temporária de imagem decodificada compartilhada 520c para a camada-base e para a camada de otimização. A Figura 67B inclui os mesmos componentes que aqueles da Figura 67A exceto pelo fato de que o decodificador de vídeo de camada de otimização 534 e o decodificador de camada-base 536 compartilham tanto uma memória temporária de imagem decodificada (DPB) 516c quanto um módulo híbrido de operação de memória temporária de imagem decodificada 520c.
[00938] A Figura 68 é um diagrama de tempo que ilustra a operação de memória temporária de imagem decodificada híbrida (DPB) 116. As operações de memória temporária de imagem decodificada híbrida (DPB) 116 da Figura 68 mostra as etapas de uma variante preferida em que a remoção, o armazenamento e a marcação de referência são à base de imagem e a saída, a marcação de saída e a saída adicional são à base de unidade de acesso (AU). Uma memória temporária de imagem decodificada ideal (DPB) 116 e o decodificador hipotético de referência (HRD) podem operar de tal uma maneira que diversas etapas individuais mostradas (por exemplo, a remoção 621a a b, a saída 623, o armazenamento 625a a c, a marcação 627a a c, 629 e a saída adicional 631) são todas realizadas instantaneamente. A sequência dessas etapas e dos deslocamentos de tempo é ilustrada entre as etapas individuais para propósitos de ilustração. Para a conformidade de decodificador de tempo de saída, o tempo (relativo ao tempo de entrega do primeiro bit) de uma saída de imagem é o mesmo tanto para o decodificador hipotético de referência (HRD) quanto para o decodificador sob teste (DUT) até um atraso fixo. Como tal, o deslocamento de tempo ilustrado pode ocorrer para um DUT que introduz um atraso fixo em comparação a um HRD.
[00939] As etapas para uma memória temporária de imagem decodificada (DPB) 116 da primeira camada de otimização (EL1) 2642a, uma memória temporária de imagem decodificada (DPB) 116 da segunda camada de otimização (EL2) 2642b e uma memória temporária de imagem decodificada (DPB) 116 da camada-base (BL) 2644 são ilustradas. Um tempo de remoção de memória temporária de imagem codificada (CPB) 2646 é ilustrada. Após o tempo de remoção de memória temporária de imagem codificada (CPB) 2646, uma remoção à base de imagem (sem saída) 621a pode ser realizada através da memória temporária de imagem decodificada (DPB) 116 da segunda camada de otimização (EL2) 2642b e uma remoção à base de imagem (sem saída) 621b pode ser realizada através da memória temporária de imagem decodificada (DPB) 116 da camada-base (BL) 2644. Após um deslocamento de tempo, uma saída de imagem (bumping) à base de unidade de acesso (AU) 623 pode ser realizada através da memória temporária de imagem decodificada (DPB) 116 da camada-base (BL) 2644, a memória temporária de imagem decodificada (DPB) 116 da primeira camada de otimização (EL1) 2642a e a memória temporária de imagem decodificada (DPB) 116 da segunda camada de otimização (EL2) 2642b.
[00940] Após outro deslocamento de tempo, a imagem decodificada atual relacionada ao processo 613 é ilustrada. Uma etapa de armazenamento à base de imagem 625a a c pode ser realizada através da memória temporária de imagem decodificada (DPB) 116 da camada-base (BL) 2644, a memória temporária de imagem decodificada (DPB) 116 da primeira camada de otimização (EL1) 2642a e a memória temporária de imagem decodificada (DPB) 116 da segunda camada de otimização (EL2) 2642b. A etapa de armazenamento pode ser realizada após cada uma dentre as camada- base (BL) 2644, a primeira camada de otimização (EL1) 2642a e a segunda camada de otimização (EL2) 2642b imagens serem decodificadas. A etapa de armazenamento 625 pode ser subdividida adicionalmente. Nas etapas de armazenamento 625, uma imagem decodificada é armazenada na memória temporária de imagem decodificada (DPB) 116 em uma memória temporária de armazenamento vazio e a integralidade de memória temporária de imagem decodificada (DPB) é incrementada por um. Ademais, quando uma imagem for removida (sem saída) da memória temporária de imagem decodificada (DPB) 116, a integralidade de memória temporária de imagem decodificada (DPB) é diminuída por um. Similarmente, quando é usado o bump de uma imagem da memória temporária de imagem decodificada (DPB) 116 (durante o bumping ou o bumping adicional), a integralidade de memória temporária de imagem decodificada (DPB) é diminuída por um.
[00941] A memória temporária de imagem decodificada (DPB) 116 pode incluir as memórias temporárias de imagem identificadas e gerenciadas de modo separado para as imagens decodificadas que têm características diferentes. Por exemplo, a memória temporária de imagem decodificada (DPB) 116 pode incluir de modo separado as memórias temporárias de imagem identificadas e gerenciadas para imagens decodificadas com resoluções diferentes, profundidades de bit diferentes e/ou cromaticidade de cor diferentes.
[00942] Uma imagem decodificada pode, em vez disso, ser armazenada em um fundo comum de memória temporária de armazenamento de imagem na memória temporária de imagem decodificada (DPB) 116. Por exemplo, dois subcasos adicionais podem ser usados para determinar as restrições de tamanho de memória temporária de imagem decodificada (DPB) 116 que afetam o processo de bumping/remoção e as definições de nível. Em uma restrição de memória temporária de imagem decodificada (DPB) 116 à base de bit, uma imagem decodificada pode ser armazenada em consideração ao tamanho com base na resolução e/ou profundidade de bit. As restrições de tamanho de memória temporária de imagem decodificada (DPB) 116 podem ser definidas como um limite de bit que consideram a resolução e a profundidade de bit de cada imagem decodificada. Em uma restrição de memória temporária de imagem decodificada (DPB) 116 à base de unidade de imagem, uma imagem decodificada pode ser armazenada (e é considerada como tomar uma fenda de memória temporária de imagem). As restrições de tamanho de memória temporária de imagem decodificada (DPB) 116 podem, então, ser definidas como um número de limite de fendas de imagem sem considerar a resolução e a profundidade de bit de cada imagem decodificada.
[00943] Em uma configuração, a integralidade de memória temporária de imagem decodificada (DPB) pode ser rastreada por camada. Por exemplo, as restrições de tamanho de memória temporária de imagem decodificada (DPB) 116 podem ser sinalizadas e o bumping pode ser aplicado, por camada. Em que cada camada inclui sua própria memória temporária de armazenamento de imagem, uma variável DPBFullness[nuh_layer_id] pode ser usada para rastrear quanto à integralidade de memória temporária de imagem decodificada (DPB) de cada camada. Quando uma imagem for removida de uma camada com um valor de ID de camada igual a nuh_layer_id, a variável DPBFullness[nuh_layer_id] pode ser definida igual a DPBFullness[nuh_layer_id]-1 (isto é, DPBFullness[nuh_layer_id] pode ser diminuído por um). Nesse caso, a imagem foi removida de uma memória temporária de armazenamento de imagem PSB[nuh_layer_id].
[00944] Similarmente, quando uma imagem decodificada atualmente com um valor de ID de camada igual a nuh_layer_id for armazenada na memória temporária de imagem decodificada (DPB) 116, a variável DPBFullness[nuh_layer_id] é definida como igual a DPBFullness[nuh_layer_id]+1 (isto é, DPBFullness[nuh_layer_id] é incrementado por um). Nesse caso, a imagem foi armazenada em um a memória temporária de armazenamento de imagem PSB[nuh_layer_id].
[00945] A integralidade de memória temporária de imagem decodificada (DPB) também pode ser rastreada por um conjunto de camadas de saída. As restrições de tamanho de memória temporária de imagem decodificada (DPB) 116 pode, então, ser sinalizada e o bumping pode ser aplicado, com base nas restrições especificadas por um conjunto de camadas de saída. Um valor de DPBFullness pode ser rastreado para o conjunto de camadas de saída que é associado ao ponto de operação sob teste. Desse modo, quando uma imagem for removida de uma camada que pertence ao conjunto de camadas de saída, o valor da integralidade de memória temporária de imagem decodificada (DPB) pode ser diminuída por um como DPBFullness = DPBFullness-1. Da mesma forma, quando uma imagem decodificada atualmente for armazenada na memória temporária de imagem decodificada (DPB) 116, a integralidade de memória temporária de imagem decodificada (DPB) pode ser diminuída por um como DPBFullness = DPBFullness+1.
[00946] Dentro do processo relacionado à imagem decodificada atual 613, o processo de marcação 611 é ilustrado. O processo de marcação 611 pode incluir a marcação de referência 627a a c e a marcação de saída 629. Após um deslocamento de tempo das etapas de armazenamento 625a a c, uma etapa de marcação de referência à base de imagem 627a a c pode ser realizada através da memória temporária de imagem decodificada (DPB) 116 da camada-base (BL) 2644, a memória temporária de imagem decodificada (DPB) 116 da primeira camada de otimização (EL1) 2642a e a memória temporária de imagem decodificada (DPB) 116 da segunda camada de otimização (EL2) 2642b. Após outro deslocamento de tempo, uma etapa de marcação de saída à base de unidade de acesso (AU) 629 pode ser realizada através da memória temporária de imagem decodificada (DPB) 116 da camada-base (BL) 2644, a memória temporária de imagem decodificada (DPB) 116 da primeira camada de otimização (EL1) 2642a e a memória temporária de imagem decodificada (DPB) 116 da segunda camada de otimização (EL2) 2642b. Uma vez que o processo relacionado à imagem decodificada atual 613 seja concluído, uma etapa de saída de imagem (bumping adicional) à base de unidade de acesso (AU) 631 pode ser realizada através da memória temporária de imagem decodificada (DPB) 116 da camada-base (BL) 2644, da memória temporária de imagem decodificada (DPB) 116 da primeira camada de otimização (EL1) 2642a e da memória temporária de imagem decodificada (DPB) 116 da segunda camada de otimização (EL2) 2642b.
[00947] A Figura 69 é um diagrama de bloco que ilustra a estrutura e o tempo para as unidades de camada de abstração de rede das camadas para imagens codificadas e unidades de acesso (AUs) quando a segunda camada de otimização (EL2) 942b tem uma taxa de imagem menor que a camada-base (BL) 944 e a primeira camada de otimização (EL1) 942a. As unidades de NAL de imagem codificada de EL1 953a são ilustradas ao longo da primeira camada de otimização (EL1) 942a. As unidades de NAL de uma imagem codificada de EL2 953b são ilustradas ao longo da segunda camada de otimização (EL2) 942b. As unidades de NAL de uma imagem codificada de camada- base 953c são ilustradas ao longo da camada-base (BL) 944.
[00948] No tempo t1, as unidades de NAL de uma imagem codificada de EL1 953a, as unidades de NAL de uma imagem codificada de EL2 953b e as Unidades de NAL de uma imagem codificada de camada-base 953c são parte da unidade de acesso (AU) 955a. No tempo t2, as unidades de NAL de uma imagem codificada de EL1 953a e as unidades de NAL de uma imagem codificada de camada-base 953c são partes da unidade de acesso (AU) 955b. No tempo t3, as unidades de NAL de uma imagem codificada de EL1 953a, as unidades de NAL de uma imagem codificada de EL2 953b e as unidades de NAL de uma imagem codificada de camada-base 953c são parte da unidade de acesso (AU) 955c. No tempo t4, as unidades de NAL de uma imagem codificada de EL1 953a e as unidades de NAL de uma imagem codificada de camada-base 953c são parte da unidade de acesso (AU) 955d.
[00949] A Figura 70 é um diagrama de bloco que ilustra a estrutura e o tempo para as unidades de camada de abstração de rede das camadas para imagens codificadas e para unidades de acesso (AUs) quando a camada-base (BL) 1044 tem uma taxa de imagem menor que a primeira camada de otimização (EL1) 1042a e a segunda camada de otimização (EL2) 1042b. As unidades de NAL de uma imagem codificada de EL1 1053a são ilustradas ao longo da primeira camada de otimização (EL1) 1042a. As unidades de NAL de uma imagem codificada de EL2 1053b são ilustradas ao longo da segunda camada de otimização (EL2) 1042b. As unidades de NAL de uma imagem codificada de camada-base 1053c são ilustradas ao longo da camada-base (BL) 1044.
[00950] No tempo t1, as unidades de NAL de uma imagem codificada de EL1 1053a, as unidades de NAL de uma imagem codificada de EL2 1053b e as unidades de NAL de uma imagem codificada de camada-base 1053c são parte da unidade de acesso (AU) 1055a. No tempo t2, as unidades de NAL de uma imagem codificada de EL1 1053a e as unidades de NAL de uma imagem codificada de EL2 1053b são parte da unidade de acesso (AU) 1055b. No tempo t3, as unidades de NAL de uma imagem codificada de EL1 1053a, as unidades de NAL de uma imagem codificada de EL2 1053b e as unidades de NAL de uma imagem codificada de camada-base 1053c são parte da unidade de acesso (AU) 1055c. No tempo t4, as unidades de NAL de uma imagem codificada de EL1 1053a e as unidades de NAL de uma imagem codificada de EL1 1053b são parte da unidade de acesso (AU) 1055d.
[00951] O termo “meio legível por computador” se refere a qualquer meio disponível que pode ser acessado por um computador ou um processador. O termo “meio legível por computador,” conforme usado no presente documento, pode denotar um meio legível por computador e/ou por processador que não é transitório e tangível. Como exemplo, e sem limitação, um meio legível por computador ou meio legível por processador pode compreender uma RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético ou qualquer outro meio que possa ser usado para transportar ou armazenar o código de programa desejado na forma de instruções ou de estruturas de dados e que possa ser acessado por um computador ou processador. Disquete e disco, conforme usado no presente documento, incluem disco compacto (CD), disco a laser, disco óptico, disco digital versátil (DVD), disquete, disco de Blu-ray (marca registrada) em que os disquetes geralmente reproduzem magnéticos, enquanto os discos reproduzem dados ópticos com lasers.
[00952] Deve-se entender que um ou mais dos métodos descritos no presente documento podem ser implantados em e/ou realizados com o uso de hardware. Por exemplo, um ou mais dentre os métodos ou abordagens descritas no presente documento podem ser implantados em e/ou realizados com o uso de um chipset, um ASIC, um LSI ou circuito integrado, etc..
[00953] Cada um dentre os métodos relevados no presente documento compreende uma ou mais etapas ou ações para alcançar o método descrito. As etapas e/ou ações de método podem ser intercambiáveis entre si e/ou combinadas em uma única etapa sem se afastar do escopo das reivindicações. Em outras palavras, salvo uma ordem específica de etapas ou de ações exigida para a operação adequada do método que é descrito, a ordem e/ou o uso das etapas e/ou ações específicas podem ser modificadas sem se afastar do escopo das reivindicações.
[00954] Deve-se entender que as reivindicações não são limitadas à configuração e aos componentes específicos ilustrados acima. Diversas modificações, alterações e variações podem ser feitas na disposição, operação e detalhes dos sistemas, métodos e aparelhos descritos no presente documento sem se afastar do escopo das reivindicações.

Claims (5)

1. Método para decodificar um fluxo de bits de vídeo caracterizado pelo fato de que compreende: (a) receber um conjunto de parâmetros de temporização de imagem; (b) receber dados representativos de uma imagem de vídeo codificada; (c) armazenar os dados em um buffer de imagem codificada; (d) determinar se os dados devem ser removidos do buffer de imagem codificada para decodificar em um nível de unidade de acesso ou removidos do buffer de imagem codificada para decodificação em um nível de sub-imagem com base em um parâmetro de temporização de imagem no conjunto de parâmetros de temporização de imagem; (e) quando os dados devem ser removidos do buffer de imagem codificada para decodificar em um nível de sub-imagem: (i) determinar um ou mais atrasos de remoção da unidade de decodificação para uma ou mais unidades de decodificação em uma unidade de acesso nos dados; (ii) remover uma unidade de decodificação a partir do buffer de imagem codificada com base nos um ou mais atrasos de remoção da unidade de decodificação; e (iii) decodificar a unidade de decodificação removida; e (f) quando os dados devem ser removidos do buffer de imagem codificada para decodificação em um nível de unidade de acesso: (iv) determinar um atraso de remoção da unidade de acesso para uma unidade de acesso nos dados; (v) remover uma unidade de acesso a partir do buffer de imagem codificada com base no atraso da unidade de acesso; e (vi) decodificar a unidade de acesso removida; em que uma unidade de decodificação é um subconjunto de uma unidade de acesso.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o conjunto de parâmetros de temporização de imagem é recebido em uma mensagem de informação de aperfeiçoamento suplementar (SEI).
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que, quando os dados devem ser removidos a partir do buffer de imagem codificada em um nível de sub-imagem, um parâmetro de temporização de imagem no conjunto indica se o conjunto inclui um atraso de remoção comum para todas as unidades de decodificação ou atrasos de remoção separados para cada unidade de decodificação.
4. Método de acordo com a reivindicação 3, caracterizado pelo fato de que, quando um parâmetro de temporização de imagem no conjunto indica que o conjunto inclui um atraso de remoção comum para todas as unidades de decodificação, um atraso de remoção de unidade de decodificação comum é determinado para todas as unidades de decodificação.
5. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que, quando um parâmetro de temporização de imagem no conjunto indica que o conjunto inclui atrasos de remoção separados para cada unidade de decodificação, atrasos de remoção de unidades de decodificação separadas são determinados para cada unidade de decodificação.
BR112015025518-3A 2013-04-07 2014-04-04 Método para decodificar um fluxo de bits de vídeo BR112015025518B1 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US13/858,076 US9591321B2 (en) 2013-04-07 2013-04-07 Signaling change in output layer sets
US13/858,076 2013-04-07
US201361844272P 2013-07-09 2013-07-09
US61/844,272 2013-07-09
US201361845309P 2013-07-11 2013-07-11
US61/845,309 2013-07-11
US201361856575P 2013-07-19 2013-07-19
US61/856,575 2013-07-19
PCT/JP2014/001967 WO2014167817A1 (en) 2013-04-07 2014-04-04 Signaling change in output layer sets

Publications (2)

Publication Number Publication Date
BR112015025518A2 BR112015025518A2 (pt) 2017-12-12
BR112015025518B1 true BR112015025518B1 (pt) 2023-02-07

Family

ID=51689239

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015025518-3A BR112015025518B1 (pt) 2013-04-07 2014-04-04 Método para decodificar um fluxo de bits de vídeo

Country Status (19)

Country Link
US (3) US10448041B2 (pt)
EP (2) EP3457700A1 (pt)
JP (5) JP6401778B2 (pt)
KR (2) KR102223694B1 (pt)
CN (5) CN105379285B (pt)
AU (4) AU2014252043B2 (pt)
BR (1) BR112015025518B1 (pt)
CA (3) CA3129121C (pt)
ES (1) ES2708969T3 (pt)
HK (2) HK1216959A1 (pt)
IL (6) IL287526B (pt)
MX (3) MX361490B (pt)
MY (2) MY173433A (pt)
PL (1) PL2984847T3 (pt)
PT (1) PT2984847T (pt)
RU (2) RU2746310C2 (pt)
SG (7) SG10201913551WA (pt)
UA (1) UA115804C2 (pt)
WO (1) WO2014167817A1 (pt)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2612577C2 (ru) * 2012-07-02 2017-03-09 Нокиа Текнолоджиз Ой Способ и устройство для кодирования видеоинформации
US9591321B2 (en) 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
IL287526B (en) 2013-04-07 2022-07-01 Dolby Int Ab Signal change in systems layer output
US9819941B2 (en) * 2013-10-10 2017-11-14 Qualcomm Incorporated Signaling for sub-decoded picture buffer (sub-DPB) based DPB operations in video coding
US9860540B2 (en) * 2014-01-03 2018-01-02 Qualcomm Incorporated Inference of nooutputofpriorpicsflag in video coding
JP6465863B2 (ja) * 2014-03-14 2019-02-06 シャープ株式会社 画像復号装置、画像復号方法及び記録媒体
JP6652058B2 (ja) * 2014-08-07 2020-02-19 ソニー株式会社 送信装置、送信方法および受信装置
WO2016098056A1 (en) * 2014-12-18 2016-06-23 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
US10687055B2 (en) * 2017-03-03 2020-06-16 Qualcomm Incorporated Coding MCTS-EIS SEI messages of an access unit
WO2019059721A1 (ko) * 2017-09-21 2019-03-28 에스케이텔레콤 주식회사 해상도 향상 기법을 이용한 영상의 부호화 및 복호화
CN110419217B (zh) * 2018-04-02 2023-09-26 深圳市大疆创新科技有限公司 用于图像处理的方法和图像处理装置
US10999590B2 (en) * 2018-12-28 2021-05-04 Tencent America LLC Method for identification of random access point and picture types
KR20210145736A (ko) * 2019-03-11 2021-12-02 브이아이디 스케일, 인크. 서브-픽처 비트스트림 추출 및 재배치
MX2021011016A (es) * 2019-03-11 2021-11-12 Huawei Tech Co Ltd Un codificador, un decodificador y métodos correspondientes.
US10986353B2 (en) * 2019-03-15 2021-04-20 Tencent America LLC Decoded picture buffer management for video coding
US11265580B2 (en) * 2019-03-22 2022-03-01 Tencent America LLC Supplemental enhancement information messages for neural network based video post processing
JP7359871B2 (ja) * 2019-05-06 2023-10-11 華為技術有限公司 ビデオコーディングにおいて新たなコーディングされているビデオシーケンスを開始するピクチャのための前のピクチャの出力
LU101216B1 (de) * 2019-05-15 2020-11-16 Phoenix Contact Gmbh & Co Technik zur Korrektur eiines Zeitparameters
MX2021016004A (es) * 2019-06-20 2022-06-16 Nokia Technologies Oy Aparato, método y programa informático para codificación y decodificación de vídeo.
CA3146230A1 (en) * 2019-07-08 2020-10-22 Huawei Technologies Co., Ltd. Handling of multiple picture size and conformance windows for reference picture resampling in video coding
US11375223B2 (en) 2019-09-20 2022-06-28 Tencent America LLC Method for signaling output layer set with sub-picture
US11109069B2 (en) 2019-09-20 2021-08-31 Tencent America LLC Signaling of scalability parameters in video bitstream
CN117528101A (zh) * 2019-09-24 2024-02-06 华为技术有限公司 序列级hrd参数
CA3152362A1 (en) * 2019-09-24 2021-04-01 Ye-Kui Wang Simulcast layers for multiview in video coding
KR20220063273A (ko) * 2019-09-24 2022-05-17 후아웨이 테크놀러지 컴퍼니 리미티드 다층 비디오 비트스트림에 대한 dpb 파라미터의 시그널링 기법
JP7425185B2 (ja) * 2019-09-24 2024-01-30 華為技術有限公司 指定されたレイヤのためのスケーラブル・ネスティングseiメッセージ
EP4032293A4 (en) * 2019-10-07 2022-11-30 Huawei Technologies Co., Ltd. ERROR PREVENTION IN A SUB-BITSTREAM EXTRACTION
WO2021125912A1 (ko) * 2019-12-20 2021-06-24 주식회사 윌러스표준기술연구소 비디오 신호 처리 방법 및 이를 위한 장치
CN114930825A (zh) 2019-12-26 2022-08-19 字节跳动有限公司 用于在编解码图片中实现解码顺序的技术
WO2021137598A1 (ko) * 2019-12-30 2021-07-08 엘지전자 주식회사 Dpb 관리 프로세스를 포함하는 영상 디코딩 방법 및 그 장치
WO2021170058A1 (en) 2020-02-27 2021-09-02 Beijing Bytedance Network Technology Co., Ltd. Transform skip residual coding
EP4101171A4 (en) 2020-02-28 2023-06-07 Huawei Technologies Co., Ltd. ENCODER, DECODER AND CORRESPONDING METHODS OF SIGNALING AND SEMANTICS IN SETS OF PARAMETERS
BR112022018108A2 (pt) 2020-03-17 2022-10-25 Bytedance Inc Método de processamento de vídeo, aparelho para processamento de dados de vídeo, e, meios de armazenamento e de gravação legíveis por computador
CA3173179A1 (en) * 2020-03-24 2021-09-30 Biao Wang An encoder, a decoder and corresponding methods for video or picture bitstream
US11228776B1 (en) * 2020-03-27 2022-01-18 Tencent America LLC Method for output layer set mode in multilayered video stream
US11265568B2 (en) * 2020-03-27 2022-03-01 Tencent America LLC Method for derivation on sublayer-wise output layer set
US20230144793A1 (en) * 2020-03-30 2023-05-11 Lg Electronics Inc. Image encoding/decoding method and apparatus for signaling information about number of dpb parameters, and computer-readable recording medium storing bitstream
BR112022019382A2 (pt) 2020-03-30 2022-11-16 Lg Electronics Inc Método e aparelho de codificação/decodificação de vídeo para sinalizar parâmetro de dpb e mídia de gravação legível por computador que armazena fluxo de bits
JP7488360B2 (ja) * 2020-04-02 2024-05-21 エルジー エレクトロニクス インコーポレイティド Dpb関連情報及びptl関連情報をシグナリングする画像符号化/復号化方法及び装置、並びにビットストリームを保存したコンピュータ可読記録媒体
CN115918083A (zh) * 2020-04-15 2023-04-04 抖音视界有限公司 子比特流提取
WO2021225338A1 (ko) * 2020-05-04 2021-11-11 엘지전자 주식회사 영상 디코딩 방법 및 그 장치
US11818398B2 (en) * 2020-05-06 2023-11-14 Sharp Kabushiki Kaisha Systems and methods for signaling video parameter information in video coding
KR20230015382A (ko) * 2020-05-22 2023-01-31 바이트댄스 아이엔씨 비디오 비트스트림 처리에서 픽처 유형들에 대한 제약들
CN115868167A (zh) 2020-05-22 2023-03-28 抖音视界有限公司 子比特流提取处理中对编解码视频的处理
EP4154524A4 (en) * 2020-06-08 2023-11-15 ByteDance Inc. SUBLAYER SIGNALING IN A VIDEO BIT STREAM
KR20230020425A (ko) 2020-06-09 2023-02-10 바이트댄스 아이엔씨 비디오 코딩에서 보충 향상 정보 메시지의 스케일러블 네스팅
WO2021251700A1 (ko) * 2020-06-09 2021-12-16 엘지전자 주식회사 Dpb 동작 기반 영상 또는 비디오 코딩
CN115699773A (zh) * 2020-06-09 2023-02-03 字节跳动有限公司 在编解码视频中信令通知图片定时信息
JP2023529447A (ja) 2020-06-09 2023-07-10 バイトダンス インコーポレイテッド サブピクチャサブビットストリーム抽出プロセスの拡張
JP7513764B2 (ja) * 2020-06-12 2024-07-09 バイトダンス インコーポレイテッド マルチレイヤビデオコーディングのピクチャヘッダ制約
US20230345028A1 (en) * 2020-09-22 2023-10-26 Lg Electronics Inc. Media file processing method and apparatus therefor
US20230102088A1 (en) * 2021-09-29 2023-03-30 Tencent America LLC Techniques for constraint flag signaling for range extension

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MY134659A (en) * 2002-11-06 2007-12-31 Nokia Corp Picture buffering for prediction references and display
JP5068947B2 (ja) * 2003-02-18 2012-11-07 ノキア コーポレイション ピクチャの符号化方法
US20050201471A1 (en) * 2004-02-13 2005-09-15 Nokia Corporation Picture decoding method
KR100679035B1 (ko) * 2005-01-04 2007-02-06 삼성전자주식회사 인트라 bl 모드를 고려한 디블록 필터링 방법, 및 상기방법을 이용하는 다 계층 비디오 인코더/디코더
US7822116B2 (en) * 2005-04-14 2010-10-26 Broadcom Corporation Method and system for rate estimation in a video encoder
WO2007042914A1 (en) * 2005-10-11 2007-04-19 Nokia Corporation Efficient decoded picture buffer management for scalable video coding
US8170116B2 (en) * 2006-03-27 2012-05-01 Nokia Corporation Reference picture marking in scalable video encoding and decoding
US20080002773A1 (en) * 2006-06-26 2008-01-03 Texas Instruments Incorporated Video decoded picture buffer
CN101518086B (zh) * 2006-07-20 2013-10-30 汤姆森特许公司 在多视图视频编码中用信号通知视图可分级性的方法和装置
WO2008018626A2 (en) * 2006-08-10 2008-02-14 Canon Kabushiki Kaisha Image decoding apparatus
US20080095228A1 (en) * 2006-10-20 2008-04-24 Nokia Corporation System and method for providing picture output indications in video coding
AU2007342468B2 (en) * 2007-01-05 2011-11-24 Interdigital Vc Holdings, Inc. Hypothetical reference decoder for scalable video coding
EP2123044A1 (en) * 2007-01-08 2009-11-25 Thomson Licensing Methods and apparatus for video stream splicing
GB0700381D0 (en) * 2007-01-09 2007-02-14 Mitsubishi Electric Inf Tech Generalised Hypothetical Reference Decoder for Scalable Video Coding with Bitstream Rewriting
US8345774B2 (en) * 2008-01-11 2013-01-01 Apple Inc. Hypothetical reference decoder
CN102342127A (zh) * 2009-01-28 2012-02-01 诺基亚公司 用于视频编码和解码的方法和装置
JP5072893B2 (ja) * 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法
US8724710B2 (en) * 2010-02-24 2014-05-13 Thomson Licensing Method and apparatus for video encoding with hypothetical reference decoder compliant bit allocation
JP5286581B2 (ja) * 2010-05-12 2013-09-11 日本電信電話株式会社 動画像符号化制御方法,動画像符号化装置および動画像符号化プログラム
JP2012015603A (ja) * 2010-06-29 2012-01-19 Sony Corp 画像処理装置及び画像映像処理方法
GB2483294B (en) * 2010-09-03 2013-01-02 Canon Kk Method and device for motion estimation of video data coded according to a scalable coding structure
US10863196B2 (en) * 2010-09-27 2020-12-08 Lg Electronics Inc. Method for partitioning block and decoding device
US9654785B2 (en) * 2011-06-09 2017-05-16 Qualcomm Incorporated Enhanced intra-prediction mode signaling for video coding using neighboring mode
WO2013012372A1 (en) * 2011-07-15 2013-01-24 Telefonaktiebolaget L M Ericsson (Publ) An encoder and method thereof for assigning a lowest layer identity to clean random access pictures
US9106927B2 (en) * 2011-09-23 2015-08-11 Qualcomm Incorporated Video coding with subsets of a reference picture set
CN102438141B (zh) * 2011-10-25 2013-03-27 中国科学技术大学 一种立体视频码流处理方法及装置
US8693551B2 (en) * 2011-11-16 2014-04-08 Vanguard Software Solutions, Inc. Optimal angular intra prediction for block-based video coding
US9451252B2 (en) * 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US9924169B2 (en) 2012-03-06 2018-03-20 Lg Electronics Inc. Method and apparatus for selecting a filter based on a variance of depth data
US9565431B2 (en) * 2012-04-04 2017-02-07 Qualcomm Incorporated Low-delay video buffering in video coding
JP6026130B2 (ja) 2012-04-10 2016-11-16 富士通コンポーネント株式会社 コンタクト、コネクタ
EP2868103B1 (en) 2012-06-29 2016-12-07 GE Video Compression, LLC Video data stream concept
US9716892B2 (en) 2012-07-02 2017-07-25 Qualcomm Incorporated Video parameter set including session negotiation information
EP2870762A4 (en) * 2012-07-06 2016-03-02 Sharp Kk ELECTRONIC DEVICES FOR SIGNALING REFERENCE FIXED DECODER PARAMETERS BASED ON SUB-IMAGES
US9351005B2 (en) 2012-09-24 2016-05-24 Qualcomm Incorporated Bitstream conformance test in video coding
US9479774B2 (en) * 2012-09-24 2016-10-25 Qualcomm Incorporated Buffering period and recovery point supplemental enhancement information messages
US8989508B2 (en) * 2012-09-28 2015-03-24 Sharp Kabushiki Kaisha Electronic device for signaling a sub-picture buffer parameter
CN108521574A (zh) 2012-09-28 2018-09-11 索尼公司 编码设备、编码方法、解码设备和解码方法
SG10201507195QA (en) 2012-09-28 2015-10-29 Sony Corp Image Processing Device
EP2901702B1 (en) 2012-09-30 2018-04-11 Huawei Technologies Co., Ltd. Signaling scalability information in a parameter set
US9374585B2 (en) 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
US20140192895A1 (en) * 2013-01-04 2014-07-10 Qualcomm Incorporated Multi-resolution decoded picture buffer management for multi-layer video coding
US9402076B2 (en) 2013-01-07 2016-07-26 Qualcomm Incorporated Video buffering operations for random access in video coding
US9591321B2 (en) 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
IL287526B (en) 2013-04-07 2022-07-01 Dolby Int Ab Signal change in systems layer output
WO2015004606A1 (en) * 2013-07-09 2015-01-15 Nokia Corporation Method and apparatus for video coding involving syntax for signalling motion information

Also Published As

Publication number Publication date
MY202068A (en) 2024-03-31
HK1221840A1 (zh) 2017-06-09
CN105379285A (zh) 2016-03-02
AU2016238857B2 (en) 2018-11-15
SG10201700399VA (en) 2017-02-27
MX361490B (es) 2018-12-07
IL281964A (en) 2021-05-31
MX351629B (es) 2017-10-23
JP2016518763A (ja) 2016-06-23
JP2022091862A (ja) 2022-06-21
AU2014252043B2 (en) 2016-11-24
BR112015025518A2 (pt) 2017-12-12
RU2017135819A (ru) 2019-02-08
IL287526A (en) 2021-12-01
US20190058895A1 (en) 2019-02-21
SG10201913551WA (en) 2020-03-30
IL262780A (en) 2018-12-31
SG10201913545TA (en) 2020-02-27
AU2019200932A1 (en) 2019-02-28
IL281964B (en) 2021-12-01
JP6549288B2 (ja) 2019-07-24
SG11201508300TA (en) 2015-11-27
CN109547815A (zh) 2019-03-29
EP2984847B1 (en) 2018-10-31
ES2708969T3 (es) 2019-04-12
UA115804C2 (uk) 2017-12-26
EP2984847A1 (en) 2016-02-17
AU2019200932B2 (en) 2021-04-08
JP2019193295A (ja) 2019-10-31
JP2021093729A (ja) 2021-06-17
PL2984847T3 (pl) 2019-05-31
US11653011B2 (en) 2023-05-16
JP6401778B2 (ja) 2018-10-10
CA2908888A1 (en) 2014-10-16
CN105379285B (zh) 2018-12-11
JP7047146B2 (ja) 2022-04-04
SG10201913548WA (en) 2020-02-27
CA3129121C (en) 2024-02-20
RU2633106C2 (ru) 2017-10-11
MY173433A (en) 2020-01-24
AU2014252043A1 (en) 2015-10-29
AU2021204708A1 (en) 2021-08-05
MX2020003705A (es) 2020-07-22
IL241918B (en) 2018-11-29
MX2015014157A (es) 2016-06-02
SG10201705212WA (en) 2017-07-28
IL272711B (en) 2020-08-31
KR102223694B1 (ko) 2021-03-04
PT2984847T (pt) 2019-02-04
RU2746310C2 (ru) 2021-04-12
HK1216959A1 (zh) 2016-12-09
RU2017135819A3 (pt) 2021-02-02
US11044487B2 (en) 2021-06-22
KR20210021118A (ko) 2021-02-24
AU2021204708B2 (en) 2023-02-02
US10448041B2 (en) 2019-10-15
IL287526B (en) 2022-07-01
CA2908888C (en) 2019-04-02
CA3129121A1 (en) 2014-10-16
CN109379603A (zh) 2019-02-22
IL272711A (en) 2020-04-30
KR102383006B1 (ko) 2022-04-04
IL276193B (en) 2021-04-29
CA3034598C (en) 2021-10-19
CN109379596A (zh) 2019-02-22
EP2984847A4 (en) 2016-11-23
EP3457700A1 (en) 2019-03-20
AU2016238857A1 (en) 2016-10-20
RU2015147558A (ru) 2017-05-16
CN109729364A (zh) 2019-05-07
WO2014167817A1 (en) 2014-10-16
JP2018164282A (ja) 2018-10-18
KR20150140777A (ko) 2015-12-16
CA3034598A1 (en) 2014-10-16
SG10201913539SA (en) 2020-02-27
US20200077107A1 (en) 2020-03-05
IL262780B (en) 2020-03-31
JP7303920B2 (ja) 2023-07-05
CN109547815B (zh) 2021-05-18
IL276193A (en) 2020-09-30
US20220150516A1 (en) 2022-05-12

Similar Documents

Publication Publication Date Title
US11653011B2 (en) Decoded picture buffer removal
US20210314584A1 (en) Signaling change in output layer sets
US10154289B2 (en) Signaling DPB parameters in VPS extension and DPB operation
WO2015004924A1 (en) Scaling list signaling and parameter sets activation

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
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]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B09W Correction of the decision to grant [chapter 9.1.4 patent gazette]

Free format text: RETIFICACAO DO QUADRO REIVINDICATORIO SOLICITADO PELA REQUERENTE (CORRECAO DE ERRO DE DIGITACAO/TRADUCAO).

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 04/04/2014, OBSERVADAS AS CONDICOES LEGAIS