BR112021002491A2 - gerenciamento de imagens de referência em codificação de vídeo - Google Patents
gerenciamento de imagens de referência em codificação de vídeo Download PDFInfo
- Publication number
- BR112021002491A2 BR112021002491A2 BR112021002491-3A BR112021002491A BR112021002491A2 BR 112021002491 A2 BR112021002491 A2 BR 112021002491A2 BR 112021002491 A BR112021002491 A BR 112021002491A BR 112021002491 A2 BR112021002491 A2 BR 112021002491A2
- Authority
- BR
- Brazil
- Prior art keywords
- slice
- list
- image
- pic
- ref
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 234
- 238000003860 storage Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 15
- 238000004891 communication Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims 2
- 238000009795 derivation Methods 0.000 abstract description 16
- 230000008569 process Effects 0.000 description 156
- 241001482237 Pica Species 0.000 description 83
- 230000007774 longterm Effects 0.000 description 74
- 238000013469 resistive pulse sensing Methods 0.000 description 40
- 239000013598 vector Substances 0.000 description 23
- 230000011664 signaling Effects 0.000 description 21
- 101150103552 cagE gene Proteins 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000013139 quantization Methods 0.000 description 11
- 238000013459 approach Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000002123 temporal effect Effects 0.000 description 10
- 238000011161 development Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 7
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 238000010276 construction Methods 0.000 description 7
- 238000005192 partition Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 229920000069 polyphenylene sulfide Polymers 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 239000012536 storage buffer Substances 0.000 description 4
- 241000023320 Luma <angiosperm> Species 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 101150114515 CTBS gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000002513 implantation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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 slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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 block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/467—Embedding additional information in the video signal during the compression process characterised by the embedded information being invisible, e.g. watermarking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/58—Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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/44004—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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/44008—Processing 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 operations for analysing video streams, e.g. detecting features or characteristics in the video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/441—Acquiring end-user identification, e.g. using personal code sent by the remote control or by inserting a card
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
GERENCIAMENTO DE IMAGENS DE REFERÊNCIA EM CODIFICAÇÃO DE VÍDEO. Um método de decodificação de um fluxo de bits de vídeo codificado é fornecido. O método inclui obter uma primeira estrutura de lista de imagens de referência e uma segunda estrutura de lista de imagens de referência representadas no fluxo de bits de vídeo codificado; derivar, com base na primeira estrutura de lista de imagens de referência e na segunda estrutura de lista de imagens de referência, uma primeira lista de imagens de referência de uma fatia atual e uma segunda lista de imagens de referência da fatia atual, em que a fatia atual compreende uma fatia intra (I) ou uma fatia unipreditiva (P); e obter pelo menos um bloco reconstruído da fatia atual seguindo derivação da primeira lista de imagens de referência e da segunda lista de imagens de referência.
Description
[0001] A presente revelação refere-se, de modo geral, a técnicas para gerenciamento de imagens de referência em codificação de vídeo. Mais especificamente, esta revelação descreve técnicas para construção de listas de imagens de referência e marcação de imagem de referência.
[0002] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, que pode resultar em dificuldades quando os dados devem ser transmitidos ou comunicados de outro modo por meio de uma rede de comunicações com capacidade de largura de banda limitada. Desse modo, os dados de vídeo são, de modo geral, comprimidos antes de serem comunicados por meio de redes de telecomunicações atuais. O tamanho de um vídeo também pode ser uma questão quando o vídeo é armazenado em um dispositivo de armazenamento visto que os recursos de memória podem ser limitados. Os dispositivos de compressão de vídeo normalmente usam software e/ou hardware na origem para codificar os dados de vídeo antes de transmissão ou armazenamento, diminuindo, desse modo, a quantidade de dados necessária para representar imagens de vídeo digital. Os dados comprimidos são, então, recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas crescentes por maior qualidade de vídeo, as técnicas de compressão e descompressão aperfeiçoadas que aperfeiçoam a razão de compressão com pouco ou nenhum comprometimento na qualidade de imagem são desejáveis.
[0003] Um primeiro aspecto se refere a um método de decodificação de um fluxo de bits de vídeo codificado. O método compreende obter uma estrutura de primeira lista de imagens de referência e uma estrutura de segunda lista de imagens de referência representadas no fluxo de bits de vídeo codificado; derivar, com base na estrutura de primeira lista de imagens de referência e na estrutura de segunda lista de imagens de referência, uma primeira lista de imagens de referência de uma fatia atual e uma segunda lista de imagens de referência da fatia atual, em que a fatia atual compreende uma fatia intra (I), uma fatia unipreditiva (P) ou uma fatia bipreditiva (B); e obter pelo menos um bloco reconstruído da fatia atual após derivação da primeira lista de imagens de referência e da segunda lista de imagens de referência.
[0004] O método fornece técnicas que simplificam e tornam mais eficiente a sinalização de listas de imagens de referência. Portanto, o processo de codificação geral é aperfeiçoado.
[0005] Em uma primeira forma de implantação do método de acordo com o primeiro aspecto como tal, uma ordem de entradas na estrutura de lista de imagens de referência é igual a uma ordem de imagens de referência correspondentes na lista de imagens de referência.
[0006] Em uma segunda forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, a ordem é de zero a um valor indicado.
[0007] Em uma terceira forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, o valor indicado é de zero a um valor indicado por sps_max_dec_pic_buffering_minus1.
[0008] Em uma quarta forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, a lista de imagens de referência é designada RefPictList[0].
[0009] Em uma quinta forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, a lista de imagens de referência é designada RefPictList[1].
[0010] Em uma sexta forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, o pelo menos um bloco reconstruído é usado para gerar uma imagem exibida em um visor de um dispositivo eletrônico.
[0011] Em uma sétima forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, a lista de imagens de referência compreende uma lista de imagens de referência usada para predição inter.
[0012] Em uma oitava forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, a predição inter é para a fatia P ou para a fatia B.
[0013] Em uma nona forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, o cabeçalho de fatia contém uma flag de conjunto de parâmetros de sequência (SPS) de lista de imagens de referência designada ref_pic_list_sps_flag[ i ].
[0014] Em uma décima forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, o cabeçalho de fatia contém uma flag de substituição ativa de índice de referência numérico designada por num_ref_idx_active_override_flag.
[0015] Em uma décima primeira forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, a lista de imagens de referência é designada RefPictList[0] ou RefPictList[1], e uma ordem de entradas na estrutura de lista de imagens de referência é igual a uma ordem de imagens de referência correspondentes na lista de imagens de referência.
[0016] Em uma décima segunda forma de implantação do método de acordo com o primeiro aspecto como tal ou qualquer forma de implantação antecedente do primeiro aspecto, a fatia atual é a fatia I ou a fatia P.
[0017] Um segundo aspecto se refere a um dispositivo de decodificação que inclui um receptor configurado para receber um fluxo de bits de vídeo codificado; uma memória acoplada ao receptor, a memória armazena instruções; e um processador acoplado à memória, o processador configurado para executar as instruções armazenadas na memória para levar o processador a: obter uma estrutura de primeira lista de imagens de referência e uma estrutura de segunda lista de imagens de referência representadas no fluxo de bits de vídeo codificado; derivar, com base na estrutura de primeira lista de imagens de referência e na estrutura de segunda lista de imagens de referência, uma primeira lista de imagens de referência de uma fatia atual e uma segunda lista de imagens de referência da fatia atual, em que a fatia atual compreende uma fatia intra (I), uma fatia unipreditiva (P), ou uma fatia bipreditiva (B); e obter pelo menos um bloco reconstruído da fatia atual após derivação da primeira lista de imagens de referência e da segunda lista de imagens de referência.
[0018] O dispositivo de decodificação fornece técnicas que simplificam e tornam mais eficiente a sinalização de listas de imagens de referência. Portanto, o processo de codificação geral é aperfeiçoado.
[0019] Em uma primeira forma de implantação do dispositivo de decodificação de acordo com o segundo aspecto como tal, o dispositivo de decodificação inclui adicionalmente um visor configurado para exibir uma imagem com base no pelo menos um bloco reconstruído.
[0020] Um terceiro aspecto se refere a um aparelho de codificação que inclui um receptor configurado para receber um fluxo de bits para decodificar; um transmissor acoplado ao receptor, o transmissor configurado para transmitir uma imagem decodificada para um visor; uma memória acoplada a pelo menos um dentre o receptor ou o transmissor, a memória configurada para armazenar instruções; e um processador acoplado à memória, o processador configurado para executar as instruções armazenadas na memória para realizar o método em qualquer um dentre os aspectos ou implantações antecedentes.
[0021] Um quarto aspecto se refere a um sistema que inclui um codificador e um decodificador em comunicação com o codificador. O codificador ou o decodificador inclui o dispositivo de decodificação ou o aparelho de codificação de qualquer um dentre os aspectos ou implantações antecedentes.
[0022] O sistema fornece técnicas que simplificam e tornam mais eficiente a sinalização de listas de imagens de referência. Portanto, o processo de codificação geral é aperfeiçoado.
[0023] Um quinto aspecto se refere a um meio para codificação que inclui meio de recebimento configurado para receber uma imagem para codificar ou receber um fluxo de bits para decodificar, meio de transmissão acoplado ao meio de recebimento, o meio de transmissão configurado para transmitir o fluxo de bits para um decodificador ou transmitir uma imagem decodificada para um meio de exibição, meio de armazenamento acoplado a pelo menos um dentre o meio de recebimento ou o meio de transmissão, o meio de armazenamento configurado para armazenar instruções, e meio de processamento acoplado ao meio de armazenamento, o meio de processamento configurado para executar as instruções armazenadas no meio de armazenamento para realizar os métodos em qualquer um dentre os aspectos ou implantações antecedentes.
[0024] O meio para codificação fornece técnicas que simplificam e tornam mais eficiente a sinalização de listas de imagens de referência. Portanto, o processo de codificação geral é aperfeiçoado.
[0025] Para um entendimento mais completo desta revelação, referência é feita à breve descrição a seguir, obtida em conjunto com os desenhos anexos e descrição detalhada, em que referências numéricas similares representam partes similares.
[0026] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação exemplificativo que pode usar técnicas de predição bilateral.
[0027] A Figura 2 é um diagrama de blocos que ilustra um codificador de vídeo exemplificativo que pode implantar técnicas de predição bilateral.
[0028] A Figura 3 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implantar técnicas de predição bilateral.
[0029] A Figura 4 é um diagrama esquemático que ilustra um conjunto de imagens de referência (RPS) que tem uma imagem com entradas em todos os subconjuntos do RPS.
[0030] A Figura 5 é uma modalidade de um método de decodificação de um fluxo de bits de vídeo codificado.
[0031] A Figura 6 é um diagrama esquemático de um dispositivo de codificação de vídeo.
[0032] A Figura 7 é um diagrama esquemático de uma modalidade de um meio para codificação.
[0033] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação exemplificativo 10 que pode usar técnicas de codificação de vídeo conforme descrito na presente invenção. Conforme mostrado na Figura 1, o sistema de codificação 10 inclui um dispositivo de origem 12 que fornece dados de vídeo codificados para serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 pode fornecer os dados de vídeo para o dispositivo de destino 14 por meio de uma mídia legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores do tipo desktop, computadores do tipo notebook (por exemplo, laptop), computadores do tipo tablet, decodificadores de sinais, aparelhos de telefone, tais como telefones denominados “inteligentes”, denominados “smart” pads, televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de vídeo game, dispositivo de transmissão contínua de vídeo ou similares. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0034] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados por meio da mídia legível por computador
16. A mídia legível por computador 16 pode compreender qualquer tipo de mídia ou dispositivo com a capacidade de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, a mídia legível por computador 16 pode compreender uma mídia de comunicação para possibilitar que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos ao dispositivo de destino 14. A mídia de comunicação pode compreender qualquer mídia de comunicação com ou sem fio, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. A mídia de comunicação pode fazer parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla ou uma rede global, tal como a Internet. A mídia de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo de origem 12 para o dispositivo de destino 14.
[0035] Em alguns exemplos, os dados codificados podem ser emitidos da interface de saída 22 para um dispositivo de armazenamento. De modo similar, os dados codificados podem ser acessados a partir do dispositivo de armazenamento através de interface de entrada. O dispositivo de armazenamento pode incluir qualquer uma dentre uma variedade de mídias de armazenamento de dados distribuídas ou acessadas localmente, tais como unidades rígidas, discos Blu-ray, discos de vídeo digital (DVDs), Disco Compacto Memória Somente Leitura (CD-ROMs), memória flash, memória volátil ou não volátil ou quaisquer outras mídias de armazenamento digital adequadas para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento através de transmissão contínua ou por download. O servidor de arquivos pode ser qualquer tipo de servidor com a capacidade de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados ao dispositivo de destino 14. Os servidores de arquivos exemplificativos incluem um servidor da web (por exemplo, para um site da web), um servidor de protocolo de transferência de arquivos (FTP), dispositivos de armazenamento ligados à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, linha de assinante digital (DSL), modem a cabo, etc.), ou uma combinação de ambos que é adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão contínua, uma transmissão por download ou uma combinação das mesmas.
[0036] As técnicas desta revelação não são limitadas, necessariamente, a aplicações ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo com apoio de qualquer um dentre uma variedade de aplicações multimídia, tais como difusões por televisão pelo ar, transmissões por televisão a cabo, transmissões por televisão via satélite, transmissões de vídeo contínuas através da Internet, tais como transmissão contínua adaptativa dinâmica através de HTTP (DASH), vídeo digital que é codificado em uma mídia de armazenamento de dados, decodificação de vídeo digital armazenado em uma mídia de armazenamento de dados ou outras aplicações. Em alguns exemplos, o sistema de codificação 10 pode ser configurado para suportar transmissão de vídeo de uma direção ou duas direções para suportar aplicações, tais como transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia por vídeo.
[0037] No exemplo da Figura 1, dispositivo de origem 12 inclui fonte de vídeo 18, codificador de vídeo 20, e interface de saída 22. O dispositivo de destino 14 inclui interface de entrada 28, decodificador de vídeo 30, e dispositivo de exibição 32. Em conformidade com esta revelação, o codificador de vídeo 20 do dispositivo de origem 12 e/ou o decodificador de vídeo 30 do dispositivo de destino 14 podem ser configurados para aplicar as técnicas para codificação de vídeo. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa, tal como uma câmera externa. Do mesmo modo, o dispositivo de destino 14 pode fazer interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0038] O sistema de codificação ilustrado 10 da Figura 1 é apenas um exemplo. As técnicas para codificação de vídeo podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora as técnicas desta revelação sejam geralmente realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador/decodificador de vídeo, tipicamente denominado um “CODEC”. Além disso, as técnicas desta revelação também podem ser realizadas por um pré- processador de vídeo. O codificador de vídeo e/ou o decodificador podem ser uma unidade de processamento gráfico (GPU) ou um dispositivo similar.
[0039] O dispositivo de origem 12 e o dispositivo de destino 14 são apenas exemplos de tais dispositivos de codificação nos quais o dispositivo de origem 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, o dispositivo de origem 12 e o dispositivo de destino 14 podem operar em um modo substancialmente simétrico de modo que cada um dentre os dispositivos de origem e destino 12, 14 inclua componentes de codificação e decodificação de vídeo. Portanto, o sistema de codificação 10 pode suportar transmissão de vídeo de uma direção ou duas direções entre dispositivos de vídeo 12, 14, por exemplo, para transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo ou telefonia por vídeo.
[0040] A fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo previamente capturado e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Conforme uma alternativa adicional, a fonte de vídeo 18 pode gerar dados com base em computação gráfica como o vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador.
[0041] Em alguns casos, quando a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar telefones com câmera ou telefones com vídeo. Conforme mencionado acima, entretanto, as técnicas descritas nesta revelação podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações com e/ou sem fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificado podem ser, então, emitidas pela interface de saída 22 para uma mídia legível por computador 16.
[0042] A mídia legível por computador 16 pode incluir mídias transientes, tais como uma difusão sem fio ou transmissão de rede com fio, ou mídias de armazenamento (ou seja, mídias de armazenamento não transitórias), tais como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray ou outras mídias legíveis por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo de origem 12 e fornecer os dados de vídeo codificados ao dispositivo de destino 14, por exemplo, por meio de transmissão por rede. De modo similar, um dispositivo de computação de uma instalação de produção de mídia, tal como uma instalação de estampagem de disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, a mídia legível por computador 16 pode ser entendida como incluindo uma ou mais mídias legíveis por computador de várias formas, em vários exemplos.
[0043] A interface de entrada 28 do dispositivo de destino 14 recebe informações da mídia legível por computador 16. As informações da mídia legível por computador 16 podem incluir informações de sintaxe definidas pelo codificador de vídeo 20, que também são usadas pelo decodificador de vídeo 30, que incluem elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, grupo de imagens (GOPs). O dispositivo de exibição 32 exibe os dados de vídeo decodificados a um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição, tais como um tubo de raios catódicos (CRT), um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo orgânico emissor de luz (OLED) ou outro tipo de dispositivo de exibição.
[0044] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e podem estar em conformidade com o Modelo de Teste HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou industriais, tais como o padrão de Setor de Padronização de Telecomunicação de União Internacional de Telecomunicações (ITU-T) H.264, denominado, de modo alternativo, Grupo de Especialistas em Imagem em Movimento (MPEG)-4, Parte 10, Codificação de Vídeo Avançada (AVC), H.265/HEVC, ou extensões de tais padrões. As técnicas desta revelação, entretanto, não são limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263. Embora não mostrado na Figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados a um codificador e decodificador de áudio, e podem incluir unidades de multiplexador-demultiplexador (MUX-DEMUX) apropriadas ou outro hardware e software, para realizar codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicáveis, as unidades MUX-DEMUX podem estar em conformidade com o protocolo de multiplexador ITU H.223 ou outros protocolos, tais como o protocolo de datagrama de usuário (UDP).
[0045] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, implantados como qualquer um dentre uma variedade de circuitos de codificador adequado, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia legível por computador não transitória adequada e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas desta revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, em que qualquer um dos mesmos pode ser integrado como parte de um codificador/decodificador combinado (CODEC)
em um respectivo dispositivo. Um dispositivo que inclui o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0046] A Figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20 que pode implantar técnicas de codificação de vídeo. O codificador de vídeo 20 pode realizar codificação intra e inter de blocos de vídeo dentro de fatias de vídeo. Codificação intra depende de predição espacial para reduzir ou remover redundância espacial em vídeo dentro de um dado quadro de vídeo ou imagem. Codificação inter depende de predição temporal para reduzir ou remover redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. Modo intra (modo I) pode se referir a qualquer um dentre diversos modos de codificação com base espacial. Modos inter, tais como predição unidirecional (também conhecida como uni prediction) (modo P) ou bipredição (também conhecida como bi prediction) (modo B), podem se referir a qualquer um dentre diversos modos de codificação com base temporal.
[0047] Conforme mostrado na Figura 2, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da Figura 2, o codificador de vídeo 20 inclui unidade de seleção de modo 40, memória de quadro de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54 e unidade de codificação de entropia 56. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, a unidade de estimação de movimento 42, a unidade de predição intra (também conhecida como intra prediction) 46 e a unidade de partição 48. Para reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de quantização inversa 58, a unidade de transformada inversa 60 e o somador 62. Um filtro de desbloqueio (não mostrado na Figura 2) também pode ser incluído para filtrar delimitações de bloco para remover artefatos de bloqueio de vídeo reconstruído. Se desejado, o filtro de desbloqueio tipicamente filtrará a saída do somador 62. Filtros adicionais (in-loop ou post-loop) também podem ser usados além do filtro de desbloqueio. Tais filtros não são mostrados por questão de concisão, mas se desejado, podem filtrar a saída do somador 50 (como um filtro in-loop).
[0048] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo a ser codificado. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 realizam codificação preditiva inter do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer predição temporal. A unidade de predição intra 46 pode realizar, de modo alternativo, codificação preditiva intra do bloco de vídeo recebido em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer predição espacial. O codificador de vídeo 20 pode realizar múltiplas passas de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0049] Além disso, a unidade de partição 48 pode particionar blocos de dados de vídeo em sub-blocos, com base em avaliação de esquemas de particionamento anteriores em passas de codificação anteriores. Por exemplo, a unidade de partição 48 pode particionar inicialmente um quadro ou fatia em unidades de codificação maiores (LCUs), e particionar cada uma dentre as LCUs em unidades de subcodificação (sub-CUs) com base em análise de taxa-distorção (por exemplo, otimização de taxa-distorção). A unidade de seleção de modo 40 pode produzir adicionalmente uma estrutura de dados de quadtree indicativa de particionamento de uma LCU em sub-CUs. CUs de nó-folha da quadtree podem incluir uma ou mais unidades de predição (PUs) e uma ou mais unidades de transformada (TUs).
[0050] A presente revelação usa o termo “bloco” para se referir a qualquer uma dentre uma CU, PU ou TU, no contexto de HEVC, ou estruturas de dados similares no contexto de outros padrões (por exemplo, macroblocos e sub- blocos das mesmas em H.264/AVC). Uma CU inclui um nó de codificação, PUs e TUs associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e tem formato quadrangular. O tamanho da CU pode variar de 8×8 pixels até o tamanho do bloco de árvore com um máximo de 64×64 pixels ou maior. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados a uma CU podem descrever, por exemplo, particionamento da CU em uma ou mais PUs. Os modos de particionamento podem diferir entre a CU ser ignorada ou codificada por modo direto, codificada por modo de predição intra ou codificada por modo de predição inter (também conhecido como inter prediction). As PUs podem ser particionadas para ter formato não quadrangular. Os dados de sintaxe associados a uma CU também podem descrever, por exemplo, particionamento da CU em uma ou mais TUs de acordo com uma quadtree. Uma TU pode ter formato quadrangular ou não quadrangular (por exemplo, retangular).
[0051] A unidade de seleção de modo 40 pode selecionar um dentre os modos de codificação, intra ou inter, por exemplo, com base em resultados de erro, e fornece o bloco codificado de modo intra ou inter resultante ao somador 50 para gerar dados de bloco residual e ao somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, tais como vetores de movimento, indicadores modo intra, informações de partição e outras tais informações de sintaxe, para a unidade de codificação de entropia 56.
[0052] A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas de forma separada para fins conceituais. A estimação de movimento, realizada pela unidade de estimação de movimento 42, é o processo de geração de vetores de movimento, que estimam movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro de vídeo atual ou imagem em relação a um bloco preditivo dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco preditivo é um bloco que é considerado ser bastante compatível com o bloco a ser codificado, em termos de diferença de pixel, que pode ser determinado por soma absoluta de diferenças (SAD), soma de diferenças quadráticas (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel de número subinteiro de imagens de referência armazenadas na memória de quadro de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de pixel de um quarto, posições de pixel de um oitavo ou outras posições de pixel fracionadas da imagem de referência. Portanto, a unidade de estimação de movimento 42 pode realizar uma busca de movimento em relação às posições de pixel inteiras e posições de pixel fracionadas e emitir um vetor de movimento com precisão de pixel fracionada.
[0053] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia codificada de modo inter comparando-se a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de quadro de referência 64. A unidade de estimação de movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e a unidade de compensação de movimento 44.
[0054] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pela unidade de estimação de movimento 42. Novamente, a unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Mediante recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma dentre as listas de imagens de referência. O somador 50 forma um bloco de vídeo residual subtraindo-se valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel, conforme discutido abaixo. Em geral, a unidade de estimação de movimento 42 realiza estimação de movimento em relação a componentes luma, e a unidade de compensação de movimento 44 usa vetores de movimento calculados com base nos componentes luma para componentes croma e componentes luma. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados aos blocos de vídeo e à fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0055] A unidade de predição intra 46 pode predizer intra um bloco atual, como uma alternativa à predição inter realizada pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44, conforme descrito acima. Em particular, a unidade de predição intra 46 pode determinar um modo de predição intra para uso para codificar um bloco atual. Em alguns exemplos, a unidade de predição intra 46 pode codificar um bloco atual com o uso de vários modos de predição intra, por exemplo, durante passas de codificação separadas, e a unidade de predição intra 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de predição intra apropriado para usar a partir dos modos testados.
[0056] Por exemplo, a unidade de predição intra 46 pode calcular valores de taxa-distorção com o uso de uma análise de taxa-distorção para os vários modos de predição intra testados, e selecionar o modo de predição intra que tem as melhores características de taxa-distorção entre os modos testados. A análise de taxa-distorção geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (ou seja, um número de bits) usada para produzir o bloco codificado. A unidade de predição intra 46 pode calcular razões das distorções e taxas para os vários blocos codificados para determinar qual modo de predição intra exibe o melhor valor taxa- distorção para o bloco.
[0057] Além disso, a unidade de predição intra 46 pode ser configurada para codificar blocos de profundidade de um mapa de profundidade com o uso de um modo de modelagem de profundidade (DMM). A unidade de seleção de modo 40 pode determinar se um modo de DMM disponível produz resultados de codificação melhores do que um modo de predição intra e os outros modos de DMM, por exemplo, com o uso de otimização de taxa-distorção (RDO). Os dados para uma imagem de textura que corresponde a um mapa de profundidade podem ser armazenados na memória de quadro de referência 64. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 também podem ser configuradas para predizer inter blocos de profundidade de um mapa de profundidade.
[0058] Após selecionar um modo de predição intra para um bloco (por exemplo, um modo de predição intra convencional ou um dentre os modos de DMM), a unidade de predição intra 46 pode fornecer informações indicativas do modo de predição intra selecionado para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar as informações que indicam o modo de predição intra selecionado. O codificador de vídeo 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, que podem incluir uma pluralidade de tabelas de índice de modo de predição intra e uma pluralidade de tabelas de índice de modo de predição intra modificadas (também denominadas tabelas de mapeamento de palavra-código), definições de contextos de codificação para vários blocos, e indicações de um modo de predição intra mais provável, uma tabela de índice de modo de predição intra e uma tabela de índice de modo de predição intra modificada para uso para cada um dentre os contextos.
[0059] O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo-se os dados de predição da unidade de seleção de modo 40 do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que realizam essa operação de subtração.
[0060] A unidade de processamento de transformada 52 aplica uma transformada, tal como uma transformada discreta de cosseno (DCT) ou uma transformada conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficiente de transformada residuais. A unidade de processamento de transformada 52 pode realizar outras transformadas que são conceitualmente similares à DCT. As transformadas de wavelet, transformadas de número inteiro, transformadas de sub-banda ou outros tipos de transformadas também podem ser usados.
[0061] A unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter as informações residuais de um domínio de valor de pixel para um domínio de transformada, tal como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização
54. A unidade de quantização 54 quantiza os coeficientes de transformada para reduzir ainda mais a taxa de bit. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode, então, realizar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Alternativamente, a unidade de codificação de entropia 56 pode realizar a varredura.
[0062] Após a quantização, a unidade de codificação de entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo,
a unidade de codificação de entropia 56 pode realizar codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária com base em sintaxe adaptativa ao contexto (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra técnica de codificação de entropia. No caso de codificação de entropia com base em contexto, contexto pode se basear em blocos vizinhos. Após a codificação de entropia pela unidade de codificação de entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, decodificador de vídeo 30) ou arquivado para transmissão ou recuperação posterior.
[0063] A unidade de quantização inversa 58 e a unidade de transformada inversa 60 aplicam quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando-se o bloco residual em um bloco preditivo de um dentre os quadros de memória de quadro de referência 64. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel de número subinteiro para uso em estimação de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de quadro de referência 64. O bloco de vídeo reconstruído pode ser usado pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para codificar de modo inter um bloco em um quadro de vídeo subsequente.
[0064] A Figura 3 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30 que pode implantar técnicas de codificação de vídeo. No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 70, unidade de compensação de movimento 72, unidade de predição intra 74, unidade de quantização inversa 76, unidade de transformação inversa 78, memória de quadro de referência 82 e somador 80. O decodificador de vídeo 30 pode realizar, em alguns exemplos, uma passa de decodificação geralmente recíproco à passa de codificação descrito em relação ao codificador de vídeo 20 (Figura 2). A unidade de compensação de movimento 72 pode gerar dados de predição com base em vetores de movimento recebidos da unidade de decodificação de entropia 70, enquanto a unidade de predição intra 74 pode gerar dados de predição com base em indicadores de modo de predição intra recebidos da unidade de decodificação de entropia 70.
[0065] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificado e elementos de sintaxe associados do codificador de vídeo 20. A unidade de decodificação de entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores de modo de predição intra e outros elementos de sintaxe. A unidade de decodificação de entropia 70 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.
[0066] Quando a fatia de vídeo é codificada como uma fatia codificada de modo intra (I), a unidade de predição intra 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de predição intra sinalizado e dados de blocos previamente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia codificada de modo inter (por exemplo, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 70. Os blocos preditivos podem ser produzidos a partir de uma dentre as imagens de referência dentro de uma dentre as listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, com o uso de técnicas de construção padrão com base em imagens de referência armazenadas na memória de quadro de referência 82.
[0067] A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia de vídeo atual analisando-se os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento
72 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, fatia B, fatia P ou fatia GPB), informações de construção para uma ou mais dentre as listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, status de predição inter para cada bloco de vídeo codificado de modo inter da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0068] A unidade de compensação de movimento 72 também pode realizar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode usar filtros de interpolação conforme usado pelo codificador de vídeo 20 durante codificação dos blocos de vídeo para calcular valores interpolados para pixels de número subinteiro de blocos de referência. Nesse caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos preditivos.
[0069] Os dados para uma imagem de textura que corresponde a um mapa de profundidade podem ser armazenados na memória de quadro de referência 82. A unidade de compensação de movimento 72 também pode ser configurada para predizer inter blocos de profundidade de um mapa de profundidade.
[0070] A compressão de imagem e vídeo passou por um rápido crescimento, levando a vários padrões de codificação. Tais padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC Grupo de Especialistas em Imagem em Movimento (MPEG)-1 Parte 2, ITU-T H.262 ou Organização Internacional para Padronização (ISO)/ Comissão Internacional Eletrotécnica (IEC) MPEG-2 Parte 2, ITU-T H.263, ISO/IEC MPEG-4 Parte 2, Codificação de Vídeo Avançada (AVC), também conhecida como ITU-T H.264 ou ISO/IEC MPEG-4 Parte 10, e Codificação de Vídeo de Alta Eficiência (HEVC), também conhecida como ITU-T H.265 ou MPEG-H Parte 2. AVC inclui extensões, tais como Codificação de Vídeo Escalável (SVC), Codificação de Vídeo Multivista (MVC) e Codificação de Vídeo Multivista mais Profundidade (MVC+D), e 3D AVC (3D-AVC). HEVC inclui extensões, tais como HEVC Escalável (SHVC), HEVC
Multivista (MV-HEVC), e 3D HEVC (3D-HEVC).
[0071] Codificação de Vídeo Versátil (VVC) é um novo padrão de codificação de vídeo em desenvolvimento pela equipe de especialistas em vídeo conjunta (JVET) de ITU-T e ISO/IEC. No momento da redação, o Projeto de Trabalho (WD) mais recente de VVC está incluído em JVET-K1001-v1. O documento JVET JVET-K0325-v3 inclui uma atualização para a sintaxe de alto nível de VVC.
[0072] Em geral, a presente revelação descreve técnicas com base no desenvolvimento do padrão VVC. Entretanto, as técnicas também se aplicam a outras especificações de codec de vídeo/mídia.
[0073] As técnicas de compressão de vídeo realizam predição espacial (imagem intra) e/ou predição temporal (imagem inter) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (por exemplo, uma imagem de vídeo ou uma porção de uma imagem de vídeo) pode ser particionada em blocos de vídeo, que também podem ser denominados blocos de árvore, blocos de árvore de codificação (CTBs), unidades de árvore de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia codificada de modo intra (I) de uma imagem são codificados com o uso de predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia codificada de modo inter (P ou B) de uma imagem podem usar predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. As imagens podem ser denominadas quadros, e as imagens de referência podem ser denominadas quadros de referência.
[0074] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco codificado de modo inter é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco codificado de modo intra é codificado de acordo com um modo de codificação intra e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residuais, que podem ser, então, quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em um arranjo bidimensional, podem ser escaneados a fim de produzir um vetor unidimensional de coeficientes de transformada, e codificação de entropia pode ser aplicada para alcançar ainda mais compressão.
[0075] Em uma especificação de codec de vídeo, imagens são identificadas para múltiplas finalidades, incluindo para uso como uma imagem de referência em predição inter, para saída de imagens do buffer de imagem decodificada (DPB), para escalonamento de vetores de movimento, para predição ponderada, etc. Em AVC e HEVC, imagens podem ser identificadas por contagem de ordem de imagem (POC). Em AVC e HEVC, imagens no DPB podem ser marcadas como “usada para referência de curto prazo”, “usada para referência de longo prazo” ou “não usada para referência”. Uma vez que uma imagem tiver sido marcada “não usada para referência”, a imagem não pode mais ser usada para predição. Quando a imagem não é mais necessária para emissão, a imagem pode ser removida do DPB.
[0076] Em AVC, há dois tipos de imagens de referência, de curto prazo e longo prazo. Uma imagem de referência pode ser marcada como “não usada para referência” quando não se torna mais necessária para referência de predição. A conversão entre esses três status (de curto prazo, longo prazo e não usada para referência) é controlada pelo processo de marcação de imagem de referência decodificada. Há dois mecanismos de marcação de imagem de referência decodificada alternativos, o processo de janela deslizante implícito e o processo de operação de controle de gerenciamento de memória (MMCO) explícito. O processo de janela deslizante marca uma imagem de referência de curto prazo como “não usada para referência” quando o número de quadros de referência é igual a um número máximo dado (max_num_ref_frames no conjunto de parâmetros de sequência (SPS)). As imagens de referência de curto prazo são armazenadas de um modo primeiro a entrar, primeiro a sair de modo que as imagens de curto prazo mais recentemente decodificadas sejam mantidas no DPB.
[0077] O processo de MMCO explícito pode incluir múltiplos comandos de MMCO. Um comando de MMCO pode marcar uma ou mais imagens de referência de curto prazo ou de longo prazo como “não usada para referência,” pode marcar todas as imagens como “não usada para referência” ou pode marcar a imagem de referência atual ou uma imagem de referência de curto prazo existente como longo prazo e, então, atribuir um índice de imagem de longo prazo àquela imagem de referência de longo prazo.
[0078] Em AVC, as operações de marcação de imagem de referência bem como os processos para emissão e remoção de imagens do DPB são realizadas após uma imagem ter sido decodificada.
[0079] HEVC introduz uma abordagem diferente para gerenciamento de imagens de referência, denominada conjunto de imagens de referência (RPS). A diferença mais fundamental com o conceito de RPS em comparação ao processo de MMCO/janela deslizante de AVC é que, para cada fatia particular, um conjunto completo das imagens de referência usadas pela imagem atual ou qualquer imagem subsequente é fornecido. Desse modo, um conjunto completo de todas as imagens que precisam ser mantidas no DPB para uso pela imagem atual ou futura é sinalizado. Isso é diferente do esquema AVC em que apenas mudanças relativas para o DPB são sinalizadas. Com o conceito de RPS, nenhuma informação de imagens anteriores em ordem de decodificação é necessária para manter o status correto de imagens de referência no DPB.
[0080] A ordem de operações de DPB e decodificação de imagem em HEVC é alterada em comparação a AVC a fim de explorar as vantagens de RPS e aperfeiçoar resiliência ao erro. Em AVC, operações de marcação de imagem e buffer (emissão e remoção de imagens decodificadas do DPB) são geralmente aplicadas após uma imagem atual ter sido decodificada. Em HEVC, o RPS é primeiro decodificado a partir de um cabeçalho de fatia da imagem atual, então, marcação de imagem e operações de buffer são geralmente aplicados antes de decodificar a imagem atual.
[0081] Cada cabeçalho de fatia em HEVC precisa incluir parâmetros para sinalização do RPS para a imagem contendo as fatias. A única exceção é que nenhum RPS é sinalizado para fatias de Restauração Instantânea de Decodificação (IDR). Em vez disso, deduz-se que o RPS esteja vazio. Para fatias I que não pertencem a uma imagem IDR, um RPS pode ser fornecido, até mesmo se pertencerem a uma imagem I visto que pode haver imagens que sucedem a imagem I em ordem de decodificação que usam predição inter a partir de imagens que precederam a imagem I em ordem de decodificação. O número de imagens em um RPS não deve exceder o limite de tamanho de DPB conforme especificado pelo elemento de sintaxe sps_max_dec_pic_buffering no SPS.
[0082] Cada imagem é associada a um valor de POC que representa a ordem de saída. Os cabeçalhos de fatia contêm uma palavra-código de comprimento fixo, pic_order_cnt_lsb, que representa os bits menos significativos (LSB) do valor de POC inteiro, também conhecido como o POC LSB. O comprimento da palavra-código é sinalizado no SPS e pode ser, por exemplo, entre 4 e 16 bits. O conceito de RPS usa POC para identificar imagens de referência. Além de seu próprio valor de POC, cada cabeçalho de fatia contém diretamente ou herda do SPS uma representação codificada dos valores de POC (ou dos LSBs) de cada imagem no RPS.
[0083] O RPS para cada imagem consiste em cinco listas de imagens de referência diferentes, também denominadas os cinco subconjuntos de RPS. RefPicSetStCurrBefore consiste em todas as imagens de referência de curto prazo que são anteriores à imagem atual tanto na ordem de decodificação quanto na ordem de saída, e que podem ser usadas em predição inter da imagem atual. RefPicSetStCurrAfter consiste em todas as imagens de referência de curto prazo que são anteriores à imagem atual na ordem de decodificação, que sucedem a imagem atual na ordem de saída, e que podem ser usadas em predição inter da imagem atual. RefPicSetStFoll consiste em todas as imagens de referência de curto prazo que podem ser usadas em predição inter de uma ou mais dentre as imagens que sucedem a imagem atual na ordem de decodificação, e que não são usadas em predição inter da imagem atual. RefPicSetLtCurr consiste em todas as imagens de referência de longo prazo que podem ser usadas em predição inter da imagem atual. RefPicSetLtFoll consiste em todas as imagens de referência de longo prazo que podem ser usadas em predição inter de uma ou mais dentre as imagens que sucedem a imagem atual na ordem de decodificação, e que não são usadas em predição inter da imagem atual.
[0084] O RPS é sinalizado com o uso de até três laços que iteram em diferentes tipos de imagens de referência; imagens de referência de curto prazo com valor de POC menor do que a imagem atual, imagens de referência de curto prazo com valor de POC maior do que a imagem atual, e imagens de referência de longo prazo. Além disso, uma flag (used_by_curr_pic_X_flag) é enviada para cada imagem de referência que indica se a imagem de referência é usada para referência pela imagem atual (incluída em uma dentre as listas RefPicSetStCurrBefore, RefPicSetStCurrAfter ou RefPicSetLtCurr) ou não (incluída em uma dentre as listas RefPicSetStFoll ou RefPicSetLtFoll).
[0085] A Figura 4 ilustra um RPS 400 que tem uma imagem atual B14 com entradas (por exemplo, uma imagem) em todos os subconjuntos 402 do RPS
400. No exemplo na Figura 4, a imagem atual B14 contém exatamente uma imagem em cada um dentre os cinco subconjuntos 402 (também conhecidos como subconjuntos RPS). P8 é a imagem no subconjunto 402 denominado RefPicSetStCurrBefore visto que a imagem é anterior em ordem de saída e usada por B14. P12 é a imagem no subconjunto 402 denominado RefPicSetStCurrAfter visto que a imagem é posterior em ordem de saída e usada por B14. P13 é a imagem no subconjunto 402 denominado RefPicSetStFoll visto que a imagem é uma imagem de referência de curto prazo não usada por B14 (mas precisa ser mantida no DPB visto que é usada por B15). P4 é a imagem no subconjunto 402 denominado RefPicSetLtCurr visto que a imagem é uma imagem de referência de longo prazo usada por B14. I0 é a imagem no subconjunto 402 denominado RefPicSetLtFoll visto que a imagem é uma imagem de referência de longo prazo não usada pela imagem atual (mas precisa ser mantida no DPB visto que é usada por B15).
[0086] A parte de curto prazo do RPS 400 pode ser incluída diretamente no cabeçalho de fatia. Alternativamente, o cabeçalho de fatia pode conter apenas um elemento de sintaxe que representa um índice, referindo a uma lista predefinida de RPSs enviados no SPS ativo. A parte de curto prazo do RPS 402 pode ser sinalizada com o uso de um dentre dois esquemas diferentes; Inter RPS, conforme descrito abaixo, ou Intra RPS, conforme descrito a seguir. Quando Intra RPS é usado, num_negative_pics e num_positive_pics são sinalizadas que representam o comprimento de duas listas diferentes de imagens de referência. Essas listas contêm as imagens de referência com diferença de POC negativa e diferença de POC positiva em comparação à imagem atual, respectivamente. Cada elemento nessas listas é codificado com um código de comprimento variável que representa a diferença em valor de POC em relação ao elemento anterior na lista menos um. Para a primeira imagem em cada lista, a sinalização é em relação ao valor de POC da imagem atual menos um.
[0087] Ao codificar os RPSs recorrentes no conjunto de parâmetros de sequência, é possível codificar os elementos de um RPS (por exemplo, RPS 400) com referência a outro RPS já codificado no conjunto de parâmetros de sequência. Isso é denominado Inter RPS. Não há problemas de robustez de erro associados a este método visto que todos os RPSs do conjunto de parâmetros de sequência estão na mesma unidade de camada de abstração de rede (NAL). A sintaxe de Inter RPS explora o fato de que o RPS da imagem atual pode ser predito a partir do RPS de uma imagem decodificada anterior. Isso se deve ao fato de que todas as imagens de referência da imagem atual precisam ser imagens de referência da imagem anterior ou a imagem decodificada anterior em si. É apenas necessário indicar quais dessas imagens devem ser imagens de referência e ser usadas para a predição da imagem atual. Portanto, a sintaxe compreende o seguinte: um índice que aponta para o RPS para usar como um preditor, um delta_POC a ser adicionado ao delta_POC do preditor para obter a POC de delta do RPS atual, e um conjunto de indicadores para indicar quais imagens são imagens de referência e se são usadas apenas para a predição de futuras imagens.
[0088] Codificadores que gostariam de explorar o uso de imagens de referência de longo prazo precisam definir o elemento de sintaxe de SPS long_term_ref_pics_present_flag para um. As imagens de referência de longo prazo podem, então, ser sinalizadas no cabeçalho de fatia por palavras-código de comprimento fixo, poc_lsb_lt, que representam os bits menos significativos do valor de POC inteiro de cada imagem de longo prazo. Cada poc_lsb_lt é uma cópia da palavra-código pic_order_cnt_lsb que foi sinalizada para uma imagem de longo prazo particular. É também possível sinalizar um conjunto de imagens de longo prazo no SPS como uma lista de valores de POC LSB. O POC LSB para uma imagem de longo prazo pode, então, ser sinalizado no cabeçalho de fatia como um índice para essa lista.
[0089] O elemento de sintaxe delta_poc_msb_cycle_lt_minus1 pode ser sinalizado, adicionalmente, para possibilitar o cálculo da distância de POC inteira de uma imagem de referência de longo prazo em relação à imagem atual. É necessário que a palavra-código delta_poc_msb_cycle_lt_minus1 seja sinalizada para cada imagem de referência de longo prazo que tem valor de POC LSB igual a qualquer outra imagem de referência no RPS.
[0090] Para marcação de imagem de referência em HEVC, haverá tipicamente um número de imagens presentes no DPB antes de decodificação de imagem. Algumas das imagens podem estar disponíveis para predição e, como tais, marcadas como “usada para referência”. Outras imagens podem estar indisponíveis para predição, mas estão aguardando saída e, como tais, marcadas como “não usada para referência”. Quando o cabeçalho de fatia tiver sido analisado, um processo de marcação de imagem é conduzido antes de os dados de fatia serem decodificados. As imagens que estão presentes no DPB e marcadas como “usada para referência”, mas não são incluídas no RPS são marcadas “não usada para referência”. As imagens que não estão presentes no DPB, mas são incluídas no conjunto de imagens de referência são ignoradas quando o used_by_curr_pic_X_flag é igual a zero. Entretanto, quando o used_by_curr_pic_X_flag é, em vez disso, igual a um, foi pretendido que essa imagem de referência fosse usada para predição na imagem atual, mas está ausente. Então, uma perda de imagem não intencional é deduzida e o decodificador deve realizar ação apropriada.
[0091] Após decodificar a imagem atual, a mesma é marcada “usada para referência de curto prazo”.
[0092] A seguir, a construção de lista de imagens de referência em HEVC é discutida. Em HEVC, o termo predição inter é usado para denotar predição derivada de elementos de dados (por exemplo, valores de amostra ou vetores de movimento) de imagens de referência diferentes da imagem decodificada atual. Assim como em AVC, uma imagem pode ser predita a partir de múltiplas imagens de referência. As imagens de referência que são usadas para predição inter são organizadas em uma ou mais listas de imagens de referência. O índice de referência identifica quais das imagens de referência na lista devem ser usadas para criar o sinal de predição.
[0093] Uma única lista de imagens de referência, Lista 0, é usada para uma fatia P e duas listas de imagens de referência, Lista 0 e Lista 1 são usadas para fatias B. De modo similar a AVC, a construção de lista de imagens de referência em HEVC inclui inicialização de lista de imagens de referência e modificação de lista de imagens de referência.
[0094] Em AVC, o processo de inicialização para Lista 0 é diferente para a fatia P (para a qual ordem de decodificação é usada) e fatias B (para a qual ordem de saída é usada). Em HEVC, a ordem de saída é usada em ambos os casos.
[0095] A inicialização de lista de imagens de referência cria Lista 0 e Lista 1 padrão (se a fatia for uma fatia B) com base em três subconjuntos de RPS: RefPicSetStCurrBefore, RefPicSetStCurrAfter e RefPicSetLtCurr. As imagens de curto prazo com ordem de saída anterior (posterior) são primeiro inseridas na Lista 0 (Lista 1) em ordem crescente de distância de POC para a imagem atual, então, imagens de curto prazo com ordem de saída posterior (anterior) são inseridas na Lista 0 (Lista 1) em ordem crescente de distância de POC para a imagem atual e, então, por fim, as imagens de longo prazo são inseridas ao final. Em termos de RPS, para Lista 0, as entradas em RefPicSetStCurrBefore são inseridas na lista inicial, seguidas pelas entradas em RefPicSetStCurrAfter. Posteriormente, as entradas em RefPicSetLtCurr, caso disponíveis, estão anexas.
[0096] Em HEVC, o processo acima é repetido (imagens de referência que já foram adicionadas à lista de imagens de referência são adicionadas novamente) quando o número de entradas em uma lista é menor do que o número-alvo de imagens de referência ativas (sinalizadas no conjunto de parâmetros de imagem ou cabeçalho de fatia). Quando o número de entradas é maior do que o número-alvo, a lista é truncada.
[0097] Após uma lista de imagens de referência ter sido inicializada, a mesma pode ser modificada de modo que as imagens de referência para a imagem atual possam ser dispostas em qualquer ordem, incluindo o caso em que uma imagem de referência particular pode aparecer em mais de uma posição na lista, com base nos comandos de modificação de lista de imagens de referência. Quando a flag que indica a presença de modificações de lista é definida para um, um número fixo (igual ao número-alvo de entradas na lista de imagens de referência) de comandos é sinalizado, e cada comando insere uma entrada para uma lista de imagens de referência. Uma imagem de referência é identificada no comando pelo índice para a lista de imagens de referência para a imagem atual derivada da sinalização de RPS. Isso é diferente da modificação de lista de imagens de referência em H.264/AVC, em que uma imagem é identificada pelo número de imagem (derivado do elemento de sintaxe frame_num) ou pelo índice de imagem de referência de longo prazo, e é possível que menos comandos sejam necessários, por exemplo, para trocar as primeiras duas entradas de uma lista inicial ou inserir uma entrada no início da lista inicial e deslocar as outras.
[0098] Não se permite que uma lista de imagens de referência inclua qualquer imagem de referência com um TemporalId maior do que a imagem atual. Um fluxo de bits de HEVC pode consistir em diversas subcamadas temporais. Cada unidade de NAL pertence a uma subcamada específica conforme indicado pelo TemporalId (igual a temporal_id_plus1 − 1).
[0099] O gerenciamento de imagens de referência se baseia diretamente em listas de imagens de referência. O documento JCT-VC JCTVC- G643 inclui uma abordagem para usar diretamente três listas de imagens de referência, lista de imagens de referência 0, lista de imagens de referência 1 e uma lista de imagens de referência ociosa, para gerenciamento das imagens de referência no DPB, evitando, desse modo, a necessidade dos processos de sinalização e decodificação incluindo 1) a janela deslizante e os processos de MMCO bem como os processos de inicialização e modificação de lista de imagens de referência em AVC, ou 2) o conjunto de imagens de referência bem como os processos de inicialização e modificação de lista de imagens de referência em HEVC.
[0100] Abordagens para gerenciamento de imagens de referência podem ter diversos problemas. A abordagem AVC envolve a janela deslizante, os processos de MMCO e os processos de inicialização e modificação de lista de imagens de referência, que são complexos. Além disso, a perda de imagens pode levar à perda do status do DPB em termos de quais imagens deveriam estar no DPB para fins de referenciação de predição inter adicional. A abordagem HEVC não tem o problema de perda de status de DPB. Entretanto, a abordagem HEVC envolve um processo de sinalização e derivação de conjunto de imagens de referência complexo, bem como os processos de inicialização e modificação de lista de imagens de referência, que são complexos. A abordagem em JCTVC- G643 para usar diretamente três listas de imagens de referência, lista de imagens de referência 0, lista de imagens de referência 1, bem como uma lista de imagens de referência ociosa, para gerenciamento das imagens de referência no DPB envolve os seguintes aspectos: uma terceira lista de imagens de referência, isto é, a lista de imagens de referência ociosa; a codificação de duas partes de diferenças de POC como uma parte “de curto prazo” e uma parte de “longo prazo” de ue(v)-codificado; a granularidade de POC com base em TemporalId para codificação de diferença de POC, uso da codificação de duas partes de diferenças de POC para determinar a marcação entre “usada para referência de curto prazo” ou “usada para referência de longo prazo”; uma descrição de subconjunto de lista de imagens de referência, que possibilita a capacidade de especificar uma lista de imagens de referência removendo-se imagens de referência a partir da cauda de uma certa descrição anterior de lista de imagens de referência; o modo de cópia de lista de imagens de referência habilitado pelo elemento de sintaxe ref_pic_list_copy_flag; e o processo de descrição de lista de imagens de referência. Cada um dentre os aspectos antecedentes torna a abordagem desnecessariamente complexa. Além disso, o processo de decodificação para listas de imagens de referência em JCTVC-G643 também é complexo. A sinalização de imagens de referência de longo prazo pode precisar de sinalização do ciclo de POC em cabeçalhos de fatia. Isso não é eficiente.
[0101] A fim de solucionar os problemas listados acima, são reveladas no presente documento as soluções a seguir, cada uma das quais pode ser aplicada individualmente, e algumas das quais podem ser aplicadas em combinação. 1) Marcação de imagem de referência se baseia diretamente nas duas listas de imagens de referência, a saber, lista de imagens de referência 0 e lista de imagens de referência 1. 1a) Informações para derivação das duas listas de imagens de referência são sinalizadas com base em elementos de sintaxe e estruturas de sintaxe no SPS, PPS e/ou no cabeçalho de fatia. 1b) Cada uma dentre as duas listas de imagens de referência para uma imagem é sinalizada explicitamente em uma estrutura de lista de imagens de referência. 1b.i) Uma ou mais estruturas de lista de imagens de referência podem ser sinalizadas em SPS e cada uma das mesmas pode ser referida um índice do cabeçalho de fatia. 1b.ii) Cada uma dentre a lista de imagens de referência 0 e 1 pode ser sinalizada diretamente no cabeçalho de fatia. 2) Informações para derivação das duas listas de imagens de referência são sinalizadas para todos os tipos de fatias, isto é, fatias B (bipreditiva), P (unipreditiva) e I (intra). O termo fatia se refere a uma coleção de unidades de árvore de codificação, tal como uma fatia em HEVC ou no VVC WD mais recente; também pode se referir a alguma outra coleção de unidades de árvore de codificação, tal como um tile em HEVC. 3) As duas listas de imagens de referência são geradas para todos os tipos de fatias, isto é, fatias B, P e I. 4) As duas listas de imagens de referência são diretamente construídas sem usar um processo de inicialização de lista de imagens de referência e um processo de modificação de lista de imagens de referência. 5) Em cada uma dentre as duas listas de imagens de referência, imagens de referência que podem ser usadas para predição inter da imagem atual só podem ser referidas por um número de entradas no início da lista. Essas entradas são denominadas as entradas ativas na lista, enquanto outras entradas são denominadas as entradas inativas na lista. O número das entradas totais e o número das entradas ativas na lista podem ser derivados. 6) Não é permitido que a imagem referida por uma entrada inativa em uma lista de imagens de referência seja referida por outra entrada na lista de imagens de referência ou qualquer entrada na outra lista de imagens de referência. 7) Imagens de referência de longo prazo são apenas identificadas por um certo número de POC LSBs, em que esse número pode ser maior do que o número de POC LSBs sinalizados nos cabeçalhos de fatia para derivação de valores de POC, e esse número é indicado no SPS. 8) Estruturas de lista de imagens de referência são sinalizadas apenas em cabeçalhos de fatia, tanto imagens de referência de curto prazo quanto imagens de referência de longo prazo são identificadas por seus POC LSBs, que podem ser representados por números de bits que são diferentes do número de bits usado para representar os POC LSBs sinalizados em cabeçalhos de fatia para derivação de valores de POC, e os números de bits usados para representar os POC LSBs para identificar imagens de referência de curto prazo e imagens de referência de longo prazo podem ser diferentes. 9) Estruturas de lista de imagens de referência são sinalizadas apenas em cabeçalhos de fatia, nenhuma distinção é feita entre imagens de referência de curto prazo e de longo prazo, todas as imagens de referência são denominadas simplesmente imagens de referência, e imagens de referência são identificadas por seus POC LSBs, que podem ser representados por um número de bits que é diferente de número de bits usado para representar os POC LSBs sinalizados em cabeçalhos de fatia para derivação de valores de POC.
[0102] Uma primeira modalidade da presente revelação é fornecida. A descrição é em relação ao VVC WD mais recente. Nesta modalidade, dois conjuntos de estruturas de lista de imagens de referência são sinalizados no SPS, um para cada uma dentre lista de imagens de referência 0 e lista de imagens de referência 1.
[0103] As definições para alguns dos termos usados no presente documento são fornecidas. Uma imagem de ponto de acesso aleatório intra (IRAP): uma imagem codificada para a qual cada unidade de NAL de camada de codificação de vídeo (VCL) tem nal_unit_type igual a IRAP_NUT. Imagem não IRAP: uma imagem codificada para a qual cada unidade de VCL NAL tem nal_unit_type igual a NON_IRAP_NUT. Lista de imagens de referência: uma lista de imagens de referência que é usada para predição inter de uma fatia P ou B. Duas listas de imagens de referência, lista de imagens de referência 0 e lista de imagens de referência 1, são geradas para cada fatia de uma imagem não IRAP. O conjunto de imagens únicas referidas por todas as entradas nas duas listas de imagens de referência associadas a uma imagem consiste em todas as imagens de referência que podem ser usadas para predição inter da imagem associada ou qualquer imagem que sucede a imagem associada em ordem de decodificação. Para decodificação dos dados de fatia de uma fatia P, apenas lista de imagens de referência 0 é usada para predição inter. Para decodificação dos dados de fatia de uma fatia B, as duas listas de imagens de referência são usadas para predição inter. Para decodificação dos dados de fatia de uma fatia I, nenhuma lista de imagens de referência é usada para predição inter. Imagem de referência de longo prazo (LTRP): uma imagem que é marcada como “usada para referência de longo prazo”. Imagem de referência de curto prazo (STRP): uma imagem que é marcada como “usada para referência de curto prazo”.
[0104] Os termos “usada para referência de curto prazo”, “usada para referência de longo prazo” ou “não usada para referência” são definidos em VVC na seção 8.3.3 Processo de decodificação para marcação de imagem de referência, definidos em HEVC na seção 8.3.2 Processo de decodificação para conjunto de imagens de referência, e definidos em AVC na seção 7.4.3.3 Semântica de marcação de imagem de referência decodificada. Conforme usado na presente invenção, os termos têm significado igual.
[0105] A sintaxe e semântica relevantes para a primeira modalidade são fornecidas abaixo.
[0106] Sintaxe de cabeçalho de unidade NAL. nal_unit_header( ) { Descriptor forbidden_zero_bit f(1) nal_unit_type u(5)
nuh_temporal_id_plus1 u(3) nuh_reserved_zero_7bits u(7) }
[0107] Sintaxe de Carga Útil de Sequência de Byte Bruto de conjunto de parâmetros de sequência (RBSP). seq_parameter_set_rbsp( ) { Descriptor sps_seq_parameter_set_id ue(v) chroma_format_idc ue(v) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) sps_max_dec_pic_buffering_minus1 ue(v) qtbtt_dual_tree_intra_flag ue(v) log2_ctu_size_minus2 ue(v) log2_min_qt_size_intra_slices_minus2 ue(v) log2_min_qt_size_inter_slices_minus2 ue(v) max_mtt_hierarchy_depth_inter_slices ue(v) max_mtt_hierarchy_depth_intra_slices ue(v) long_term_ref_pics_flag u(1) if( long_term_ref_pics_flag ) additional_lt_poc_lsb ue(v) for( i = 0; i < 2; i++) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j, long_term_ref_pics_flag ) } rbsp_trailing_bits( ) }
[0108] Sintaxe de RBSP de conjunto de parâmetros de imagem.
pic_parameter_set_rbsp( ) { Descriptor pps_pic_parameter_set_id ue(v) pps_seq_parameter_set_id ue(v) for( i = 0; i < 2; i++) num_ref_idx_default_active_minus1[ i ] ue(v) rbsp_trailing_bits( ) }
[0109] Sintaxe de cabeçalho de fatia. slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) for( i = 0; i < 2; i++ ) { ref_pic_list_sps_flag[ i ] u(1) if( ref_pic_list_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1) ref_pic_list_idx[ i ] u(v) } else ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ], long_term_ref_pics_flag ) } if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( )
}
[0110] Sintaxe de estrutura de lista de imagens de referência. ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) { Descriptor num_strp_entries[ listIdx ][ rplsIdx ] ue(v) if( ltrpFlag ) num_ltrp_entries[ listIdx ][ rplsIdx ] ue(v) for( i = 0; i < NumEntriesInList[ listIdx ][ rplsIdx ]; i++) { if( num_ltrp_entries[ listIdx ][ rplsIdx ] > 0 ) lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] if( !lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] ) delta_poc_st[ listIdx ][ rplsIdx ][ i ] // Não usar se(v) “delta_poc_st_minus1” no presente documento, para permitir que a mesma imagem de referência seja incluída em múltiplas posições de uma lista de imagens de referência. Conforme um efeito secundário, isso também possibilitará referenciamento de imagem atual (isto é, cópia de intra bloco). Nota-se também que está sinalizado. else poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] u(v) } }
[0111] Semântica de cabeçalho de unidade NAL.
[0112] Um forbidden_zero_bit deve ser igual a 0. nal_unit_type especifica o tipo de estrutura de dados de RBSP contida na unidade NAL. Tabela 7-1 – códigos de tipo de unidade NAL e classes de tipo de unidade
NAL nal_uni Nome de Conteúdo de unidade NAL e estrutura de Unidade t_type nal_unit_type sintaxe de RBSP NAL classe de tipo 0 NON_IRAP_NU Segmento de fatia codificada de uma VCL T imagem não IRAP slice_layer_rbsp( ) 1 IRAP_NUT Fatia codificada de uma imagem IRAP VCL slice_layer_rbsp( ) 2-15 RSV_VCL_NUT Unidades VCL NAL reservadas VCL 16 SPS_NUT Conjunto de parâmetros de sequência não VCL seq_parameter_set_rbsp( ) 17 PPS_NUT Conjunto de parâmetros de imagem não VCL pic_parameter_set_rbsp( ) 18 EOS_NUT Fim de sequência não VCL end_of_seq_rbsp( ) 19 EOB_NUT Fim de fluxo de bits não VCL end_of_bitstream_rbsp( ) 20, 21 PREFIX_SEI_N Informações de aprimoramento não VCL UT complementares SUFFIX_SEI_N sei_rbsp( )
UT 22-26 RSV_NVCL Reservado não VCL 27-31 UNSPEC Não especificado não VCL
[0113] O nuh_temporal_id_plus1 menos 1 especifica um identificador temporal para a unidade NAL. O valor de nuh_temporal_id_plus1 não deve ser igual a 0. A variável TemporalId é especificada da seguinte forma: TemporalId = nuh_temporal_id_plus1 – 1. Quando nal_unit_type é igual a IRAP_NUT, a fatia codificada pertence a uma imagem IRAP, TemporalId deve ser igual a 0. O valor de TemporalId deve ser igual para todas as unidades VCL NAL de uma unidade de acesso. O valor de TemporalId de uma imagem codificada ou uma unidade de acesso é o valor do TemporalId das unidades VCL NAL da imagem codificada ou da unidade de acesso. O valor de TemporalId para unidades não VCL NAL é restrito da seguinte maneira: Se nal_unit_type for igual a SPS_NUT, TemporalId deve ser igual a 0 e o TemporalId da unidade de acesso contendo a unidade NAL deve ser igual a 0. De outro modo, se nal_unit_type for igual a EOS_NUT ou EOB_NUT, TemporalId deve ser igual a 0. De outro modo, TemporalId deve ser maior do que ou igual ao TemporalId da unidade de acesso contendo a unidade NAL. Quando a unidade NAL é uma unidade não VCL NAL, o valor de TemporalId é igual ao valor mínimo dos valores TemporalId de todas as unidades de acesso às quais a unidade não VCL NAL se aplica. Quando nal_unit_type é igual a PPS_NUT, TemporalId pode ser maior do que ou igual ao TemporalId da unidade de acesso que contém, visto que todos os conjuntos de parâmetros de imagem (PPSs) podem ser incluídos no início de um fluxo de bits, em que a primeira imagem codificada tem TemporalId igual a 0. Quando nal_unit_type é igual a PREFIX_SEI_NUT ou SUFFIX_SEI_NUT, TemporalId pode ser maior do que ou igual ao TemporalId da unidade de acesso que contém, visto que uma unidade SEI NAL pode conter informações que se aplicam a um subconjunto de fluxo de bits que inclui unidades de acesso para as quais os valores de TemporalId são maiores do que o TemporalId da unidade de acesso contendo a unidade SEI NAL. nuh_reserved_zero_7bits deve ser igual a '0000000'. Outros valores de nuh_reserved_zero_7bits podem ser especificados no futuro por ITU-T | ISO/IEC. Decodificadores devem ignorar (isto é, remover do fluxo de bits e descartar) unidades NAL com valores de nuh_reserved_zero_7bits diferentes de '0000000'.
[0114] Semântica de RBSP de conjunto de parâmetros de sequência.
[0115] Um log2_max_pic_order_cnt_lsb_minus4 especifica o valor da variável MaxPicOrderCntLsb que é usado no processo de decodificação para contagem de ordem de imagem da seguinte forma: MaxPicOrderCntLsb = 2 ( log2_max_pic_order_cnt_lsb_minus4 + 4 ). O valor de log2_max_pic_order_cnt_lsb_minus4 deve estar na faixa de 0 a 12, inclusive. sps_max_dec_pic_buffering_minus1 mais 1 especifica o tamanho máximo necessário do buffer de imagem decodificada para a CVS em unidades de buffers de armazenamento de imagem. O valor de sps_max_dec_pic_buffering_minus1 deve estar na faixa de 0 a MaxDpbSize − 1, inclusive, em que MaxDpbSize é conforme especificado em alguma outra parte. long_term_ref_pics_flag igual a 0 especifica que nenhuma LTRP é usada para predição inter de qualquer imagem codificada na CVS. long_term_ref_pics_flag igual a 1 especifica que LTRPs podem ser usadas para predição inter de uma ou mais imagens codificadas na CVS. additional_lt_poc_lsb especifica o valor da variável MaxLtPicOrderCntLsb que é usado no processo de decodificação para listas de imagens de referência da seguinte forma: MaxLtPicOrderCntLsb = 2( log2_max_pic_order_cnt_lsb_minus4 + 4 + additional _lt_poc_lsb ). O valor de additional_lt_poc_lsb deve estar na faixa de 0 a
32 − log2_max_pic_order_cnt_lsb_minus4 − 4, inclusive. Quando não presente, deduz-se que o valor de additional_lt_poc_lsb seja igual a 0. num_ref_pic_lists_in_sps[ i ] especifica o número das estruturas de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) com listIdx igual a i incluído no SPS. O valor de num_ref_pic_lists_in_sps[ i ] deve estar na faixa de 0 a 64, inclusive. Para cada valor de listIdx (igual a 0 ou 1), um decodificador deve alocar memória para um número total de estruturas de sintaxe num_ref_pic_lists_in_sps[ i ] + 1 ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) visto que pode haver uma estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) diretamente sinalizada nos cabeçalhos de fatia de uma imagem atual.
[0116] Semântica de RBSP de conjunto de parâmetros de imagem.
[0117] Um num_ref_idx_default_active_minus1[ i ] mais 1, quando i é igual a 0, especifica o valor deduzido da variável NumRefIdxActive[ 0 ] para fatias P ou B com num_ref_idx_active_override_flag igual a 0, e, quando i é igual a 1, especifica o valor deduzido de NumRefIdxActive[ 1 ] para fatias B com num_ref_idx_active_override_flag igual a 0. O valor de num_ref_idx_default_active_minus1[ i ] deve estar na faixa de 0 a 14, inclusive.
[0118] Semântica de cabeçalho de fatia.
[0119] Quando presente, o valor de cada um dentre os elementos de sintaxe de cabeçalho de fatia slice_pic_parameter_set_id e slice_pic_order_cnt_lsb deve ser igual em todos os cabeçalhos de fatia de uma imagem codificada. ... slice_type especifica o tipo de codificação da fatia de acordo com a Tabela 7-3. Tabela 7-3 – Associação de nome a slice_type slice_type Nome de slice_type 0 B (fatia B) 1 P (fatia P) 2 I (fatia I)
[0120] Quando nal_unit_type é igual a IRAP_NUT, isto é, a imagem é uma imagem IRAP, slice_type deve ser igual a 2. ... slice_pic_order_cnt_lsb especifica a contagem de ordem de imagem módulo MaxPicOrderCntLsb para a imagem atual. O comprimento do elemento de sintaxe slice_pic_order_cnt_lsb é log2_max_pic_order_cnt_lsb_minus4 + 4 bits. O valor do slice_pic_order_cnt_lsb deve estar na faixa de 0 a MaxPicOrderCntLsb − 1, inclusive. Quando slice_pic_order_cnt_lsb não está presente, deduz-se que slice_pic_order_cnt_lsb seja igual a 0. ref_pic_list_sps_flag[ i ] igual a 1 especifica que lista de imagens de referência i da imagem atual é derivada com base em uma dentre as estruturas de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) com listIdx igual a i no SPS ativo. ref_pic_list_sps_flag[ i ] igual a 0 especifica que lista de imagens de referência i da imagem atual é derivada com base na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) com listIdx igual a i que é diretamente incluída nos cabeçalhos de fatia da imagem atual. Quando num_ref_pic_lists_in_sps[ i ] é igual a 0, o valor de ref_pic_list_sps_flag[ i ] deve ser igual a 0. ref_pic_list_idx[ i ] especifica o índice, na lista das estruturas de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) com listIdx igual a i incluído no SPS ativo, da estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) com listIdx igual a i que é usado para derivação de lista de imagens de referência i da imagem atual. O elemento de sintaxe ref_pic_list_idx[ i ] é representado por Ceil( Log2( num_ref_pic_lists_in_sps[ i ] ) ) bits. Quando não presente, deduz-se que o valor de ref_pic_list_idx[ i ] seja igual a 0. O valor de ref_pic_list_idx[ i ] deve estar na faixa de 0 a num_ref_pic_lists_in_sps[ i ] − 1, inclusive. num_ref_idx_active_override_flag igual a 1 especifica que o elemento de sintaxe num_ref_idx_active_minus1[ 0 ] está presente para fatias P e B e que o elemento de sintaxe num_ref_idx_active_minus1[ 1 ] está presente para fatias B. num_ref_idx_active_override_flag igual a 0 especifica que os elementos de sintaxe num_ref_idx_active_minus1[ 0 ] e num_ref_idx_active_minus1[ 1 ] não estão presentes. num_ref_idx_active_minus1[ i ], quando presente, especifica o valor da variável NumRefIdxActive[ i ] da seguinte forma: NumRefIdxActive[ i ] = num_ref_idx_active_minus1[ i ] + 1. O valor de num_ref_idx_active_minus1[ i ] deve estar na faixa de 0 a 14, inclusive.
[0121] O valor de NumRefIdxActive[ i ] − 1 especifica o índice de referência máximo para lista de imagens de referência i que pode ser usado para decodificar a fatia. Quando o valor de NumRefIdxActive[ i ] é igual a 0, nenhum índice de referência para lista de imagens de referência i pode ser usado para decodificar a fatia. Para i igual a 0 ou 1, quando a fatia atual for uma fatia B e num_ref_idx_active_override_flag é igual a 0, deduz-se que NumRefIdxActive[ i ] seja igual a num_ref_idx_default_active_minus1[ i ] + 1. Quando a fatia atual for uma fatia P e num_ref_idx_active_override_flag é igual a 0, deduz-se que NumRefIdxActive[ 0 ] seja igual a num_ref_idx_default_active_minus1[ 0 ] + 1. Quando a fatia atual for uma fatia P, deduz-se que NumRefIdxActive[ 1 ] seja igual a 0. Quando a fatia atual for uma fatia I, deduz-se que tanto NumRefIdxActive[ 0 ] quanto NumRefIdxActive[ 1 ] sejam iguais a 0.
[0122] Alternativamente, para i igual a 0 ou 1, o seguinte se aplica após o que foi mencionado acima: Supõe-se que rplsIdx1 seja definido igual a ref_pic_list_sps_flag[ i ] ? ref_pic_list_idx[ i ] : num_ref_pic_lists_in_sps[ i ], e numRpEntries[ i ] seja igual a num_strp_entries[ i ][ rplsIdx1 ] + num_ltrp_entries[ i ][ rplsIdx1 ]. Quando NumRefIdxActive[ i ] é maior do que numRpEntries[ i ], o valor de NumRefIdxActive[ i ] é definido como igual a numRpEntries[ i ]
[0123] Semântica de estrutura de lista de imagens de referência.
[0124] A estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) pode estar presente em um SPS ou em um cabeçalho de fatia. Dependendo de a estrutura de sintaxe ser incluída em um cabeçalho de fatia ou um SPS, o seguinte se aplica: Se presente em um cabeçalho de fatia, a estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) especifica lista de imagens de referência listIdx da imagem atual (a imagem contendo a fatia). De outro modo (presente em um SPS), a estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) especifica um candidato para lista de imagens de referência listIdx, e o termo “a imagem atual” na semântica especificada no restante desta seção se refere a cada imagem que 1) tem uma ou mais fatias contendo ref_pic_list_idx[ listIdx ] igual a um índice na lista das estruturas de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) incluída no SPS, e 2) está em uma CVS que tem o SPS como o SPS ativo. num_strp_entries[ listIdx ][ rplsIdx ] especifica o número de entradas de STRP na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). num_ltrp_entries[ listIdx ][ rplsIdx ] especifica o número de entradas de LTRP na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). Quando não presente, deduz-se que o valor de num_ltrp_entries[ listIdx ][ rplsIdx ] seja igual a 0. A variável NumEntriesInList[ listIdx ][ rplsIdx ] é derivada da seguinte forma: NumEntriesInList[ listIdx ][ rplsIdx ] = num_strp_entries[ listIdx ][ rplsIdx ] + num_ltrp_entries[ listIdx ] [ rplsIdx ]. O valor de NumEntriesInList[ listIdx ][ rplsIdx ]
deve estar na faixa de 0 a sps_max_dec_pic_buffering_minus1, inclusive. lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] igual a 1 especifica que a i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) é uma entrada de LTRP. lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] igual a 0 especifica que a i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) é uma entrada de STRP. Quando não presente, deduz-se que o valor de lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] seja igual a 0. É uma exigência de conformidade de fluxo de bits que a soma de lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] para todos os valores de i na faixa de 0 a NumEntriesInList[ listIdx ][ rplsIdx ] − 1, inclusive, deve ser igual a num_ltrp_entries[ listIdx ][ rplsIdx ]. delta_poc_st[ listIdx ][ rplsIdx ][ i ], quando a i-ésima entrada é a primeira entrada de STRP em estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ), especifica a diferença entre os valores de contagem de ordem de imagem da imagem atual e a imagem referida pela i-ésima entrada, ou, quando a i-ésima entrada é uma entrada de STRP, mas não a primeira entrada de STRP na estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ), especifica a diferença entre os valores de contagem de ordem de imagem das imagens referidas pela i-ésima entrada e pela entrada de STRP anterior na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). O valor de delta_poc_st[ listIdx ][ rplsIdx ][ i ] deve estar na faixa de −215 a 215 − 1, inclusive. poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] especifica o valor da contagem de ordem de imagem módulo MaxLtPicOrderCntLsb da imagem referida pela i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). O comprimento do elemento de sintaxe poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] é Log2( MaxLtPicOrderCntLsb ) bits.
[0125] O processo de decodificação é discutido. O processo de decodificação opera da forma a seguir para a imagem atual CurrPic. A decodificação de unidades NAL é especificada abaixo. Os processos abaixo especificam os processos de decodificação a seguir com o uso de elementos de sintaxe na camada de cabeçalho de fatia e acima. As variáveis e funções relacionadas à contagem de ordem de imagem são derivadas. Isso precisa ser invocado apenas para a primeira fatia de uma imagem. No início do processo de decodificação para cada fatia de uma imagem não IRAP, o processo de decodificação para construção de listas de imagens de referência é invocado para derivação de lista de imagens de referência 0 (RefPicList[ 0 ]) e lista de imagens de referência 1 (RefPicList[ 1 ]). O processo de decodificação para marcação de imagem de referência é invocado, em que imagens de referência podem ser marcadas como “não usada para referência” ou “usada para referência de longo prazo”. Isso precisa ser invocado apenas para a primeira fatia de uma imagem. Os processos de decodificação para unidades de árvore de codificação, escalonamento, transformada, filtragem in-loop, etc., são invocados. Após todas as fatias da imagem atual terem sido decodificadas, a imagem decodificada atual é marcada como “usada para referência de curto prazo”.
[0126] O processo de decodificação de unidade NAL de é discutido. Entradas para esse processo são unidades NAL da imagem atual e suas unidades NAL não VCL associadas. Saídas desse processo são as estruturas de sintaxe de RBSP analisadas encapsuladas dentro das unidades NAL. O processo de decodificação para cada unidade NAL extrai a estrutura de sintaxe de RBSP da unidade NAL e, então, analisa a estrutura de sintaxe de RBSP.
[0127] O processo de decodificação de fatia é discutido, incluindo o processo de decodificação para contagem de ordem de imagem. Saída desse processo é PicOrderCntVal, a contagem de ordem de imagem da imagem atual. As contagens de ordem de imagem são usadas para identificar imagens, para derivar parâmetros de movimento em predição de vetor de movimento e modo de mescla, e para verificação de conformidade de decodificador. Cada imagem codificada é associada a uma variável de contagem de ordem de imagem, denotada como PicOrderCntVal. Quando a imagem atual não é uma imagem IRAP, as variáveis prevPicOrderCntLsb e prevPicOrderCntMsb são derivadas da seguinte forma: Supõe-se que prevTid0Pic seja a imagem anterior em ordem de decodificação que tem TemporalId igual a 0. A variável prevPicOrderCntLsb é definida como igual a slice_pic_order_cnt_lsb de prevTid0Pic. A variável prevPicOrderCntMsb é definida igual a PicOrderCntMsb de prevTid0Pic.
[0128] A variável PicOrderCntMsb da imagem atual é derivada da seguinte forma: Se a imagem atual for uma imagem IRAP, PicOrderCntMsb é definida igual a 0. De outro modo, PicOrderCntMsb é derivado da seguinte forma: if( ( slice_pic_order_cnt_lsb < prevPicOrderCntLsb ) && ( ( prevPicOrderCntLsb − slice_pic_order_cnt_lsb ) >= ( MaxPicOrderCntLsb / 2 ) ) )
PicOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb else if( (slice_pic_order_cnt_lsb > prevPicOrderCntLsb ) && ( ( slice_pic_order_cnt_lsb − prevPicOrderCntLsb ) > ( MaxPicOrderCntLsb / 2 ) ) ) PicOrderCntMsb = prevPicOrderCntMsb − MaxPicOrderCntLsb else PicOrderCntMsb = prevPicOrderCntMsb
[0129] PicOrderCntVal é derivado da seguinte forma: PicOrderCntVal = PicOrderCntMsb + slice_pic_order_cnt_lsb.
[0130] Todas as imagens IRAP terão PicOrderCntVal igual a 0 visto que é deduzido que slice_pic_order_cnt_lsb seja 0 para imagens IRAP e prevPicOrderCntLsb e prevPicOrderCntMsb são definidos como iguais a 0. O valor de PicOrderCntVal deve estar na faixa de −231 a 231 − 1, inclusive. Em uma CVS, os valores de PicOrderCntVal para quaisquer duas imagens codificadas não devem ser iguais.
[0131] A qualquer momento durante o processo de decodificação, os valores de PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) para quaisquer duas imagens de referência no DPB não devem ser iguais. A função PicOrderCnt( picX ) é especificada da seguinte forma: PicOrderCnt( picX ) = PicOrderCntVal da imagem picX. A função DiffPicOrderCnt( picA, picB ) é especificada da seguinte forma: DiffPicOrderCnt( picA, picB ) = PicOrderCnt( picA ) − PicOrderCnt( picB ). O fluxo de bits não deve conter dados que resultem em valores de DiffPicOrderCnt( picA, picB ) usados no processo de decodificação que não estão na faixa de −215 a 215 − 1, inclusive. Supõe-se que X seja a imagem atual e Y e Z sejam duas outras imagens na mesma sequência de vídeo codificada (CVS), Y e Z são considerados estarem na mesma direção de ordem de saída de X quando DiffPicOrderCnt( X, Y ) e DiffPicOrderCnt( X, Z ) são positivos ou ambos são negativos.
[0132] O processo de decodificação para construção de listas de imagens de referência é discutido. Esse processo é invocado no início do processo de decodificação para cada fatia de uma imagem não IRAP. As imagens de referência são endereçadas através de índices de referência. Um índice de referência é um índice em uma lista de imagens de referência. Ao decodificar uma fatia I, nenhuma lista de imagens de referência é usada na decodificação dos dados de fatia.
Ao decodificar uma fatia P, apenas lista de imagens de referência 0 (isto é, RefPicList[ 0 ]), é usada na decodificação dos dados de fatia.
Ao decodificar uma fatia B, a lista de imagens de referência 0 e a lista de imagens de referência 1 (isto é, RefPicList[ 1 ]) são usadas na decodificação dos dados de fatia.
No início do processo de decodificação para cada fatia de uma imagem não IRAP, as listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são derivadas.
As listas de imagens de referência são usadas na marcação de imagens de referência ou na decodificação dos dados de fatia.
Para uma fatia I de uma imagem não IRAP que não é a primeira fatia da imagem, RefPicList[ 0 ] e RefPicList[ 1 ] podem ser derivadas para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para a decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação.
Para uma fatia P que não é a primeira fatia de uma imagem, RefPicList[ 1 ] pode ser derivada para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação.
As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else {
if( há uma picA de referência no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0133] Para cada i igual a 0 ou 1, o seguinte se aplica: As primeiras entradas NumRefIdxActive[ i ] em RefPicList[ i ] são denominadas as entradas ativas em RefPicList[ i ], e as outras entradas em RefPicList[ i ] são denominadas as entradas inativas em RefPicList[ i ]. Cada entrada em RefPicList[ i ][ j ] para j na faixa de 0 a NumEntriesInList[ i ][ RplsIdx[ i ] ] − 1, inclusive, é denominada uma entrada de STRP se lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] for igual a 0, e denominada uma entrada de LTRP de outro modo. É possível que uma imagem particular seja referida tanto por uma entrada em RefPicList[ 0 ] quanto por uma entrada em RefPicList[ 1 ]. É também possível que uma imagem particular seja referida por mais do que uma entrada em RefPicList[ 0 ] ou por mais do que uma entrada em RefPicList[ 1 ]. As entradas ativas em RefPicList[ 0 ] e as entradas ativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que podem ser usadas para predição inter da imagem atual e uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. As entradas inativas em RefPicList[ 0 ] e as entradas inativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que não são usadas para predição inter da imagem atual, mas podem ser usadas em predição inter para uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. Pode haver uma ou mais entradas em RefPicList[ 0 ] ou RefPicList[ 1 ] que são iguais a “nenhuma imagem de referência” visto que as imagens correspondentes não estão presentes no DPB. Cada entrada inativa em RefPicList[ 0 ] ou RefPicList[ 0 ] que é igual a “nenhuma imagem de referência” deve ser ignorada. Uma perda de imagem não intencional deve ser deduzida para cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] que é igual a “nenhuma imagem de referência”.
[0134] É uma exigência de conformidade de fluxo de bits que as seguintes restrições se apliquem: Para cada i igual a 0 ou 1, NumEntriesInList[ i ][ RplsIdx[ i ] ] não deve ser menor do que NumRefIdxActive[ i ]. A imagem referida por cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] deve estar presente no DPB e deve ter TemporalId menor do que ou igual àquele da imagem atual. De modo opcional, a seguinte restrição pode ser especificada de modo adicional: o índice de entrada de qualquer entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve ser usado como um índice de referência para decodificação da imagem atual. De modo opcional, a seguinte restrição pode ser especificada de modo adicional: uma entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve se referir à mesma imagem de qualquer outra entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Uma entrada de STRP em RefPicList[ 0 ] ou RefPicList[ 1 ] de uma fatia de uma imagem e uma entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] da mesma fatia ou uma fatia diferente da mesma imagem não devem se referir à mesma imagem. A imagem atual em si não deve ser referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Não deve haver entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] para a qual a diferença entre o PicOrderCntVal da imagem atual e o PicOrderCntVal da imagem referida pela entrada é maior do que ou igual a 224. Supõe-se que setOfRefPics seja o conjunto de imagens únicas referidas por todas as entradas em RefPicList[ 0 ] e todas as entradas em RefPicList[ 1 ]. O número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1 e setOfRefPics deve ser igual para todas as fatias de uma imagem.
[0135] Processo de decodificação para marcação de imagem de referência.
[0136] Esse processo é invocado uma vez por imagem, após decodificação de um cabeçalho de fatia e do processo de decodificação para construção de lista de imagens de referência para a fatia, mas antes da decodificação dos dados de fatia. Esse processo pode resultar em uma ou mais imagens de referência no DPB sendo marcadas como “não usada para referência” ou “usada para referência de longo prazo”. Uma imagem decodificada no DPB pode ser marcada como “não usada para referência”, “usada para referência de curto prazo” ou “usada para referência de longo prazo”, mas apenas uma entre essas três a qualquer dado momento durante a operação do processo de decodificação. A atribuição de uma dentre essas marcações a uma imagem remove implicitamente outra dentre essas marcações quando aplicável. Quando uma imagem é denominada sendo marcada como “usada para referência”, isso se refere, coletivamente, à imagem sendo marcada como “usada para referência de curto prazo” ou “usada para referência de longo prazo” (mas não ambas). Quando a imagem atual é uma imagem IRAP, todas as imagens de referência atualmente no DPB (se houver) são marcadas como “não usadas para referência”. STRPs são identificadas por seus valores PicOrderCntVal. LTRPs são identificadas pelos Log2( MaxLtPicOrderCntLsb ) LSBs de seus valores PicOrderCntVal. O seguinte se aplica: para cada entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ], quando a imagem referida é uma STRP, a imagem é marcada como “usada para referência de longo prazo”. Cada imagem de referência no DPB que não é referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ] é marcada como “não usada para referência”.
[0137] A descrição detalhada da segunda modalidade da revelação é fornecida. Esta seção documenta uma segunda modalidade de revelação conforme descrito acima. A descrição é em relação ao VVC WD mais recente. Nesta modalidade, um conjunto de estruturas de lista de imagens de referência é sinalizado no SPS, compartilhado pela lista de imagens de referência 0 e lista de imagens de referência 1.
[0138] Sintaxe de RBSP de conjunto de parâmetros de sequência. seq_parameter_set_rbsp( ) { Descriptor sps_seq_parameter_set_id ue(v) chroma_format_idc ue(v) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) sps_max_dec_pic_buffering_minus1 ue(v) qtbtt_dual_tree_intra_flag ue(v)
log2_ctu_size_minus2 ue(v) log2_min_qt_size_intra_slices_minus2 ue(v) log2_min_qt_size_inter_slices_minus2 ue(v) max_mtt_hierarchy_depth_inter_slices ue(v) max_mtt_hierarchy_depth_intra_slices ue(v) num_ref_pic_lists_in_sps ue(v) long_term_ref_pics_flag u(1) if( long_term_ref_pics_flag ) additional_lt_poc_lsb ue(v) for( i = 0; i < num_ref_pic_lists_in_sps; i++) ref_pic_list_struct( i, long_term_ref_pics_flag ) rbsp_trailing_bits( ) }
[0139] Sintaxe de RBSP de conjunto de parâmetros de imagem. pic_parameter_set_rbsp( ) { Descriptor pps_pic_parameter_set_id ue(v) pps_seq_parameter_set_id ue(v) for( i = 0; i < 2; i++) num_ref_idx_default_active_minus1[ i ] ue(v) rbsp_trailing_bits( ) }
[0140] Sintaxe de cabeçalho de fatia. slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) for( i = 0; i < 2; i++ ) { ref_pic_list_sps_flag[ i ] u(1) if( ref_pic_list_sps_flag[ i ] ) {
if( num_ref_pic_lists_in_sps > 1) ref_pic_list_idx[ i ] u(v) } else ref_pic_list_struct( num_ref_pic_lists_in_sps + i, long_term_ref_pics_flag ) } if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
[0141] Sintaxe de estrutura de lista de imagens de referência. ref_pic_list_struct( rplsIdx, ltrpFlag ) { Descriptor num_strp_entries[ rplsIdx ] ue(v) if( ltrpFlag ) num_ltrp_entries[ rplsIdx ] ue(v) for( i = 0; i < NumEntriesInList[ rplsIdx ]; i++) { if( num_ltrp_entries[ rplsIdx ] > 0 ) lt_ref_pic_flag[ rplsIdx ][ i ] if( !lt_ref_pic_flag[ rplsIdx ][ i ] ) delta_poc_st[ rplsIdx ][ i ] // Não ter _minus1 no presente se(v) documento, para permitir que a mesma imagem de referência seja incluída em múltiplas posições de uma lista de imagens de referência. Conforme um efeito secundário, isso também possibilitará referenciamento de imagem atual (isto é, cópia de intra bloco). Nota-se também que está sinalizado. else poc_lsb_lt[ rplsIdx ][ i ] u(v) }
}
[0142] Semânticas de cabeçalho de unidade NAL são discutidas.
[0143] Semântica de RBSP de conjunto de parâmetros de sequência.
[0144] Um log2_max_pic_order_cnt_lsb_minus4 especifica o valor da variável MaxPicOrderCntLsb que é usado no processo de decodificação para contagem de ordem de imagem da seguinte forma: MaxPicOrderCntLsb = 2( log2_max_pic_order_cnt_lsb_minus4 + 4 ). O valor de log2_max_pic_order_cnt_lsb_minus4 deve estar na faixa de 0 a 12, inclusive. sps_max_dec_pic_buffering_minus1 mais 1 especifica o tamanho máximo necessário do buffer de imagem decodificada para a CVS em unidades de buffers de armazenamento de imagem. O valor de sps_max_dec_pic_buffering_minus1 deve estar na faixa de 0 a MaxDpbSize − 1, inclusive, em que MaxDpbSize é conforme especificado em alguma outra parte. num_ref_pic_lists_in_sps especifica o número de estruturas de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) incluído no SPS. O valor de num_ref_pic_lists_in_sps deve estar na faixa de 0 a 128, inclusive. Um decodificador deve alocar memória para um número total de estruturas de sintaxe num_short_term_ref_pic_sets + 2 ref_pic_list_struct( rplsIdx, ltrpFlag ) visto que pode haver duas estruturas de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) diretamente sinalizadas no cabeçalhos de fatia de uma imagem atual. long_term_ref_pics_flag igual a 0 especifica que nenhuma LTRP é usada para predição inter de qualquer imagem codificada na CVS. long_term_ref_pics_flag igual a 1 especifica que LTRPs podem ser usadas para predição inter de uma ou mais imagens codificadas na CVS. additional_lt_poc_lsb especifica o valor da variável MaxLtPicOrderCntLsb que é usada no processo de decodificação para listas de imagens de referência da seguinte forma: MaxLtPicOrderCntLsb = 2( log2_max_pic_order_cnt_lsb_minus4 + 4 + additional _lt_poc_lsb )) O valor de additional_lt_poc_lsb deve estar na faixa de 0 a 32 − log2_max_pic_order_cnt_lsb_minus4 − 4, inclusive. Quando não presente, deduz-se que o valor de additional_lt_poc_lsb seja igual a 0.
[0145] Semânticas de RBSP de conjunto de parâmetros de imagem são discutidas.
[0146] Semântica de cabeçalho de fatia.
[0147] Quando presente, o valor de cada um dentre os elementos de sintaxe de cabeçalho de fatia slice_pic_parameter_set_id e slice_pic_order_cnt_lsb deve ser igual em todos os cabeçalhos de fatia de uma imagem codificada. slice_type especifica o tipo de codificação da fatia de acordo com a Tabela 7-3. Tabela 7-3 – Associação de nome a slice_type slice_type Nome de slice_type 0 B (fatia B) 1 P (fatia P) 2 I (fatia I)
[0148] Quando nal_unit_type é igual a IRAP_NUT, isto é, a imagem é uma imagem IRAP, slice_type deve ser igual a 2. ... slice_pic_order_cnt_lsb especifica a contagem de ordem de imagem módulo MaxPicOrderCntLsb para a imagem atual. O comprimento do elemento de sintaxe slice_pic_order_cnt_lsb é log2_max_pic_order_cnt_lsb_minus4 + 4 bits. O valor do slice_pic_order_cnt_lsb deve estar na faixa de 0 a MaxPicOrderCntLsb − 1, inclusive. Quando slice_pic_order_cnt_lsb não está presente, deduz-se que slice_pic_order_cnt_lsb seja igual a 0. ref_pic_list_sps_flag[ i ] igual a 1 especifica que lista de imagens de referência i da imagem atual é derivada com base em uma dentre a estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) no SPS ativo. ref_pic_list_sps_flag[ i ] igual a 0 especifica que lista de imagens de referência i da imagem atual são derivadas com base na estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) que é diretamente incluída nos cabeçalhos de fatia da imagem atual. Quando num_ref_pic_lists_in_sps é igual a 0, o valor de ref_pic_list_sps_flag[ i ] deve ser igual a 0. ref_pic_list_idx[ i ] especifica o índice, na lista das estruturas de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) incluída no SPS ativo, da estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) que é usada para derivação de lista de imagens de referência i da imagem atual. O elemento de sintaxe ref_pic_list_idx[ i ] é representado por Ceil( Log2( num_ref_pic_lists_in_sps ) ) bits. Quando não presente, deduz-se que o valor de ref_pic_list_idx[ i ] seja igual a 0. O valor de ref_pic_list_idx[ i ] deve estar na faixa de 0 a num_ref_pic_lists_in_sps − 1, inclusive. num_ref_idx_active_override_flag igual a 1 especifica que o elemento de sintaxe num_ref_idx_active_minus1[ 0 ] está presente para fatias P e B e que o elemento de sintaxe num_ref_idx_active_minus1[ 1 ] está presente para fatias
B. num_ref_idx_active_override_flag igual a 0 especifica que os elementos de sintaxe num_ref_idx_active_minus1[ 0 ] e num_ref_idx_active_minus1[ 1 ] não estão presentes.
[0149] num_ref_idx_active_minus1[ i ], quando presente, especifica o valor da variável NumRefIdxActive[ i ] da seguinte forma: NumRefIdxActive[ i ] = num_ref_idx_active_minus1[ i ] + 1. O valor de num_ref_idx_active_minus1[ i ] deve estar na faixa de 0 a 14, inclusive. O valor de NumRefIdxActive[ i ] − 1 especifica o índice de referência máximo para lista de imagens de referência i que pode ser usada para decodificar a fatia. Quando o valor de NumRefIdxActive[ i ] é igual a 0, nenhum índice de referência para lista de imagens de referência i pode ser usado para decodificar a fatia. Para i igual a 0 ou 1, quando a fatia atual for uma fatia B e num_ref_idx_active_override_flag é igual a 0, deduz-se que NumRefIdxActive[ i ] seja igual a num_ref_idx_default_active_minus1[ i ] + 1. Quando a fatia atual for uma fatia P e num_ref_idx_active_override_flag é igual a 0, deduz-se que NumRefIdxActive[ 0 ] seja igual a num_ref_idx_default_active_minus1[ 0 ] + 1. Quando a fatia atual for uma fatia P, deduz-se que NumRefIdxActive[ 1 ] seja igual a 0. Quando a fatia atual for uma fatia I, deduz-se que NumRefIdxActive[ 0 ] e NumRefIdxActive[ 1 ] sejam iguais a 0.
[0150] Alternativamente, para i igual a 0 ou 1, o seguinte se aplica após o que foi mencionado acima: Supõe-se que rplsIdx1 seja definido igual a ref_pic_list_sps_flag[ i ] ? ref_pic_list_idx[ i ] : num_ref_pic_lists_in_sps[ i ], e numRpEntries[ i ] seja igual a num_strp_entries[ i ][ rplsIdx1 ] + num_ltrp_entries[ i ][ rplsIdx1 ]. Quando NumRefIdxActive[ i ] é maior do que numRpEntries[ i ], o valor de NumRefIdxActive[ i ] é definido como igual a numRpEntries[ i ].
[0151] Semântica de estrutura de lista de imagens de referência.
[0152] A estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) pode estar presente em um SPS ou em um cabeçalho de fatia. Dependendo de a estrutura de sintaxe ser incluída em um cabeçalho de fatia ou um SPS, o seguinte se aplica: Se presente em um cabeçalho de fatia, a estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) especifica uma lista de imagens de referência da imagem atual (a imagem contendo a fatia). De outro modo (presente em um SPS), a estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) especifica uma lista de imagens de referência candidata, e o termo “a imagem atual” na semântica especificada no restante desta seção se refere a cada imagem que 1) tem uma ou mais fatias contendo ref_pic_list_idx[ i ] igual a um índice na lista das estruturas de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) incluída no SPS, e 2) está em uma CVS que tem o SPS como o SPS ativo. num_strp_entries[ rplsIdx ] especifica o número de entradas de STRP na estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ). num_ltrp_entries[ rplsIdx ] especifica o número de entradas de LTRP na estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ). Quando não presente, deduz-se que o valor de num_ltrp_entries[ rplsIdx ] seja igual a 0.
[0153] A variável NumEntriesInList[ rplsIdx ] é derivada da seguinte forma: NumEntriesInList[ rplsIdx ] = num_strp_entries[ rplsIdx ] + num_ltrp_entries[ rplsIdx ]. O valor de NumEntriesInList[ rplsIdx ] deve estar na faixa de 0 a sps_max_dec_pic_buffering_minus1, inclusive. lt_ref_pic_flag[ rplsIdx ][ i ] igual a 1 especifica que a i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) é uma entrada de LTRP. lt_ref_pic_flag[ rplsIdx ][ i ] igual a 0 especifica que a i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ) é uma entrada de STRP. Quando não presente, deduz-se que o valor de lt_ref_pic_flag[ rplsIdx ][ i ] seja igual a 0. É uma exigência de conformidade de fluxo de bits que a soma de lt_ref_pic_flag[ rplsIdx ][ i ] para todos os valores de i na faixa de 0 a NumEntriesInList[ rplsIdx ] − 1, inclusive, deve ser igual a num_ltrp_entries[ rplsIdx ]. delta_poc_st[ rplsIdx ][ i ], quando a i-ésima entrada é a primeira entrada de STRP em estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ), especifica a diferença entre os valores de contagem de ordem de imagem da imagem atual e a imagem referida pela i-ésima entrada, ou, quando a i-ésima entrada é uma entrada de STRP, mas não a primeira entrada de STRP na estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ), especifica a diferença entre os valores de contagem de ordem de imagem das imagens referidas pela i-ésima entrada e pela entrada de STRP anterior na estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ). O valor de delta_poc_st[ rplsIdx ][ i ] deve estar na faixa de 0 a 215 − 1, inclusive. poc_lsb_lt[ rplsIdx ][ i ] especifica o valor da contagem de ordem de imagem módulo MaxLtPicOrderCntLsb da imagem referida pela i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( rplsIdx, ltrpFlag ). O comprimento do elemento de sintaxe poc_lsb_lt[ rplsIdx ][ i ] é Log2( MaxLtPicOrderCntLsb ) bits.
[0154] O processo de decodificação geral especificado como parte da descrição detalhada da primeira modalidade desta revelação se aplica. O processo de decodificação de unidade NAL é descrito. O processo de decodificação de unidade NAL especificado como parte da descrição detalhada da primeira modalidade desta revelação se aplica.
[0155] O processo de decodificação de fatia é fornecido.
[0156] Processo de decodificação para contagem de ordem de imagem.
[0157] O processo de decodificação para contagem de ordem de imagem especificado como parte da descrição detalhada da primeira modalidade desta revelação se aplica.
[0158] Processo de decodificação para construção de listas de imagens de referência.
[0159] Esse processo é invocado no início do processo de decodificação para cada fatia de uma imagem não IRAP. As imagens de referência são endereçadas através de índices de referência. Um índice de referência é um índice em uma lista de imagens de referência. Ao decodificar uma fatia I, nenhuma lista de imagens de referência é usada na decodificação dos dados de fatia. Ao decodificar uma fatia P, apenas lista de imagens de referência 0 (isto é, RefPicList[ 0 ]) é usada na decodificação dos dados de fatia. Ao decodificar uma fatia B, a lista de imagens de referência 0 e a lista de imagens de referência 1 (isto é, RefPicList[ 1 ]) são usadas na decodificação dos dados de fatia. No início do processo de decodificação para cada fatia de uma imagem não IRAP, as listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são derivadas. As listas de imagens de referência são usadas na marcação de imagens de referência ou na decodificação dos dados de fatia. Para uma fatia I de uma imagem não IRAP que não é a primeira fatia da imagem, RefPicList[ 0 ] e RefPicList[ 1 ] podem ser derivadas para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para a decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação. Para uma fatia P que não é a primeira fatia de uma imagem, RefPicList[ 1 ] pode ser derivada para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação.
[0160] As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( há uma picA de referência no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0161] Para cada i igual a 0 ou 1, o seguinte se aplica: as primeiras entradas NumRefIdxActive[ i ] em RefPicList[ i ] são denominadas entradas ativas em RefPicList[ i ], e as outras entradas em RefPicList[ i ] são denominadas as entradas inativas em RefPicList[ i ]. Cada entrada RefPicList[ i ][ j ] para j na faixa de 0 a NumEntriesInList[ RplsIdx[ i ] ] − 1, inclusive, é denominada uma entrada de STRP se lt_ref_pic_flag[ RplsIdx[ i ] ][ j ] for igual a 0, e uma entrada de LTRP de outro modo. É possível que uma imagem particular seja referida tanto por uma entrada em RefPicList[ 0 ] quanto por uma entrada em RefPicList[ 1 ]. É também possível que uma imagem particular seja referida por mais do que uma entrada em RefPicList[ 0 ] ou por mais do que uma entrada em RefPicList[ 1 ]. As entradas ativas em RefPicList[ 0 ] e as entradas ativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que podem ser usadas para predição inter da imagem atual e uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. As entradas inativas em RefPicList[ 0 ] e as entradas inativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que não são usadas para predição inter da imagem atual, mas podem ser usadas em predição inter para uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. Pode haver uma ou mais entradas em RefPicList[ 0 ] ou RefPicList[ 1 ] que são iguais a “nenhuma imagem de referência” visto que as imagens correspondentes não estão presentes no DPB. Cada entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] que é igual a “nenhuma imagem de referência” deve ser ignorada. Uma perda de imagem não intencional deve ser deduzida para cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] que é igual a “nenhuma imagem de referência”.
[0162] É uma exigência de conformidade de fluxo de bits que as seguintes restrições se apliquem: Para cada i igual a 0 ou 1, NumEntriesInList[ RplsIdx[ i ] ] não deve ser menor do que NumRefIdxActive[ i ]. A imagem referida por cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] deve estar presente no DPB e deve ter TemporalId menor do que ou igual àquele da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: o índice de entrada de qualquer entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve ser usado como um índice de referência para decodificação da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: uma entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve se referir à mesma imagem de qualquer outra entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Uma entrada de STRP em RefPicList[ 0 ] ou RefPicList[ 1 ] de uma fatia de uma imagem e uma entrada de LTRP em RefPicList[ 0 ] ou
RefPicList[ 1 ] da mesma fatia ou uma fatia diferente da mesma imagem não devem se referir à mesma imagem. A imagem atual em si não deve ser referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Não deve haver entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] para a qual a diferença entre o PicOrderCntVal da imagem atual e o PicOrderCntVal da imagem referida pela entrada é maior do que ou igual a 224. Supõe-se que setOfRefPics seja o conjunto de imagens únicas referidas por todas as entradas em RefPicList[ 0 ] e todas as entradas em RefPicList[ 1 ]. O número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1 e setOfRefPics deve ser igual para todas as fatias de uma imagem.
[0163] O processo de decodificação para marcação de imagem de referência é discutido.
[0164] Esse processo é invocado uma vez por imagem, após decodificação de um cabeçalho de fatia e do processo de decodificação para construção de lista de imagens de referência para a fatia, mas antes da decodificação dos dados de fatia. Esse processo pode resultar em uma ou mais imagens de referência no DPB sendo marcadas como “não usada para referência” ou “usada para referência de longo prazo”. Uma imagem decodificada no DPB pode ser marcada como “não usada para referência”, “usada para referência de curto prazo” ou “usada para referência de longo prazo”, mas apenas uma entre essas três a qualquer dado momento durante a operação do processo de decodificação. A atribuição de uma dentre essas marcações a uma imagem remove implicitamente outra dentre essas marcações quando aplicável. Quando uma imagem é denominada como sendo marcada como “usada para referência”, isso se refere, coletivamente, à imagem sendo marcada como “usada para referência de curto prazo” ou “usada para referência de longo prazo” (mas não ambas). Quando a imagem atual é uma imagem IRAP, todas as imagens de referência atualmente no DPB (se houver) são marcadas como “não usadas para referência”. STRPs são identificadas por seus valores PicOrderCntVal. LTRPs são identificadas pelos Log2( MaxLtPicOrderCntLsb ) LSBs de seus valores PicOrderCntVal.
[0165] O seguinte se aplica: para cada entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ], quando a imagem referida é uma STRP, a imagem é marcada como “usada para referência de longo prazo”. Cada imagem de referência no DPB que não é referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ] é marcada como “não usada para referência”.
[0166] A Figura 5 é uma modalidade de um método 500 de decodificação de um fluxo de bits de vídeo codificado implantado por um decodificador de vídeo (por exemplo, decodificador de vídeo 30). O método 500 pode ser realizado após o fluxo de bits decodificado ter sido recebido direta ou indiretamente a partir de um codificador de vídeo (por exemplo, codificador de vídeo 20). O método 500 pode ser realizado para aperfeiçoar o processo de decodificação (por exemplo, tornar o processo de decodificação mais eficiente, mais rápido, etc., do que processos de decodificação convencionais) visto que as estruturas de lista de imagens de referência são incluídas no fluxo de bits de vídeo codificado para todos os tipos de fatias. Portanto, conforme uma questão prática, o desempenho de um codec pode ser aperfeiçoado, o que leva a uma melhor experiência de usuário.
[0167] No bloco 502, uma estrutura de primeira lista de imagens de referência e uma estrutura de segunda lista de imagens de referência representadas no fluxo de bits de vídeo codificado são obtidas. Em uma modalidade, a estrutura de primeira lista de imagens de referência e uma estrutura de segunda lista de imagens de referência são obtidas analisando-se o fluxo de bits de vídeo codificado.
[0168] Em uma modalidade, uma ordem de entradas na estrutura de primeira lista de imagens de referência ou na estrutura de segunda lista de imagens de referência é igual a uma ordem de imagens de referência correspondentes na lista de imagens de referência. Em uma modalidade, a ordem é de zero a um valor indicado. Em uma modalidade, o valor indicado é de zero a um valor indicado por sps_max_dec_pic_buffering_minus1.
[0169] No bloco 504, uma primeira lista de imagens de referência de uma fatia atual e uma segunda lista de imagens de referência da fatia atual são derivadas com base na estrutura de primeira lista de imagens de referência e na estrutura de segunda lista de imagens de referência. Em uma modalidade, a primeira e a segunda listas de imagens de referência são derivadas para todos os tipos de fatias, e não só para uma fatia bipreditiva ou fatia bidirecional (B). Em uma modalidade, a fatia atual compreende uma fatia intra (I) ou uma fatia unipreditiva (P). Em uma modalidade, a lista de imagens de referência é designada
RefPictList[0] ou RefPictList[1].
[0170] No bloco 506, pelo menos um bloco reconstruído da fatia atual é obtido após derivação da primeira lista de imagens de referência e da segunda lista de imagens de referência. Em uma modalidade, o pelo menos um bloco reconstruído é usado para gerar uma imagem exibida em um visor de um dispositivo eletrônico.
[0171] Em uma modalidade, a lista de imagens de referência compreende uma lista de imagens de referência usada para predição inter. Em uma modalidade, a predição inter é para uma fatia P ou para uma fatia B.
[0172] Em uma modalidade, o cabeçalho de fatia contém uma flag de conjunto de parâmetros de sequência (SPS) de lista de imagens de referência designada ref_pic_list_sps_flag[ i ]. Quando essa flag for igual a 1, a i-ésima lista de imagens de referência, isto é, RefPictList[ i ], não é diretamente sinalizada no cabeçalho de fatia, mas referenciada a partir do SPS. Quando essa flag for igual a 0, a i-ésima lista de imagens de referência, isto é, RefPictList[ i ], é diretamente sinalizada no cabeçalho de fatia, não referenciada do SPS. Em uma modalidade, o cabeçalho de fatia contém uma flag de substituição ativa de índice de referência numérico designada por num_ref_idx_active_override_flag. Quando essa flag for igual a 1, o número de entradas ativas em cada lista de imagens de referência é o valor padrão sinalizado no PPS. Quando essa flag for igual a 0, o número de entradas ativas em cada lista de imagens de referência é o sinalizado explicitamente no cabeçalho de fatia.
[0173] Em uma modalidade, a lista de imagens de referência é designada RefPictList[0] ou RefPictList[1], e uma ordem de entradas na estrutura de primeira lista de imagens de referência ou na estrutura de sintaxe de segunda lista de imagens de referência é igual a uma ordem de imagens de referência correspondentes na lista de imagens de referência.
[0174] Um resumo de modalidades alternativas com base na primeira e na segunda modalidades é fornecido.
[0175] Esta seção fornece breves resumos de outras modalidades alternativas da revelação. Os resumos são em relação à descrição da primeira modalidade. Entretanto, o conceito básico da revelação para as modalidades alternativas a seguir também é aplicável para implantação no que se refere a revelação para a segunda modalidade. Tal implantação é no mesmo espírito de como os aspectos são implantados no que se refere a primeira modalidade.
[0176] Semântica de POC de delta de entradas de imagem de referência de curto prazo.
[0177] Em uma modalidade alternativa da revelação, a semântica do elemento de sintaxe que especifica a POC de delta da i-ésima entrada em uma estrutura de lista de imagens de referência ref_pic_list_struct( ) é definida como a diferença de POC entre a imagem atual e a imagem de referência associada àquela i-ésima entrada. Parte da descrição usada na presente invenção é em relação ao presente projeto padrão (por exemplo, o projeto de trabalho VVC) em que apenas o delta é mostrado ou descrito. Texto removido é indicado por texto tachado e qualquer texto adicionado é realçado.
[0178] A semântica de delta_poc_st[ listIdx ][ rplsIdx ][ i ] é definida da seguinte forma: delta_poc_st[ listIdx ][ rplsIdx ][ i ] especifica a diferença entre os valores de contagem de ordem de imagem da imagem atual e a imagem referida pela i-ésima entrada. O valor de delta_poc_st[ listIdx ][ rplsIdx ][ i ] deve estar na faixa de −215 a 215 − 1, inclusive.
[0179] A equação no processo de construção de lista de imagens de referência precisa ser atualizada. As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBasePicOrderCntVal − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência”
pocBase = RefPicPocList[ i ][ j ] } else { if( há uma picA de referência no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0180] Sinalização de entradas de imagem de referência de longo prazo.
[0181] Em uma modalidade alternativa da revelação, entradas de imagem de referência de longo prazo não são sinalizadas na mesma estrutura de lista de imagens de referência que contém entradas de imagem de referência de curto prazo. As entradas de imagem de referência de longo prazo são sinalizadas em uma estrutura separada e para cada entrada na estrutura há um elemento de sintaxe que descreve a posição pretendida da entrada de imagem de referência de longo prazo para derivação do índice de entrada correspondente na lista de imagens de referência final.
[0182] Sintaxe de RBSP de conjunto de parâmetros de sequência. seq_parameter_set_rbsp( ) { Descriptor sps_seq_parameter_set_id ue(v) chroma_format_idc ue(v) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) sps_max_dec_pic_buffering_minus1 ue(v)
qtbtt_dual_tree_intra_flag ue(v) log2_ctu_size_minus2 ue(v) log2_min_qt_size_intra_slices_minus2 ue(v) log2_min_qt_size_inter_slices_minus2 ue(v) max_mtt_hierarchy_depth_inter_slices ue(v) max_mtt_hierarchy_depth_intra_slices ue(v) long_term_ref_pics_flag u(1) if( long_term_ref_pics_flag ) additional_lt_poc_lsb ue(v) for( i = 0; i < 2; i++) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j ) } long_term_ref_pics_flag u(1) if( long_term_ref_pics_flag ) { additional_lt_poc_lsb ue(v) num_ref_pic_lists_lt_in_sps ue(v) } for( i = 0; i < num_ref_pic_lists_lt_in_sps; i++) ref_pic_list_lt_struct( i ) rbsp_trailing_bits( ) }
[0183] Sintaxe de cabeçalho de fatia. slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) for( i = 0; i < 2; i++ ) {
ref_pic_list_sps_flag[ i ] u(1) if( ref_pic_list_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1) ref_pic_list_idx[ i ] u(v) if(long_term_ref_pics_flag ) ref_pic_list_lt_idx[ i ] u(v) } else { ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ] ) if(long_term_ref_pics_flag ) ref_pic_list_lt_struct( num_ref_pic_lists_lt_in_sps + 1 ) } } if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
[0184] Sintaxe de estrutura de lista de imagens de referência. ref_pic_list_struct( listIdx, rplsIdx ) { Descriptor num_strp_entries[ listIdx ][ rplsIdx ] ue(v) for( i = 0; i < NumEntriesInList[ listIdx ][ rplsIdx ]; i++) { delta_poc_st[ listIdx ][ rplsIdx ][ i ] se(v) } }
[0185] Sintaxe de estrutura de lista de imagens de referência de longo prazo. ref_pic_list_lt_struct( ltRplsIdx ) { Descriptor num_ltrp_entries[ ltRplsIdx ] ue(v) for( i = 0; i < num_ltrp_entries[ ltRplsIdx ]; i++) {
poc_lsb_lt[ ltRplsIdx ][ i ] u(v) lt_pos_idx[ ltRplsIdx ][ i ] // especifica o índice dessa imagem de u(v) referência LT nesse RPL } }
[0186] Semântica de RBSP de conjunto de parâmetros de sequência.
[0187] Um num_ref_pic_lists_lt_in_sps especifica o número das estruturas de sintaxe ref_pic_list_lt_struct( ltRplsIdx ) incluído no SPS. O valor de num_ref_pic_lists_lt_in_sps deve estar na faixa de 0 a 64, inclusive. Quando não presente, deduz-se que o valor de num_ref_pic_lists_lt_in_sps seja igual a 0.
[0188] Semântica de cabeçalho de fatia.
[0189] Um ref_pic_list_lt_idx[ i ] especifica o índice na lista das estruturas de sintaxe ref_pic_list_lt_struct( ltRplsIdx ) incluída no SPS ativo que é usado para derivação de lista de imagens de referência i da imagem atual. O elemento de sintaxe ref_pic_list_lt_idx[ i ] é representado por Ceil( Log2( num_ref_pic_lists_lt_in_sps ) ) bits. O valor de ref_pic_list_lt_idx deve estar na faixa de 0 a num_ref_pic_lists_lt_in_sps − 1, inclusive.
[0190] Semântica de estrutura de lista de imagens de referência.
[0191] A estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx ) pode estar presente em um SPS ou em um cabeçalho de fatia. Dependendo de a estrutura de sintaxe ser incluída em um cabeçalho de fatia ou um SPS, o seguinte se aplica: Se presente em um cabeçalho de fatia, a estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx ) especifica lista de imagens de referência de curto prazo listIdx da imagem atual (a imagem contendo a fatia). De outro modo (presente em um SPS), a estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx ) especifica um candidato para lista de imagens de referência de curto prazo listIdx, e o termo “a imagem atual” na semântica especificada no restante desta seção se refere a cada imagem que 1) tem uma ou mais fatias contendo ref_pic_list_idx[ listIdx ] igual a um índice na lista das estruturas de sintaxe ref_pic_list_struct( listIdx, rplsIdx ) incluída no SPS, e 2) está em uma CVS que tem o SPS como o SPS ativo. num_strp_entries[ listIdx ][ rplsIdx ] especifica o número de entradas de STRP na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx ).
[0192] num_ltrp_entries[ listIdx ][ rplsIdx ] especifica o número de entradas de LTRP na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). Quando não presente, deduz-se que o valor de num_ltrp_entries[ listIdx ][ rplsIdx ] seja igual a 0.
[0193] A variável NumEntriesInList[ listIdx ][ rplsIdx ] é derivada da seguinte forma:
[0194] NumRefPicEntriesInRpl[ listIdx ][ rplsIdx ] = num_strp_entries[ listIdx ][ rplsIdx ] + num_ltrp_entries[ listIdx ][ rplsIdx ] (7-34)
[0195] O valor de NumRefPicEntries[ listIdx ][ rplsIdx ] deve estar na faixa de 0 a sps_max_dec_pic_buffering_minus1, inclusive.
[0196] lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] igual a 1 especifica que a i- ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) é uma entrada de LTRP. lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] igual a 0 especifica que a i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) é uma entrada de STRP. Quando não presente, deduz-se que o valor de lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] seja igual a
0.
[0197] É uma exigência de conformidade de fluxo de bits que a soma de lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] para todos os valores de i na faixa de 0 a NumRefPicEntries[ listIdx ][ rplsIdx ] − 1, inclusive, deve ser igual a num_ltrp_entries[ listIdx ][ rplsIdx ].
[0198] delta_poc_st[ listIdx ][ rplsIdx ][ i ], quando a i-ésima entrada é a primeira entrada de STRP em estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx ), especifica a diferença entre os valores de contagem de ordem de imagem da imagem atual e a imagem referida pela i-ésima entrada, ou, quando a i-ésima entrada é uma entrada de STRP, mas não a primeira entrada de STRP na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx ), especifica a diferença entre os valores de contagem de ordem de imagem das imagens referidas pela i-ésima entrada e pela entrada de STRP anterior na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx ). O valor de delta_poc_st[ listIdx ][ rplsIdx ][ i ] deve estar na faixa de −215 a 215 − 1, inclusive.
[0199] poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] especifica o valor da contagem de ordem de imagem módulo MaxLtPicOrderCntLsb da imagem referida pela i- ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). O comprimento do elemento de sintaxe poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] é Log2( MaxLtPicOrderCntLsb ) bits.
[0200] Semântica de estrutura de lista de imagens de referência de longo prazo.
[0201] A estrutura de sintaxe ref_pic_list_lt_struct( ltRplsIdx ) pode estar presente em um SPS ou em um cabeçalho de fatia. Dependendo de a estrutura de sintaxe ser incluída em um cabeçalho de fatia ou um SPS, o seguinte se aplica: Se presente em um cabeçalho de fatia, a estrutura de sintaxe ref_pic_list_lt_struct( ltRplsIdx ) especifica lista de imagens de referência de longo prazo da imagem atual (a imagem contendo a fatia). De outro modo (presente em um SPS), a estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx ) especifica um candidato para lista de imagens de referência de longo prazo, e o termo “a imagem atual” na semântica especificada no restante desta seção se refere a cada imagem que 1) tem uma ou mais fatias contendo ref_pic_list_lt_idx[ i ] igual a um índice na lista das estruturas de sintaxe ref_pic_list_lt_struct( ltRplsIdx ) incluída no SPS, e 2) está em uma CVS que tem o SPS como o SPS ativo. num_ltrp_entries[ ltRplsIdx ] especifica o número de entradas de LTRP na estrutura de sintaxe ref_pic_list_lt_struct( ltRplsIdx ). poc_lsb_lt[ rplsIdx ][ i ] especifica o valor da contagem de ordem de imagem módulo MaxLtPicOrderCntLsb da imagem referida pela i-ésima entrada na estrutura de sintaxe ref_pic_list_lt_struct( rplsIdx ). O comprimento do elemento de sintaxe poc_lsb_lt[ rplsIdx ][ i ] é Log2( MaxLtPicOrderCntLsb ) bits. lt_pos_idx[ rplsIdx ][ i ] especifica o índice da i-ésima entrada na estrutura de sintaxe ref_pic_list_lt_struct( rplsIdx ) na lista de imagens de referência após a construção de lista de imagens de referência. O comprimento do elemento de sintaxe lt_pos_idx[ rplsIdx ][ i ] é Log2( sps_max_dec_pic_buffering_minus1 + 1 ) bits. Quando num_ltrp_entries[ ltRplsIdx ] é maior do que 1, poc_lsb_lt[ rplsIdx ][ i ] e lt_pos_idx[ rplsIdx ][ i ] devem estar na ordem decrescente de valores lt_pos_idx[ rplsIdx ][ i ].
[0202] O processo de decodificação é descrito.
[0203] Processo de decodificação para construção de listas de imagens de referência.
[0204] Esse processo é invocado no início do processo de decodificação para cada fatia de uma imagem não IRAP.
As imagens de referência são endereçadas através de índices de referência.
Um índice de referência é um índice em uma lista de imagens de referência.
Ao decodificar uma fatia I, nenhuma lista de imagens de referência é usada na decodificação dos dados de fatia.
Ao decodificar uma fatia P, apenas lista de imagens de referência 0 (isto é, RefPicList[ 0 ]), é usada na decodificação dos dados de fatia.
Ao decodificar uma fatia B, tanto a lista de imagens de referência 0 quanto a lista de imagens de referência 1 (isto é, RefPicList[ 1 ]) são usadas na decodificação dos dados de fatia.
No início do processo de decodificação para cada fatia de uma imagem não IRAP, as listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são derivadas.
As listas de imagens de referência são usadas na marcação de imagens de referência ou na decodificação dos dados de fatia.
Para uma fatia I de uma imagem não IRAP que não é a primeira fatia da imagem, RefPicList[ 0 ] e RefPicList[ 1 ] podem ser derivadas para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para a decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação.
Para uma fatia P que não é a primeira fatia de uma imagem, RefPicList[ 1 ] pode ser derivada para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação.
As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] )
RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( há uma picA de referência no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } if( ref_pic_list_lt_sps_flag[ i ] ) LtRplsIdx = ref_pic_list_lt_idx[ i ] else LtRplsIdx = num_ref_pic_lists_lt_in_sps[ i ] for( j = 0; j < num_ltrp_entries[ LtRplsIdx[ i ] ]; j++) { if( há uma picA de referência no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) { igual a poc_lsb_lt[ LtRplsIdx[ i ] ][ j ] ) for( k = sps_max_dec_pic_buffering_minus1; k > lt_pos_idx[ LtRplsIdx[ i ] ] [ j ]; k− −) RefPicList[ i ][ k ] = RefPicList[ i ][ k − 1 ] RefPicList[ i ][ lt_pos_idx[ LtRplsIdx[ i ] ] [ j ] ] = picA } else { for( k = sps_max_dec_pic_buffering_minus1; k > lt_pos_idx[ LtRplsIdx[ i ] ] [ j ]; k− −) RefPicList[ i ][ k ] = RefPicList[ i ][ k − 1 ] RefPicList[ i ][ lt_pos_idx[ RplsIdx[ i ] ] [ j ] ] = “nenhuma imagem de referência” } } }
[0205] Para cada i igual a 0 ou 1, o seguinte se aplica: as primeiras entradas NumRefIdxActive[ i ] em RefPicList[ i ] são denominadas as entradas ativas em RefPicList[ i ], e as outras entradas em RefPicList[ i ] são denominadas as entradas inativas em RefPicList[ i ]. Cada entrada em RefPicList[ i ][ j ] para j na faixa de 0 a NumEntriesInList[ i ][ RplsIdx[ i ] ] − 1, inclusive, é denominada uma entrada de STRP se lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] for igual a 0, e denominada uma entrada de LTRP de outro modo. É possível que uma imagem particular seja referida tanto por uma entrada em RefPicList[ 0 ] quanto por uma entrada em RefPicList[ 1 ]. É também possível que uma imagem particular seja referida por mais do que uma entrada em RefPicList[ 0 ] ou por mais do que uma entrada em RefPicList[ 1 ]. As entradas ativas em RefPicList[ 0 ] e as entradas ativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que podem ser usadas para predição inter da imagem atual e uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. As entradas inativas em RefPicList[ 0 ] e as entradas inativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que não são usadas para predição inter da imagem atual, mas podem ser usadas em predição inter para uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. Pode haver uma ou mais entradas em RefPicList[ 0 ] ou RefPicList[ 1 ] que são iguais a “nenhuma imagem de referência” visto que as imagens correspondentes não estão presentes no DPB. Cada entrada inativa em RefPicList[ 0 ] ou RefPicList[ 0 ] que é igual a “nenhuma imagem de referência” deve ser ignorada. Uma perda de imagem não intencional deve ser deduzida para cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] que é igual a “nenhuma imagem de referência”.
[0206] É uma exigência de conformidade de fluxo de bits que as seguintes restrições se apliquem: para cada i igual a 0 ou 1, o número de entradas em RefPicList[ i ] não deve ser menor do que NumRefIdxActive[ i ]. A imagem referida por cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] deve estar presente no DPB e deve ter TemporalId menor do que ou igual àquele da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: o índice de entrada de qualquer entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve ser usado como um índice de referência para decodificação da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: uma entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve se referir à mesma imagem de qualquer outra entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Uma entrada de STRP em RefPicList[ 0 ] ou RefPicList[ 1 ] de uma fatia de uma imagem e uma entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] da mesma fatia ou uma fatia diferente da mesma imagem não devem se referir à mesma imagem. A imagem atual em si não deve ser referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Não deve haver entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] para a qual a diferença entre o PicOrderCntVal da imagem atual e o PicOrderCntVal da imagem referida pela entrada é maior do que ou igual a 224. Supõe-se que setOfRefPics seja o conjunto de imagens únicas referidas por todas as entradas em RefPicList[ 0 ] e todas as entradas em RefPicList[ 1 ]. O número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1 e setOfRefPics deve ser igual para todas as fatias de uma imagem.
[0207] A sinalização do número de entradas de imagem de referência de curto prazo é discutida.
[0208] Em uma modalidade alternativa da revelação, o elemento de sintaxe que especifica o número de entradas associado a imagens de referência de curto prazo em uma estrutura de lista de imagens de referência ref_pic_list_struct( ) é definido como num_strp_entries_minus1[ listIdx ][ rplsIdx ], em vez de num_strp_entries[ listIdx ][ rplsIdx ]. A mudança tem dois efeitos para a sinalização de lista de imagens de referência: A mesma pode economizar bits para sinalizar o número de entradas associado à imagem de referência de curto prazo na estrutura de lista de imagens de referência visto que o elemento é codificado com o uso de ue(v). A mesma impõe implicitamente uma restrição de modo que cada lista de imagens de referência deva conter pelo menos uma imagem de referência de curto prazo. Para satisfazer essa ideia, algumas mudanças em relação à primeira modalidade são necessárias.
[0209] Para sinalização de lista de imagens de referência em cabeçalhos de fatia, apenas a lista de imagens de referência necessária é sinalizada de acordo com o tipo de fatia, isto é, uma lista de imagens de referência (isto é, lista de imagens de referência 0) para fatias I ou P e duas listas de imagens de referência (isto é, tanto a lista de imagens de referência 0 quanto a lista de imagens de referência 1) para fatias B. A sintaxe de cabeçalho de fatia é alterada da seguinte forma:
slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) { ref_pic_list_sps_flag[ i ] u(1) if( ref_pic_list_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1) ref_pic_list_idx[ i ] u(v) } else ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ], long_term_ref_pics_flag ) } if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
[0210] Aplicando-se a mudança acima em cabeçalho de fatia (isto é, lista de imagens de referência 0 para fatias I ou P; imagem de referência 0 e imagem de referência 1 para fatias B), a mesma evitará o esquema do problema em que para uma fatia P há apenas uma imagem de referência de curto prazo. Entretanto, uma imagem de referência de curto prazo duplicada não pode ser sinalizada na lista de imagens de referência 0 e na lista de imagens de referência 1, em que a entrada na lista de imagens de referência 1 é uma entrada inativa visto que o número de entradas ativas na lista de imagens de referência 1 tem que ser igual a 0. A semântica de num_strp_entries_minus1[ listIdx ][ rplsIdx ] é alterada da seguinte forma: num_strp_entries_minus1[ listIdx ][ rplsIdx ] mais 1 especifica o número de entradas de STRP na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). A variável NumEntriesInList[ listIdx ][ rplsIdx ] é derivada da seguinte forma: NumRefPicEntriesInRpl[ listIdx ][ rplsIdx ] = num_strp_entries_minus1[ listIdx ][ rplsIdx ] + 1 + num_ltrp_entries[ listIdx ][ rplsIdx ]. O valor de NumRefPicEntries[ listIdx ][ rplsIdx ] deve estar na faixa de 1 a sps_max_dec_pic_buffering_minus1, inclusive.
[0211] Permitir inclusão da imagem atual em listas de imagens de referência.
[0212] Em uma modalidade alternativa da revelação, permite-se que a imagem atual seja incluída em suas listas de imagens de referência. Para sustentar esse recurso, não há mudança de sintaxe e semântica necessária em relação àquelas descrições na primeira e na segunda modalidades. Entretanto, as restrições de conformidade de fluxo de bits que são descritas no processo de decodificação para construção de lista de imagens de referência precisarão ser modificadas da seguinte forma: É uma exigência de conformidade de fluxo de bits que as seguintes restrições se apliquem: Para cada i igual a 0 ou 1, NumEntriesInList[ i ][ RplsIdx[ i ] ] não deve ser menor do que NumRefIdxActive[ i ]. A imagem referida por cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] deve estar presente no DPB e deve ter TemporalId menor do que ou igual àquele da imagem atual. De modo opcional, a seguinte restrição pode ser especificada de modo adicional: O índice de entrada de qualquer entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve ser usado como um índice de referência para decodificação da imagem atual. De modo opcional, a seguinte restrição pode ser especificada de modo adicional: Uma entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve se referir à mesma imagem de qualquer outra entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Uma entrada de STRP em RefPicList[ 0 ] ou RefPicList[ 1 ] de uma fatia de uma imagem e uma entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] da mesma fatia ou uma fatia diferente da mesma imagem não devem se referir à mesma imagem. A imagem atual em si não deve ser referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Quando a imagem atual é referida por uma entrada em RefPicList[ i ], para i igual a 0 ou 1, o índice de entrada deve ser menor do que NumRefIdxActive[ i ]. Não deve haver entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] para a qual a diferença entre o PicOrderCntVal da imagem atual e o PicOrderCntVal da imagem referida pela entrada é maior do que ou igual a 224. Supõe-se que setOfRefPics seja o conjunto de imagens únicas referidas por todas as entradas em RefPicList[ 0 ] e todas as entradas em RefPicList[ 1 ]. Se a imagem atual não for incluída no setOfRefPics, o número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1, de outro modo, o número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1 + 1. O setOfRefPics deve ser igual para todas as fatias de uma imagem.
[0213] Usando diferentes POC LSB bits para entradas de LTRP em listas de imagens de referência.
[0214] Em uma modalidade alternativa da revelação, permite-se que o número de bits usado para identificar imagens de referência de longo prazo em uma estrutura de lista de imagens de referência seja diferente entre a lista de imagens de referência 0 e a lista de imagens de referência 1. Para sustentar esse recurso, as seguintes mudanças são necessárias: seq_parameter_set_rbsp( ) { Descriptor sps_seq_parameter_set_id ue(v) chroma_format_idc ue(v) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) sps_max_dec_pic_buffering_minus1 ue(v) qtbtt_dual_tree_intra_flag ue(v) log2_ctu_size_minus2 ue(v)
log2_min_qt_size_intra_slices_minus2 ue(v) log2_min_qt_size_inter_slices_minus2 ue(v) max_mtt_hierarchy_depth_inter_slices ue(v) max_mtt_hierarchy_depth_intra_slices ue(v) long_term_ref_pics_flag u(1) if( long_term_ref_pics_flag ) additional_lt_poc_lsb ue(v) for( i = 0; i < 2; i++) { if( long_term_ref_pics_flag ) additional_lt_poc_lsb[ i ] ue(v) num_ref_pic_lists_in_sps[ i ] ue(v) for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j, long_term_ref_pics_flag ) } rbsp_trailing_bits( ) }
[0215] Um additional_lt_poc_lsb[ i ] especifica o valor da variável MaxLtPicOrderCntLsb[ i ] que é usada no processo de decodificação para lista de imagens de referência listIdx igual a i da seguinte forma: MaxLtPicOrderCntLsb[ i ] = 2( log2_max_pic_order_cnt_lsb_ minus4 + 4 + additional_lt_poc_lsb[ i ] ). O valor de additional_lt_poc_lsb[ i ] deve estar na faixa de 0 a 32 − log2_max_pic_order_cnt_lsb_minus4 − 4, inclusive. Quando não presente, deduz-se que o valor de additional_lt_poc_lsb[ i ] seja igual a 0.
[0216] Um poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] especifica o valor da contagem de ordem de imagem módulo MaxLtPicOrderCntLsb[ listIdx ] da imagem referida pela i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). O comprimento do elemento de sintaxe poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] é Log2( MaxLtPicOrderCntLsb[ listIdx ] ) bits.
[0217] As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) {
if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( há uma picA de referência no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb[ i ] − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0218] Usar o mesmo ref_pic_list_sps_flag para listas de imagens de referência 0 e 1.
[0219] Em uma modalidade alternativa da revelação, em vez de usar duas flags para indicar se a lista de imagens de referência 0 e a lista de imagens de referência 1 são derivadas com base em estruturas de sintaxe ref_pic_list_struct( ) no SPS ativo, uma flag é usada para as duas listas de imagens de referência. Tal alternativa restringe que as listas de imagens de referência são derivadas com base em ref_pic_list_struct( ) no SPS ativo ou as mesmas são derivadas com base em estruturas de sintaxe ref_pic_list_struct( ) que são incluídas diretamente nos cabeçalhos de fatia da imagem atual. Para sustentar esse recurso, as seguintes mudanças são necessárias: slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) ref_pic_list_sps_flag u(1) for( i = 0; i < 2; i++ ) { ref_pic_list_sps_flag[ i ] u(1) if( ref_pic_list_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1) ref_pic_list_idx[ i ] u(v) } else ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ], long_term_ref_pics_flag ) } if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
[0220] Um ref_pic_list_sps_flag[ i ] igual a 1 especifica que listas de imagens de referência i da imagem atual são derivadas com base nas estruturas de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) com listIdx igual a i no SPS ativo. ref_pic_list_sps_flag[ i ] igual a 0 especifica que listas de imagens de referência i da imagem atual são derivadas com base nas estruturas de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) que são incluídas diretamente nos cabeçalhos de fatia da imagem atual. Quando num_ref_pic_lists_in_sps[ 0 ] ou num_ref_pic_lists_in_sps[ 1 ] é igual a 0, o valor de ref_pic_list_sps_flag[ i ] deve ser igual a 0. pic_lists_in_sps[ 1 ] é igual a 0, o valor de ref_pic_list_sps_flag deve ser igual a 0.
[0221] As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( há uma picA de referência no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0222] Sinalização de Bit Mais Significativo (MSB) de POC de delta para entradas de imagem de referência de longo prazo.
[0223] Em uma modalidade alternativa da revelação, em vez de usar bits adicionais para representar POC LSB de entradas de imagem de referência de longo prazo em ref_pic_list_struct( ), ciclo de POC MSB é sinalizado para diferenciar imagens de referência de longo prazo.
Quando sinalizadas, informações de ciclo de POC MSB são sinalizadas para cada entrada em ref_pic_list_struct( ) que se refere a uma imagem de referência de longo prazo.
A estrutura de sintaxe ref_pic_list_struct( ) não é sinalizada em SPS, mas apenas em cabeçalhos de fatia.
Para sustentar esse recurso, as seguintes mudanças são necessárias: seq_parameter_set_rbsp( ) { Descriptor sps_seq_parameter_set_id ue(v) chroma_format_idc ue(v) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) sps_max_dec_pic_buffering_minus1 ue(v) qtbtt_dual_tree_intra_flag ue(v) log2_ctu_size_minus2 ue(v) log2_min_qt_size_intra_slices_minus2 ue(v) log2_min_qt_size_inter_slices_minus2 ue(v) max_mtt_hierarchy_depth_inter_slices ue(v) max_mtt_hierarchy_depth_intra_slices ue(v) long_term_ref_pics_flag u(1) if( long_term_ref_pics_flag ) additional_lt_poc_lsb ue(v) for( i = 0; i < 2; i++) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j, long_term_ref_pics_flag )
} rbsp_trailing_bits( ) }
slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) for( i = 0; i < 2; i++ ) { ref_pic_list_sps_flag[ i ] u(1) if( ref_pic_list_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1) ref_pic_list_idx[ i ] u(v) } else ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ], long_term_ref_pics_flag ) } if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) { Descriptor num_strp_entries[ listIdx ][ rplsIdx ] ue(v)
if( ltrpFlag ) num_ltrp_entries[ listIdx ][ rplsIdx ] ue(v) for( i = 0; i < NumEntriesInList[ listIdx ][ rplsIdx ]; i++) { if( num_ltrp_entries[ listIdx ][ rplsIdx ] > 0 ) lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] if( !lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] ) delta_poc_st[ listIdx ][ rplsIdx ][ i ] se(v) else { poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] u(v) delta_poc_msb_present_flag[ listIdx ][ i ] u(1) if( delta_poc_msb_present_flag[ listIdx ][ i ] ) delta_poc_msb_cycle_lt[ listIdx ][ i ] ue(v) } } }
[0224] A estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ) pode estar presente em um cabeçalho de fatia. quando a mesma está presente em um cabeçalho de fatia, a estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ) especifica lista de imagens de referência listIdx da imagem atual (a imagem contendo a fatia). num_strp_entries[ listIdx ][ rplsIdx ] especifica o número de entradas de STRP na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). num_ltrp_entries[ listIdx ][ rplsIdx ] especifica o número de entradas de LTRP na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). Quando não presente, deduz-se que o valor de num_ltrp_entries[ listIdx ][ rplsIdx ] seja igual a 0.
[0225] A variável NumEntriesInList[ listIdx ] [ rplsIdx ] é derivada da seguinte forma: NumRefPicEntriesInRpl[ listIdx ] [ rplsIdx ] = num_strp_entries[ listIdx ] [ rplsIdx ] + num_ltrp_entries[ listIdx ] [ rplsIdx ]
[0226] O valor de NumRefPicEntries[ listIdx ] [ rplsIdx ] deve estar na faixa de 0 a sps_max_dec_pic_buffering_minus1, inclusive. lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] igual a 1 especifica que a i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) é uma entrada de LTRP. lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] igual a 0 especifica que a i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ) é uma entrada de STRP.
Quando não presente, deduz-se que o valor de lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] seja igual a 0. É uma exigência de conformidade de fluxo de bits que a soma de lt_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] para todos os valores de i na faixa de 0 a NumRefPicEntries[ listIdx ][ rplsIdx ] − 1, inclusive, deve ser igual a num_ltrp_entries[ listIdx ][ rplsIdx ]. delta_poc_st[ listIdx ][ rplsIdx ][ i ], quando a i-ésima entrada é a primeira entrada de STRP em estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ), especifica a diferença entre os valores de contagem de ordem de imagem da imagem atual e a imagem referida pela i-ésima entrada, ou, quando a i-ésima entrada é uma entrada de STRP mas não a primeira entrada de STRP na estrutura de sintaxeref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ), especifica a diferença entre os valores de contagem de ordem de imagem das imagens referidas pela i-ésima entrada e pela entrada de STRP anterior na estrutura de sintaxeref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). O valor de delta_poc_st[ listIdx ][ rplsIdx ][ i ] deve estar na faixa de −215 a 215 − 1, inclusive. poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] especifica o valor da contagem de ordem de imagem módulo MaxLtPicOrderCntLsb da imagem referida pela i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). O comprimento do elemento de sintaxe poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] é Log2( MaxLtPicOrderCntLsb ) bits. delta_poc_msb_present_flag[ listIdx ][ i ] igual a 1 especifica que delta_poc_msb_cycle_lt[ listIdx ][ i ] está presente. delta_poc_msb_present_flag[ listIdx ][ i ] igual a 0 especifica que delta_poc_msb_cycle_lt[ listIdx ][ i ] não está presente.
Quando num_ltrp_entries[ listIdx ] é maior do que 0 e há mais de uma imagem de referência no DPB no momento em que esse cabeçalho de fatia é decodificado para o qual PicOrderCntVal módulo MaxPicOrderCntLsb é igual a poc_lsb_lt[ listIdx ][ i ], delta_poc_msb_present_flag[ listIdx ][ i ] deve ser igual a 1. Quando não presente, deduz-se que o valor de delta_poc_msb_cycle_lt[ listIdx ][ i ] seja igual a 0. delta_poc_msb_cycle_lt[ listIdx ][ i ] é usado para determinar o valor dos bits mais significativos do valor de contagem de ordem de imagem da i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ). Quando delta_poc_msb_cycle_lt[ listIdx ][ i ] não está presente, deduz-se que seja igual a
0. Mudanças para o processo de decodificação para contagem de ordem de imagem: A qualquer momento durante o processo de decodificação, os valores de PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) para quaisquer duas imagens de referência no DPB não devem ser iguais.
[0227] As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( delta_poc_msb_cycle_lt[ i ][ j ] é igual a 0 && há uma imagem de referência picA no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ j ] ) RefPicList[ i ][ j ] = picA else if( delta_poc_msb_cycle_lt[ i ][ j ] é igual a 1 && há uma imagem de referência picA no DPB com PicOrderCntVal igual a ( MaxPicOrderCntLsb * delta_poc_msb_cycle_lt[ i ][ j ] ) + poc_lsb_lt[ i ][ j ] ) )
RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0228] Alternativamente, a semântica de delta_poc_msb_cycle_lt[ listIdx ][ i ] pode ser expressa como delta de delta de modo que a construção de lista de imagens de referência possa ser atualizada da seguinte maneira: as listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] prevMsbCycle = 0 for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) {(8-5) if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( delta_poc_msb_cycle_lt[ i ][ j ] é igual a 0 && há uma imagem de referência picA no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ j ] ) RefPicList[ i ][ j ] = picA else if( delta_poc_msb_cycle_lt[ i ][ j ] é igual a 1 &&
há uma picA de referência no DPB com PicOrderCntVal igual a ( MaxPicOrderCntLsb * ( delta_poc_msb_cycle_lt[ i ][ j ] + prevMsbCycle ) ) + poc_lsb_lt[ i ][ j ] ) ) { RefPicList[ i ][ j ] = picA prevMsbCycle += delta_poc_msb_cycle_lt[ i ][ j ] } else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0229] É uma exigência de conformidade de fluxo de bits que as seguintes restrições se apliquem: para cada i igual a 0 ou 1, NumEntriesInList[ i ][ RplsIdx[ i ] ] não deve ser menor do que NumRefIdxActive[ i ]. A imagem referida por cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] deve estar presente no DPB e deve ter TemporalId menor do que ou igual àquele da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: o índice de entrada de qualquer entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve ser usado como um índice de referência para decodificação da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: Uma entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve se referir à mesma imagem de qualquer outra entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Uma entrada de STRP em RefPicList[ 0 ] ou RefPicList[ 1 ] de uma fatia de uma imagem e uma entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] da mesma fatia ou de uma fatia diferente da mesma imagem não devem se referir à mesma imagem. A imagem atual em si não deve ser referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Não deve haver entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] para a qual a diferença entre o PicOrderCntVal da imagem atual e o PicOrderCntVal da imagem referida pela entrada é maior do que ou igual a 224. Supõe-se que setOfRefPics seja o conjunto de imagens únicas referidas por todas as entradas em RefPicList[ 0 ] e todas as entradas em RefPicList[ 1 ]. O número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1 e setOfRefPics deve ser igual para todas as fatias de uma imagem.
[0230] Cada STRP é identificada por seu valor PicOrderCntVal. Para cada LTRP, se for referida por uma entrada em RefPicList[ 0 ] ou RefPicList[ 1 ] com delta_poc_msb_present_flag[ listIdx ][ i ] igual a 1, a mesma é identificada por seu valor PicOrderCntVal, de outro modo, é identificada por Log2( MaxPicOrderCntLsb ) LSBs de seu valor PicOrderCntVal.
[0231] Alternativa 1 de sinalização de POC MSB de delta para entradas de imagem de referência de longo prazo.
[0232] Esta modalidade fornece uma alternativa à modalidade descrita na seção anterior. De modo similar à ideia na seção anterior, em vez de usar bits adicionais para representar POC LSB de imagem de referência de longo prazo em ref_pic_list_struct( ), ciclo de POC MSB é sinalizado para diferenciar imagens de referência de longo prazo. Entretanto, nesta alternativa, quando sinalizadas, informações de ciclo de POC MSB não são sinalizadas dentro de ref_pic_list_struct( ), em vez disso, quando informações de ciclo de POC MSB são necessárias, as mesmas são sinalizadas em cabeçalho de fatia. A estrutura de sintaxe ref_pic_list_struct( ) pode ser sinalizada no SPS e em cabeçalhos de fatia. seq_parameter_set_rbsp( ) { Descriptor sps_seq_parameter_set_id ue(v) chroma_format_idc ue(v) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) sps_max_dec_pic_buffering_minus1 ue(v) qtbtt_dual_tree_intra_flag ue(v) log2_ctu_size_minus2 ue(v) log2_min_qt_size_intra_slices_minus2 ue(v) log2_min_qt_size_inter_slices_minus2 ue(v)
max_mtt_hierarchy_depth_inter_slices ue(v) max_mtt_hierarchy_depth_intra_slices ue(v) long_term_ref_pics_flag u(1) if( long_term_ref_pics_flag ) additional_lt_poc_lsb ue(v) for( i = 0; i < 2; i++) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j, long_term_ref_pics_flag ) } rbsp_trailing_bits( ) }
slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) for( i = 0; i < 2; i++ ) { ref_pic_list_sps_flag[ i ] u(1) if( ref_pic_list_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1) ref_pic_list_idx[ i ] u(v) } else ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ], long_term_ref_pics_flag ) if( long_term_ref_pics_flag ) { NumLtrpEntries[ i ] = ref_pic_list_sps_flag[ i ] ? num_ltrp_entries[ i ][ ref_pic_list_idx[ i ] ] : num_ltrp_entries[ i ][ num_ref_pic_lists_in_sps[ i ] ]
for( j = 0; j < NumLtrpEntries[ i ]; j++ ) { delta_poc_msb_present_flag[ i ][ j ] u(1) if( delta_poc_msb_present_flag[ i ][ j ] ) delta_poc_msb_cycle_lt[ i ][ j ] ue(v) } } } if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
[0233] Um delta_poc_msb_present_flag[ i ][ j ] igual a 1 especifica que delta_poc_msb_cycle_lt[ i ][ j ] está presente. delta_poc_msb_present_flag[ i ][ j ] igual a 0 especifica que delta_poc_msb_cycle_lt[ i ][ j ] não está presente. Quando NumLtrpEntries[ i ] é maior do que 0 e para a j-ésima entrada de LTRP na estrutura de sintaxe ref_pic_list_struct( i, rplsIdx, 1 ), há mais de uma imagem de referência no DPB no momento em que esse cabeçalho de fatia é decodificado para o qual PicOrderCntVal módulo MaxPicOrderCntLsb é igual a poc_lsb_lt[ i ][ rplsIdx ][ jj ], em que jj é o índice de entrada da entrada na estrutura de sintaxe ref_pic_list_struct( i, rplsIdx, 1 ) que é a j-ésima entrada de LTRP na estrutura de sintaxe ref_pic_list_struct( i, rplsIdx, 1 ), delta_poc_msb_present_flag[ i ][ j ] deve ser igual a 1. Quando não presente, deduz-se que o valor de delta_poc_msb_cycle_lt[ i ][ j ] seja igual a 0. delta_poc_msb_cycle_lt[ i ][ j ] é usado para determinar o valor dos bits mais significativos do valor de contagem de ordem de imagem da j-ésima entrada de LTRP na estrutura de sintaxe ref_pic_list_struct( i, rplsIdx, 1 ). Quando delta_poc_msb_cycle_lt[ i ][ j ] não está presente, deduz-se que seja igual a 0. slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) for( i = 0; i < 2; i++ ) { ref_pic_list_sps_flag[ i ] u(1) if( ref_pic_list_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1) ref_pic_list_idx[ i ] u(v) } else ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ], long_term_ref_pics_flag ) if( long_term_ref_pics_flag ) { rplsIdx = ref_pic_list_sps_flag[ i ] ? ref_pic_list_idx[ i ] : num_ref_pic_lists_in_sps[ i ] numRpEntries[ i ] = num_strp_entries[ i ][ rplsIdx ] + num_ltrp_entries[ i ][ rplsIdx ] NumLtrpEntries[ i ] = num_ltrp_entries[ i ][ rplsIdx ] for( j = 0; j < numRpEntries[ i ]; j++ ) { if( lt_ref_pic_flag[ i ][ rplsIdx ][ j ] ) delta_poc_msb_present_flag[ i ][ j ] u(1) if( delta_poc_msb_present_flag[ i ][ j ] ) delta_poc_msb_cycle_lt[ i ][ j ] ue(v) } } } if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ )
num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
[0234] Um delta_poc_msb_present_flag[ i ][ j ] igual a 1 especifica que delta_poc_msb_cycle_lt[ i ][ j ] está presente. delta_poc_msb_present_flag[ i ][ j ] igual a 0 especifica que delta_poc_msb_cycle_lt[ i ][ j ] não está presente. Quando NumLtrpEntries[ i ] é maior do que 0 e há mais de uma imagem de referência no DPB no momento em que esse cabeçalho de fatia é decodificado para o qual PicOrderCntVal módulo MaxPicOrderCntLsb é igual a poc_lsb_lt[ i ][ rplsIdx ][ j ], delta_poc_msb_present_flag[ i ][ j ] deve ser igual a 1. Quando não presente, deduz-se que o valor de delta_poc_msb_cycle_lt[ i ][ j ] seja igual a 0. delta_poc_msb_cycle_lt[ i ][ j ] é usado para determinar o valor dos bits mais significativos do valor de contagem de ordem de imagem da j-ésima entrada na estrutura de sintaxe ref_pic_list_struct( i, rplsIdx, 1 ). Quando delta_poc_msb_cycle_lt[ i ][ j ] não está presente, deduz-se que seja igual a 0. poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] especifica o valor da contagem de ordem de imagem módulo MaxLtPicOrderCntLsb MaxPicOrderCntLsb da imagem referida pela i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, rplsIdx, ltrpFlag ). O comprimento do elemento de sintaxe poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] é Log2( MaxLtPicOrderCntLsb MaxPicOrderCntLsb ) bits.
[0235] Mudanças para o processo de decodificação para contagem de ordem de imagem: A qualquer momento durante o processo de decodificação, os valores de PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) para quaisquer duas imagens de referência no DPB não devem ser iguais.
[0236] Para projeto de cabeçalho de fatia 1, as listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ]
msbCycleIdx = 0 for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] é igual a 0 && há uma imagem de referência picA no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else if( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] é igual a 1 && há uma imagem de referência picA no DPB com PicOrderCntVal igual a ( MaxPicOrderCntLsb * delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] ) + poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) ) { RefPicList[ i ][ j ] = picA msbCycleIdx++ } else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0237] Alternativamente, para projeto de cabeçalho de fatia 1, a semântica de delta_poc_msb_cycle_lt[ listIdx ][ i ] pode ser expressa como delta de delta de modo que a construção de lista de imagens de referência possa ser atualizada da seguinte forma: As listas de imagens de referência RefPicList[ 0 ] e
RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] pevMsbCycle = 0 msbCycleIdx = 0 for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] é igual a 0 && há uma imagem de referência picA no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else if( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] é igual a 1 && há uma imagem de referência picA no DPB com PicOrderCntVal igual a ( MaxPicOrderCntLsb * ( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] + prevMsbCycle ) + poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) ) { RefPicList[ i ][ j ] = picA prevMsbCycle += delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] msbCycleIdx++
} else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0238] Para projeto de cabeçalho de fatia 2, as listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( delta_poc_msb_cycle_lt[ i ][ j ] é igual a 0 && há uma imagem de referência picA no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else if( delta_poc_msb_cycle_lt[ i ][ j ] é igual a 1 && há uma imagem de referência picA no DPB com PicOrderCntVal igual a ( MaxPicOrderCntLsb *
delta_poc_msb_cycle_lt[ i ][ j ] ) + poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0239] Alternativamente, para projeto de cabeçalho de fatia 2, a semântica de delta_poc_msb_cycle_lt[ listIdx ][ i ] pode ser expressa como delta de delta de modo que a construção de lista de imagens de referência possa ser atualizada da seguinte forma: As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] prevMsbCycle = 0 for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( delta_poc_msb_cycle_lt[ i ][ j ] é igual a 0 && há uma imagem de referência picA no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] )
RefPicList[ i ][ j ] = picA else if( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] é igual a 1 && há uma imagem de referência picA no DPB com PicOrderCntVal igual a ( MaxPicOrderCntLsb * ( delta_poc_msb_cycle_lt[ i ][ j ] + prevMsbCycle ) + poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) ) { RefPicList[ i ][ j ] = picA prevMsbCycle += delta_poc_msb_cycle_lt[ i ][ j ] } else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0240] É uma exigência de conformidade de fluxo de bits que as seguintes restrições se apliquem: Para cada i igual a 0 ou 1, NumEntriesInList[ i ][ RplsIdx[ i ] ] não deve ser menor do que NumRefIdxActive[ i ]. A imagem referida por cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] deve estar presente no DPB e deve ter TemporalId menor do que ou igual àquele da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: O índice de entrada de qualquer entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve ser usado como um índice de referência para decodificação da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: Uma entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve se referir à mesma imagem de qualquer outra entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Uma entrada de STRP em RefPicList[ 0 ] ou RefPicList[ 1 ] de uma fatia de uma imagem e uma entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] da mesma fatia ou de uma fatia diferente da mesma imagem não devem se referir à mesma imagem. A imagem atual em si não deve ser referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Não deve haver entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] para a qual a diferença entre o PicOrderCntVal da imagem atual e o PicOrderCntVal da imagem referida pela entrada é maior do que ou igual a 224. Supõe-se que setOfRefPics seja o conjunto de imagens únicas referidas por todas as entradas em RefPicList[ 0 ] e todas as entradas em RefPicList[ 1 ]. O número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1 e setOfRefPics deve ser igual para todas as fatias de uma imagem.
[0241] Cada STRP é identificada por seu valor PicOrderCntVal. Para cada LTRP, se for referida por uma entrada em RefPicList[ 0 ] ou RefPicList[ 1 ] com delta_poc_msb_present_flag[ i ][ j ] igual a 1, a mesma é identificada por seu valor PicOrderCntVal, de outro modo, é identificada por seus Log2( MaxPicOrderCntLsb ) LSBs de seu valor PicOrderCntVal.
[0242] Alternativa 2 de sinalização de POC MSB de delta para entradas de imagem de referência de longo prazo.
[0243] Em uma modalidade alternativa da revelação, a revelação descrita na primeira modalidade ou na segunda modalidade pode ser combinada com as modalidades descritas acima e denominada “Sinalização de POC MSB de delta para entradas de imagem de referência de longo prazo” e “Alternativa 1 de sinalização de POC MSB de delta para entradas de imagem de referência de longo prazo”, respectivamente. Os aspectos das revelações a serem combinadas são sinalização de additional_lt_poc_lsb (isto é, da primeira modalidade ou da segunda modalidade) e informações de ciclo de POC MSB (isto é, da modalidade descrita acima e denominada “Sinalização de POC MSB de delta para entradas de imagem de referência de longo prazo” ou “Alternativa 1 de sinalização de POC MSB de delta para entradas de imagem de referência de longo prazo”). Um exemplo de como a combinação, que combina a primeira modalidade e a modalidade descrita acima e denominada “Alternativa 1 de sinalização de POC MSB de delta para entradas de imagem de referência de longo prazo”, pode ser feita é descrito da seguinte forma: slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v)
for( i = 0; i < 2; i++ ) { ref_pic_list_sps_flag[ i ] u(1) if( ref_pic_list_sps_flag[ i ] ) { if( num_ref_pic_lists_in_sps[ i ] > 1) ref_pic_list_idx[ i ] u(v) } else ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ], long_term_ref_pics_flag ) if( long_term_ref_pics_flag ) { NumLtrpEntries[ i ] = ref_pic_list_sps_flag[ i ] ? num_ltrp_entries[ i ][ ref_pic_list_idx[ i ] ] : num_ltrp_entries[ i ][ num_ref_pic_lists_in_sps[ i ] ] for( j = 0; j < NnumLtrpEntries[ i ]; j++ ) { delta_poc_msb_present_flag[ i ][ j ] u(1) if( delta_poc_msb_present_flag[ i ][ j ] ) delta_poc_msb_cycle_lt[ i ][ j ] ue(v) } } } if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
[0244] Um delta_poc_msb_present_flag[ i ][ j ] igual a 1 especifica que delta_poc_msb_cycle_lt[ i ][ j ] está presente. delta_poc_msb_present_flag[ i ][ i ] igual a 0 especifica que delta_poc_msb_cycle_lt[ i ][ j ] não está presente. Quando
NumLtrpEntries[ i ] é maior do que 0 e para a j-ésima entrada de LTRP na estrutura de sintaxe ref_pic_list_struct( i, rplsIdx, 1 ), há mais de uma imagem de referência no DPB no momento em que esse cabeçalho de fatia é decodificado para o qual PicOrderCntVal módulo MaxPicOrderLtCntLsb é igual a poc_lsb_lt[ i ][ rplsIdx ][ jj ], em que jj é o índice de entrada da entrada na estrutura de sintaxe ref_pic_list_struct( i, rplsIdx, 1 ) que é a j-ésima entrada de LTRP na estrutura de sintaxe ref_pic_list_struct( i, rplsIdx, 1 ), delta_poc_msb_present_flag[ i ][ j ] deve ser igual a 1. Quando não presente, deduz-se que o valor de delta_poc_msb_cycle_lt[ i ][ j ] seja igual a 0. delta_poc_msb_cycle_lt[ i ][ j ] é usado para determinar o valor dos bits mais significativos do valor de contagem de ordem de imagem da j-ésima entrada de LTRP na estrutura de sintaxe ref_pic_list_struct( i, rplsIdx, 1 ). Quando delta_poc_msb_cycle_lt[ i ][ j ] não está presente, deduz-se que seja igual a 0.
[0245] Mudanças para o processo de decodificação para contagem de ordem de imagem: A qualquer momento durante o processo de decodificação, os valores de PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) para quaisquer duas imagens de referência no DPB não devem ser iguais.
[0246] As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] msbCycleIdx = 0 for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ]; j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência”
pocBase = RefPicPocList[ i ][ j ] } else { if( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] é igual a 0 && há uma imagem de referência picA no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else if( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] é igual a 1 && há uma imagem de referência picA no DPB com PicOrderCntVal igual a ( MaxLtPicOrderCntLsb * delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] ) + poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) ) { RefPicList[ i ][ j ] = picA msbCycleIdx++ } else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0247] Alternativamente, a semântica de delta_poc_msb_cycle_lt[ listIdx ][ i ] pode ser expressa como delta de delta de modo que a construção de lista de imagens de referência possa ser atualizada da seguinte maneira: As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { if( ref_pic_list_sps_flag[ i ] ) RplsIdx[ i ] = ref_pic_list_idx[ i ] else RplsIdx[ i ] = num_ref_pic_lists_in_sps[ i ] prevMsbCycle = 0 msbCycleIdx = 0 for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ][ RplsIdx[ i ] ];
j++) { if( !lt_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − delta_poc_st[ i ][ RplsIdx[ i ] ][ j ] if( há uma imagem de referência picA no DPB com PicOrderCntVal igual a RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” pocBase = RefPicPocList[ i ][ j ] } else { if( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] é igual a 0 && há uma imagem de referência picA no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) RefPicList[ i ][ j ] = picA else if( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] é igual a 1 && há uma imagem de referência picA no DPB com PicOrderCntVal igual a ( MaxLtPicOrderCntLsb * ( delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] + prevMsbCycle ) + poc_lsb_lt[ i ][ RplsIdx[ i ] ][ j ] ) ) { RefPicList[ i ][ j ] = picA prevMsbCycle += delta_poc_msb_cycle_lt[ i ][ msbCycleIdx ] msbCycleIdx++ } else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0248] É uma exigência de conformidade de fluxo de bits que as seguintes restrições se apliquem: Para cada i igual a 0 ou 1, NumEntriesInList[ i ][ RplsIdx[ i ] ] não deve ser menor do que NumRefIdxActive[ i ]. A imagem referida por cada entrada ativa em RefPicList[ 0 ]
ou RefPicList[ 1 ] deve estar presente no DPB e deve ter TemporalId menor do que ou igual àquele da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: O índice de entrada de qualquer entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve ser usado como um índice de referência para decodificação da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: Uma entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve se referir à mesma imagem de qualquer outra entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Uma entrada de STRP em RefPicList[ 0 ] ou RefPicList[ 1 ] de uma fatia de uma imagem e uma entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] da mesma fatia ou de uma fatia diferente da mesma imagem não devem se referir à mesma imagem. A imagem atual em si não deve ser referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Não deve haver entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] para a qual a diferença entre o PicOrderCntVal da imagem atual e o PicOrderCntVal da imagem referida pela entrada é maior do que ou igual a 224. Supõe-se que setOfRefPics seja o conjunto de imagens únicas referidas por todas as entradas em RefPicList[ 0 ] e todas as entradas em RefPicList[ 1 ]. O número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1 e setOfRefPics deve ser igual para todas as fatias de uma imagem.
[0249] Cada STRP é identificada por seu valor PicOrderCntVal. Para cada LTRP, se for referida por uma entrada em RefPicList[ 0 ] ou RefPicList[ 1 ] com delta_poc_msb_present_flag[ i ][ j ] igual a 1, a mesma é identificada por seu valor PicOrderCntVal, de outro modo, é identificada por seus Log2( MaxLtPicOrderCntLsb ) LSBs de seu valor PicOrderCntVal.
[0250] Sempre sinalizar listas de imagens de referência em cabeçalhos de fatia com diferenciação entre imagens de referência de curto prazo e de longo prazo.
[0251] Esta seção descreve outra modalidade alternativa da revelação. A descrição é em relação ao VVC WD mais recente (isto é, apenas o delta em relação ao VVC WD mais recente em JVET-K1001-v1 é descrito, enquanto os textos no VVC WD mais recente que não são mencionados abaixo se aplicam como são). Essa modalidade alternativa é resumida da seguinte forma: Estruturas de lista de imagens de referência são sinalizadas apenas em cabeçalhos de fatia.
Tanto imagens de referência de curto prazo quanto imagens de referência de longo prazo são identificadas por seus POC LSBs, que podem ser representados por números de bits que são diferentes do número de bits usado para representar os POC LSBs sinalizados em cabeçalhos de fatia para derivação de valores de POC. Além disso, os números de bits usados para representar os POC LSBs para identificar imagens de referência de curto prazo e imagens de referência de longo prazo podem ser diferentes.
[0252] Sintaxe de cabeçalho de unidade NAL. nal_unit_header( ) { Descriptor forbidden_zero_bit f(1) nal_unit_type u(5) nuh_temporal_id_plus1 u(3) nuh_reserved_zero_7bits u(7) }
[0253] Sintaxe de RBSP de conjunto de parâmetros de sequência. seq_parameter_set_rbsp( ) { Descriptor sps_seq_parameter_set_id ue(v) chroma_format_idc ue(v) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) sps_max_dec_pic_buffering_minus1 ue(v) qtbtt_dual_tree_intra_flag ue(v) log2_ctu_size_minus2 ue(v) log2_min_qt_size_intra_slices_minus2 ue(v) log2_min_qt_size_inter_slices_minus2 ue(v) max_mtt_hierarchy_depth_inter_slices ue(v) max_mtt_hierarchy_depth_intra_slices ue(v) additional_st_poc_lsb ue(v)
long_term_ref_pics_flag u(1) if( long_term_ref_pics_flag ) additional_lt_poc_lsb ue(v) rbsp_trailing_bits( ) }
[0254] Sintaxe de RBSP de conjunto de parâmetros de imagem. pic_parameter_set_rbsp( ) { Descriptor pps_pic_parameter_set_id ue(v) pps_seq_parameter_set_id ue(v) for( i = 0; i < 2; i++) num_ref_idx_default_active_minus1[ i ] ue(v) rbsp_trailing_bits( ) }
[0255] Sintaxe de cabeçalho de fatia. slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) for( i = 0; i < 2; i++ ) ref_pic_list_struct( i, long_term_ref_pics_flag ) if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
[0256] Sintaxe de estrutura de lista de imagens de referência. ref_pic_list_struct( listIdx, ltrpFlag ) { Descriptor num_strp_entries[ listIdx ] ue(v) if( ltrpFlag ) num_ltrp_entries[ listIdx ] ue(v) for( i = 0; i < NumEntriesInList[ listIdx ]; i++) { if( num_ltrp_entries[ listIdx ] > 0 ) lt_ref_pic_flag[ listIdx ][ i ] if( !lt_ref_pic_flag[ listIdx ][ i ] ) poc_lsb_st[ listIdx ][ i ] u(v) else poc_lsb_lt[ listIdx ][ i ] u(v) } }
[0257] Semântica de cabeçalho de unidade NAL.
[0258] Um forbidden_zero_bit deve ser igual a 0. nal_unit_type especifica o tipo de estrutura de dados de RBSP contida na unidade NAL. Tabela 7-1 – códigos de tipo de unidade NAL e classes de tipo de unidade
NAL nal_unit_t Nome de Conteúdo de unidade NAL e estrutura de Unidade ype nal_unit_type sintaxe de RBSP NAL classe de tipo 0 NON_IRAP_NU Segmento de fatia codificada de uma imagem VCL T não IRAP slice_layer_rbsp( ) 1 IRAP_NUT Fatia codificada de uma imagem IRAP VCL slice_layer_rbsp( ) 2-15 RSV_VCL_NUT Unidades VCL NAL reservadas VCL 16 SPS_NUT Conjunto de parâmetros de sequência não VCL seq_parameter_set_rbsp( ) 17 PPS_NUT Conjunto de parâmetros de imagem não VCL pic_parameter_set_rbsp( )
18 EOS_NUT Fim de sequência não VCL end_of_seq_rbsp( ) 19 EOB_NUT Fim de fluxo de bits não VCL end_of_bitstream_rbsp( ) 20, 21 PREFIX_SEI_N Informações de aprimoramento não VCL UT complementares SUFFIX_SEI_N sei_rbsp( )
UT 22-26 RSV_NVCL Reservado não VCL 27-31 UNSPEC Não especificado não VCL
[0259] Um nuh_temporal_id_plus1 menos 1 especifica um identificador temporal para a unidade NAL. O valor de nuh_temporal_id_plus1 não deve ser igual a 0. A variável TemporalId é especificada da seguinte forma: TemporalId = nuh_temporal_id_plus1 − 1.
[0260] Quando nal_unit_type é igual a IRAP_NUT, a fatia codificada pertence a uma imagem IRAP, e TemporalId deve ser igual a 0. O valor de TemporalId deve ser igual para todas as unidades VCL NAL de uma unidade de acesso. O valor de TemporalId de uma imagem codificada ou uma unidade de acesso é o valor do TemporalId das unidades VCL NAL da imagem codificada ou da unidade de acesso. O valor de TemporalId para unidades não VCL NAL é restrito da seguinte maneira: Se nal_unit_type for igual a SPS_NUT, TemporalId deve ser igual a 0 e o TemporalId da unidade de acesso contendo a unidade NAL deve ser igual a 0. De outro modo, se nal_unit_type for igual a EOS_NUT ou EOB_NUT, TemporalId deve ser igual a 0. De outro modo, TemporalId deve ser maior do que ou igual ao TemporalId da unidade de acesso contendo a unidade NAL. Quando a unidade NAL é uma unidade não VCL NAL, o valor de TemporalId é igual ao valor mínimo dos valores TemporalId de todas as unidades de acesso às quais a unidade não VCL NAL se aplica. Quando nal_unit_type é igual a PPS_NUT, TemporalId pode ser maior do que ou igual ao TemporalId da unidade de acesso que contém, visto que todos os conjuntos de parâmetros de imagem (PPSs) podem ser incluídos no início de um fluxo de bits, em que a primeira imagem codificada tem TemporalId igual a 0. Quando nal_unit_type é igual a PREFIX_SEI_NUT ou SUFFIX_SEI_NUT, TemporalId pode ser maior do que ou igual ao TemporalId da unidade de acesso que contém, visto que uma unidade
NAL de informações de aprimoramento complementares (SEI) pode conter informações que se aplicam a um subconjunto de fluxo de bits que inclui unidades de acesso para as quais os valores de TemporalId são maiores do que o TemporalId da unidade de acesso contendo a unidade de SEI NAL. nuh_reserved_zero_7bits deve ser igual a '0000000'. Outros valores de nuh_reserved_zero_7bits podem ser especificados no futuro por ITU-T | ISO/IEC. Decodificadores devem ignorar (isto é, remover do fluxo de bits e descartar) unidades de NAL com valores de nuh_reserved_zero_7bits diferentes de '0000000'.
[0261] Semântica de RBSP de conjunto de parâmetros de sequência.
[0262] Um log2_max_pic_order_cnt_lsb_minus4 especifica o valor da variável MaxPicOrderCntLsb que é usado no processo de decodificação para contagem de ordem de imagem da seguinte forma: MaxPicOrderCntLsb = 2( log2_max_pic_order_cnt_lsb_minus4 + 4 )
[0263] O valor de log2_max_pic_order_cnt_lsb_minus4 deve estar na faixa de 0 a 12, inclusive. sps_max_dec_pic_buffering_minus1 mais 1 especifica o tamanho máximo necessário do buffer de imagem decodificada para a CVS em unidades de buffers de armazenamento de imagem. O valor de sps_max_dec_pic_buffering_minus1 deve estar na faixa de 0 a MaxDpbSize − 1, inclusive, em que MaxDpbSize é conforme especificado em alguma outra parte. additional_st_poc_lsb especifica o valor da variável MaxStPicOrderCntLsb que é usada no processo de decodificação para listas de imagens de referência da seguinte forma: MaxStPicOrderCntLsb = 2( log2_max_pic_order_cnt_lsb_minus4 + 4 + additional_st_poc_lsb )
[0264] O valor de additional_st_poc_lsb deve estar na faixa de 0 a 32 − log2_max_pic_order_cnt_lsb_minus4 − 4, inclusive. long_term_ref_pics_flag igual a 0 especifica que nenhuma LTRP é usada para predição inter de qualquer imagem codificada na CVS. long_term_ref_pics_flag igual a 1 especifica que LTRPs podem ser usadas para predição inter de uma ou mais imagens codificadas na CVS. additional_lt_poc_lsb especifica o valor da variável MaxLtPicOrderCntLsb que é usada no processo de decodificação para listas de imagens de referência da seguinte forma: MaxLtPicOrderCntLsb = 2( log2_max_pic_order_cnt_lsb_minus4 + 4 + additional_st_poc_lsb
+ additional_lt_poc_lsb ) O valor de additional_lt_poc_lsb deve estar na faixa de 0 a 32 − log2_max_pic_order_cnt_lsb_minus4 − 4 − additional_st_poc_lsb, inclusive. Quando não presente, deduz-se que o valor de additional_lt_poc_lsb seja igual a
0.
[0265] Semântica de RBSP de conjunto de parâmetros de imagem.
[0266] Um num_ref_idx_default_active_minus1[ i ] mais 1, quando i é igual a 0, especifica o valor deduzido da variável NumRefIdxActive[ 0 ] para fatias P ou B com num_ref_idx_active_override_flag igual a 0, e, quando i é igual a 1, especifica o valor deduzido de NumRefIdxActive[ 1 ] para fatias B com num_ref_idx_active_override_flag igual a 0. O valor de num_ref_idx_default_active_minus1[ i ] deve estar na faixa de 0 a 14, inclusive.
[0267] Semântica de cabeçalho de fatia.
[0268] Quando presente, o valor de cada um dentre os elementos de sintaxe de cabeçalho de fatia slice_pic_parameter_set_id e slice_pic_order_cnt_lsb deve ser igual em todos os cabeçalhos de fatia de uma imagem codificada. slice_type especifica o tipo de codificação da fatia de acordo com a Tabela 7-3. Tabela 7-3 – Associação de nome a slice_type slice_type Nome de slice_type 0 B (fatia B) 1 P (fatia P) 2 I (fatia I)
[0269] Quando nal_unit_type é igual a IRAP_NUT, isto é, a imagem é uma imagem IRAP, slice_type deve ser igual a 2.
[0270] Um slice_pic_order_cnt_lsb especifica a contagem de ordem de imagem módulo MaxPicOrderCntLsb para a imagem atual. O comprimento do elemento de sintaxe slice_pic_order_cnt_lsb é log2_max_pic_order_cnt_lsb_minus4 + 4 bits. O valor do slice_pic_order_cnt_lsb deve estar na faixa de 0 a MaxPicOrderCntLsb − 1, inclusive. Quando slice_pic_order_cnt_lsb não está presente, deduz-se que slice_pic_order_cnt_lsb seja igual a 0. num_ref_idx_active_override_flag igual a 1 especifica que o elemento de sintaxe num_ref_idx_active_minus1[ 0 ] está presente para fatias P e B e que o elemento de sintaxe num_ref_idx_active_minus1[ 1 ] está presente para fatias B. num_ref_idx_active_override_flag igual a 0 especifica que os elementos de sintaxe num_ref_idx_active_minus1[ 0 ] e num_ref_idx_active_minus1[ 1 ] não estão presentes. num_ref_idx_active_minus1[ i ], quando presente, especifica o valor da variável NumRefIdxActive[ i ] da seguinte forma: NumRefIdxActive[ i ] = num_ref_idx_active_minus1[ i ] + 1
[0271] O valor de num_ref_idx_active_minus1[ i ] deve estar na faixa de 0 a 14, inclusive. O valor de NumRefIdxActive[ i ] − 1 especifica o índice de referência máximo para lista de imagens de referência i que pode ser usado para decodificar a fatia. Quando o valor de NumRefIdxActive[ i ] é igual a 0, nenhum índice de referência para lista de imagens de referência i pode ser usado para decodificar a fatia. Para i igual a 0 ou 1, quando a fatia atual for uma fatia B e num_ref_idx_active_override_flag é igual a 0, deduz-se que NumRefIdxActive[ i ] seja igual a num_ref_idx_default_active_minus1[ i ] + 1. Quando a fatia atual for uma fatia P e num_ref_idx_active_override_flag é igual a 0, deduz-se que NumRefIdxActive[ 0 ] seja igual a num_ref_idx_default_active_minus1[ 0 ] + 1. Quando a fatia atual for uma fatia P, deduz-se que NumRefIdxActive[ 1 ] seja igual a 0. Quando a fatia atual for uma fatia I, deduz-se que tanto NumRefIdxActive[ 0 ] quanto NumRefIdxActive[ 1 ] sejam iguais a 0. Alternativamente, para i igual a 0 ou 1, o seguinte se aplica após o que foi mencionado acima: Supõe-se que rplsIdx1 seja definido igual a ref_pic_list_sps_flag[ i ] ? ref_pic_list_idx[ i ] : num_ref_pic_lists_in_sps[ i ], e numRpEntries[ i ] seja igual a num_strp_entries[ i ][ rplsIdx1 ] + num_ltrp_entries[ i ][ rplsIdx1 ]. Quando NumRefIdxActive[ i ] é maior do que numRpEntries[ i ], o valor de NumRefIdxActive[ i ] é definido como igual a numRpEntries[ i ].
[0272] Semântica de estrutura de lista de imagens de referência.
[0273] A estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ) pode estar presente em um cabeçalho de fatia. Quando a mesma está presente em um cabeçalho de fatia, a estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ) especifica a lista de imagens de referência listIdx da imagem atual (a imagem contendo a fatia). num_strp_entries[ listIdx ] especifica o número de entradas de STRP na estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ). num_ltrp_entries[ listIdx ] especifica o número de entradas de LTRP na estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ). Quando não presente, deduz-se que o valor de num_ltrp_entries[ listIdx ] seja igual a 0. A variável NumEntriesInList[ listIdx ] é derivada da seguinte forma: NumEntriesInList[ listIdx ] = num_strp_entries[ listIdx ] + num_ltrp_entries[ listIdx ]
[0274] O valor de NumEntriesInList[ listIdx ] deve estar na faixa de 0 a sps_max_dec_pic_buffering_minus1, inclusive. lt_ref_pic_flag[ listIdx ][ i ] igual a 1 especifica que a i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ) é uma entrada de LTRP. lt_ref_pic_flag[ listIdx ][ i ] igual a 0 especifica que a i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ) é uma entrada de STRP. Quando não presente, deduz-se que o valor de lt_ref_pic_flag[ listIdx ][ i ] seja igual a 0. É uma exigência de conformidade de fluxo de bits que a soma de lt_ref_pic_flag[ listIdx ][ i ] para todos os valores de i na faixa de 0 a NumEntriesInList[ listIdx ] − 1, inclusive, deve ser igual a num_ltrp_entries[ listIdx ]. poc_lsb_st[ listIdx ][ i ], quando lt_ref_pic_flag[ listIdx ][ i ] é igual a 0, especifica o valor da contagem de ordem de imagem módulo MaxStPicOrderCntLsb da imagem referida pela i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ). O comprimento do elemento de sintaxe poc_lsb_st[ listIdx ][ i ] é Log2( MaxStPicOrderCntLsb ) bits. poc_lsb_lt[ listIdx ][ i ], quando lt_ref_pic_flag[ listIdx ][ i ] é igual a 1, especifica o valor da contagem de ordem de imagem módulo MaxLtPicOrderCntLsb da imagem referida pela i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx, ltrpFlag ). O comprimento do elemento de sintaxe poc_lsb_lt[ listIdx ][ i ] é Log2( MaxLtPicOrderCntLsb ) bits.
[0275] O processo de decodificação é discutido.
[0276] Processo de decodificação geral.
[0277] O processo de decodificação opera da seguinte forma para a imagem atual CurrPic: A decodificação de unidades de NAL é especificada abaixo. Os processos abaixo especificam os seguintes processos de decodificação com o uso de elementos de sintaxe na camada de cabeçalho de fatia e acima: As variáveis e funções relacionadas à contagem de ordem de imagem são derivadas. Isso precisa ser invocado apenas para a primeira fatia de uma imagem. No início do processo de decodificação para cada fatia de uma imagem não IRAP, o processo de decodificação para construção de listas de imagens de referência é invocado para derivação de lista de imagens de referência 0 (RefPicList[ 0 ]) e lista de imagens de referência 1 (RefPicList[ 1 ]). O processo de decodificação para marcação de imagem de referência é invocado, em que imagens de referência podem ser marcadas como “não usada para referência” ou “usada para referência de longo prazo”. Isso precisa ser invocado apenas para a primeira fatia de uma imagem. Os processos de decodificação para unidades de árvore de codificação, escalonamento, transformada, filtragem in-loop, etc., são invocados. Após todas as fatias da imagem atual terem sido decodificadas, a imagem decodificada atual é marcada como “usada para referência de curto prazo”.
[0278] Processo de decodificação de unidade de NAL.
[0279] Entradas para esse processo são unidades de NAL da imagem atual e suas unidades de NAL não VCL associadas. Saídas desse processo são as estruturas de sintaxe de RBSP analisadas encapsuladas dentro das unidades de NAL. O processo de decodificação para cada unidade de NAL extrai a estrutura de sintaxe de RBSP da unidade de NAL e, então, analisa a estrutura de sintaxe de RBSP.
[0280] Processo de decodificação de fatia.
[0281] Processo de decodificação para contagem de ordem de imagem.
[0282] Saída desse processo é PicOrderCntVal, a contagem de ordem de imagem da imagem atual. As contagens de ordem de imagem são usadas para identificar imagens, para derivar parâmetros de movimento em predição de vetor de movimento e modo de mescla, e para verificação de conformidade de decodificador. Cada imagem codificada é associada a uma variável de contagem de ordem de imagem, denotada como PicOrderCntVal. Quando a imagem atual não é uma imagem IRAP, as variáveis prevPicOrderCntLsb e prevPicOrderCntMsb são derivadas da seguinte forma: Supõe-se que prevTid0Pic seja a imagem anterior em ordem de decodificação que tem TemporalId igual a 0. A variável prevPicOrderCntLsb é definida como igual a slice_pic_order_cnt_lsb de prevTid0Pic. A variável prevPicOrderCntMsb é definida igual a PicOrderCntMsb de prevTid0Pic. A variável PicOrderCntMsb da imagem atual é derivada da seguinte forma: Se a imagem atual for uma imagem IRAP, PicOrderCntMsb é definida igual a 0. De outro modo, PicOrderCntMsb é derivada da seguinte forma:
if( ( slice_pic_order_cnt_lsb < prevPicOrderCntLsb ) && ( ( prevPicOrderCntLsb − slice_pic_order_cnt_lsb ) >= ( MaxPicOrderCntLsb / 2 ) ) ) PicOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb else if( (slice_pic_order_cnt_lsb > prevPicOrderCntLsb ) && ( ( slice_pic_order_cnt_lsb − prevPicOrderCntLsb ) > ( MaxPicOrderCntLsb / 2 ) ) ) PicOrderCntMsb = prevPicOrderCntMsb − MaxPicOrderCntLsb else PicOrderCntMsb = prevPicOrderCntMsb
[0283] PicOrderCntVal é derivado da seguinte forma: PicOrderCntVal = PicOrderCntMsb + slice_pic_order_cnt_lsb
[0284] Todas as imagens IRAP terão PicOrderCntVal igual a 0 visto que deduz-se que slice_pic_order_cnt_lsb seja 0 para imagens IRAP e prevPicOrderCntLsb e prevPicOrderCntMsb são definidos como igual a 0. O valor de PicOrderCntVal deve estar na faixa de −231 a 231 − 1, inclusive. Em uma CVS, os valores de PicOrderCntVal para quaisquer duas imagens codificadas não devem ser iguais. A qualquer momento durante o processo de decodificação, os valores de PicOrderCntVal & ( MaxStPicOrderCntLsb − 1 ) para quaisquer duas imagens de referência de curto prazo no DPB não devem ser iguais. A qualquer momento durante o processo de decodificação, os valores de PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) para quaisquer duas imagens de referência no DPB não devem ser iguais.
[0285] A função PicOrderCnt( picX ) é especificada da seguinte forma: PicOrderCnt( picX ) = PicOrderCntVal da imagem picX
[0286] A função DiffPicOrderCnt( picA, picB ) é especificada da seguinte forma: DiffPicOrderCnt( picA, picB ) = PicOrderCnt( picA ) − PicOrderCnt( picB )
[0287] O fluxo de bits não deve conter dados que resultem em valores de DiffPicOrderCnt( picA, picB ) usados no processo de decodificação que não estão na faixa de −215 a 215 − 1, inclusive. Supõe-se que X seja a imagem atual e Y e Z sejam duas outras imagens na mesma CVS, Y e Z são considerados estarem na mesma direção de ordem de saída de X quando DiffPicOrderCnt( X,
Y ) e DiffPicOrderCnt( X, Z ) são positivos ou ambos são negativos.
[0288] Processo de decodificação para construção de listas de imagens de referência.
[0289] Esse processo é invocado no início do processo de decodificação para cada fatia de uma imagem não IRAP. As imagens de referência são endereçadas através de índices de referência. Um índice de referência é um índice em uma lista de imagens de referência. Ao decodificar uma fatia I, nenhuma lista de imagens de referência é usada na decodificação dos dados de fatia. Ao decodificar uma fatia P, apenas lista de imagens de referência 0 (isto é, RefPicList[ 0 ]), é usada na decodificação dos dados de fatia. Ao decodificar uma fatia B, tanto a lista de imagens de referência 0 quanto a lista de imagens de referência 1 (isto é, RefPicList[ 1 ]) são usadas na decodificação dos dados de fatia. No início do processo de decodificação para cada fatia de uma imagem não IRAP, as listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são derivadas. As listas de imagens de referência são usadas na marcação de imagens de referência ou na decodificação dos dados de fatia. Para uma fatia I de uma imagem não IRAP que não é a primeira fatia da imagem, RefPicList[ 0 ] e RefPicList[ 1 ] podem ser derivadas para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para a decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação. Para uma fatia P que não é a primeira fatia de uma imagem, RefPicList[ 1 ] pode ser derivada para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação.
[0290] As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { for( j = 0; j < NumEntriesInList[ i ]; j++) { if( lt_ref_pic_flag[ i ][ j ] ) { if( há uma picA de referência no DPB com PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) igual a poc_lsb_lt[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } } for( i = 0; i < 2; i++ ) { for( j = 0; j < NumEntriesInList[ i ]; j++) { if( !lt_ref_pic_flag[ i ][ j ] ) { if( há uma imagem de referência de curto prazo picA no DPB com PicOrderCntVal & ( MaxStPicOrderCntLsb − 1 ) igual a poc_lsb_st[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } } }
[0291] Para cada i igual a 0 ou 1, o seguinte se aplica:
[0292] As primeiras entradas NumRefIdxActive[ i ] em RefPicList[ i ] são denominadas as entradas ativas em RefPicList[ i ], e as outras entradas em RefPicList[ i ] são denominadas as entradas inativas em RefPicList[ i ]. Cada entrada em RefPicList[ i ][ j ] para j na faixa de 0 a NumEntriesInList[ i ] − 1, inclusive, é denominada uma entrada de STRP se lt_ref_pic_flag[ i ][ j ] for igual a 0, e uma entrada de LTRP de outro modo. É possível que uma imagem particular seja referida por uma entrada em RefPicList[ 0 ] e uma entrada em RefPicList[ 1 ]. É também possível que uma imagem particular seja referida por mais do que uma entrada em RefPicList[ 0 ] ou por mais do que uma entrada em RefPicList[ 1 ]. As entradas ativas em RefPicList[ 0 ] e as entradas ativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que podem ser usadas para predição inter da imagem atual e uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. As entradas inativas em RefPicList[ 0 ] e as entradas inativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que não são usadas para predição inter da imagem atual, mas podem ser usadas em predição inter para uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. Pode haver uma ou mais entradas em RefPicList[ 0 ] ou RefPicList[ 1 ] que são iguais a “nenhuma imagem de referência” visto que as imagens correspondentes não estão presentes no DPB. Cada entrada inativa em RefPicList[ 0 ] ou RefPicList[ 0 ] que é igual a “nenhuma imagem de referência” deve ser ignorada. Uma perda de imagem não intencional deve ser deduzida para cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] que é igual a “nenhuma imagem de referência”.
[0293] É uma exigência de conformidade de fluxo de bits que as seguintes restrições se apliquem: Para cada i igual a 0 ou 1, NumEntriesInList[ i ] não deve ser menor do que NumRefIdxActive[ i ]. A imagem referida por cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] deve estar presente no DPB e deve ter TemporalId menor do que ou igual àquele da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: o índice de entrada de qualquer entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve ser usado como um índice de referência para decodificação da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: uma entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve se referir à mesma imagem de qualquer outra entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Uma entrada de STRP em RefPicList[ 0 ] ou RefPicList[ 1 ] de uma fatia de uma imagem e uma entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] da mesma fatia ou uma fatia diferente da mesma imagem não devem se referir à mesma imagem. A imagem atual em si não deve ser referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Não deve haver entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ] para a qual a diferença entre o PicOrderCntVal da imagem atual e o PicOrderCntVal da imagem referida pela entrada é maior do que ou igual a 224. Supõe-se que setOfRefPics seja o conjunto de imagens únicas referidas por todas as entradas em RefPicList[ 0 ] e todas as entradas em RefPicList[ 1 ]. O número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1 e setOfRefPics deve ser igual para todas as fatias de uma imagem.
[0294] Processo de decodificação para marcação de imagem de referência.
[0295] Esse processo é invocado uma vez por imagem, após decodificação de um cabeçalho de fatia e do processo de decodificação para construção de lista de imagens de referência para a fatia, mas antes da decodificação dos dados de fatia. Esse processo pode resultar em uma ou mais imagens de referência no DPB sendo marcadas como “não usada para referência” ou “usada para referência de longo prazo”. Uma imagem decodificada no DPB pode ser marcada como “não usada para referência”, “usada para referência de curto prazo” ou “usada para referência de longo prazo”, mas apenas uma entre essas três a qualquer dado momento durante a operação do processo de decodificação. A atribuição de uma dentre essas marcações a uma imagem remove implicitamente outra dentre essas marcações quando aplicável. Quando uma imagem é referida como sendo marcada como “usada para referência”, isso se refere, coletivamente, à imagem sendo marcada como “usada para referência de curto prazo” ou “usada para referência de longo prazo” (mas não ambas). Quando a imagem atual é uma imagem IRAP, todas as imagens de referência atualmente no DPB (se houver) são marcadas como “não usadas para referência”. STRPs são identificadas pelos Log2( MaxStPicOrderCntLsb ) LSBs de seus valores PicOrderCntVal. LTRPs são identificadas pelos Log2( MaxLtPicOrderCntLsb ) LSBs de seus valores PicOrderCntVal.
[0296] O seguinte se aplica: Para cada entrada de LTRP em RefPicList[ 0 ] ou RefPicList[ 1 ], quando a imagem referida é uma STRP, a imagem é marcada como “usada para referência de longo prazo”. Cada imagem de referência no DPB que não é referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ] é marcada como “não usada para referência”.
[0297] Sempre sinalizar listas de imagens de referência em cabeçalhos de fatia sem diferenciação entre imagens de referência de curto prazo e de longo prazo.
[0298] Esta seção descreve outra modalidade alternativa da revelação. A descrição é em relação ao VVC WD mais recente (isto é, apenas o delta em relação ao VVC WD mais recente em JVET-K1001-v1 é descrito, enquanto os textos no VVC WD mais recente que não são mencionados abaixo se aplicam como são). Essa modalidade alternativa é resumida da seguinte forma: Estruturas de lista de imagens de referência são sinalizadas apenas em cabeçalhos de fatia. Nenhuma distinção é feita entre imagens de referência de curto prazo e de longo prazo. Todas as imagens de referência são denominadas simplesmente imagens de referência. As imagens de referência são identificadas por seus POC LSBs,
que podem ser representados por um número de bits que é diferente do número de bits usado para representar os POC LSBs sinalizados em cabeçalhos de fatia para derivação de valores de POC.
[0299] Abreviações. Texto na cláusula 4 de VVC WD se aplica.
[0300] Sintaxe de cabeçalho de unidade de NAL. nal_unit_header( ) { Descriptor forbidden_zero_bit f(1) nal_unit_type u(5) nuh_temporal_id_plus1 u(3) nuh_reserved_zero_7bits u(7) }
[0301] Sintaxe de RBSP de conjunto de parâmetros de sequência. seq_parameter_set_rbsp( ) { Descriptor sps_seq_parameter_set_id ue(v) chroma_format_idc ue(v) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) sps_max_dec_pic_buffering_minus1 ue(v) qtbtt_dual_tree_intra_flag ue(v) log2_ctu_size_minus2 ue(v) log2_min_qt_size_intra_slices_minus2 ue(v) log2_min_qt_size_inter_slices_minus2 ue(v) max_mtt_hierarchy_depth_inter_slices ue(v) max_mtt_hierarchy_depth_intra_slices ue(v) additional_ref_poc_lsb ue(v) rbsp_trailing_bits( ) }
[0302] Sintaxe de RBSP de conjunto de parâmetros de imagem.
pic_parameter_set_rbsp( ) { Descriptor pps_pic_parameter_set_id ue(v) pps_seq_parameter_set_id ue(v) for( i = 0; i < 2; i++) num_ref_idx_default_active_minus1[ i ] ue(v) rbsp_trailing_bits( ) }
[0303] Sintaxe de cabeçalho de fatia. slice_header( ) { Descriptor slice_pic_parameter_set_id ue(v) slice_address u(v) slice_type ue(v) if ( slice_type != I ) log2_diff_ctu_max_bt_size ue(v) if( nal_unit_type != IRAP_NUT ) { slice_pic_order_cnt_lsb u(v) for( i = 0; i < 2; i++ ) ref_pic_list_struct( i ) if( slice_type = = P | | slice_type = = B ) { num_ref_idx_active_override_flag u(1) if( num_ref_idx_active_override_flag ) for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ ) num_ref_idx_active_minus1[ i ] ue(v) } } byte_alignment( ) }
[0304] Sintaxe de estrutura de lista de imagens de referência. ref_pic_list_struct( listIdx ) { Descriptor num_ref_entries[ listIdx ] ue(v) for( i = 0; i < NumEntriesInList[ listIdx ]; i++) poc_ref_lsb[ listIdx ][ i ] u(v) }
[0305] Semântica de cabeçalho de unidade de NAL.
[0306] Um forbidden_zero_bit deve ser igual a 0. nal_unit_type especifica o tipo de estrutura de dados de RBSP contida na unidade de NAL. Tabela 7-1 – códigos de tipo de unidade de NAL e classes de tipo de unidade de NAL nal_unit_ Nome de Conteúdo de unidade de NAL e Unidade de type nal_unit_type estrutura de sintaxe de RBSP NAL classe de tipo 0 NON_IRAP_N Segmento de fatia codificada de uma VCL UT imagem não IRAP slice_layer_rbsp( ) 1 IRAP_NUT Fatia codificada de uma imagem IRAP VCL slice_layer_rbsp( ) 2-15 RSV_VCL_NU Unidades de VCL NAL reservadas VCL
T 16 SPS_NUT Conjunto de parâmetros de sequência não VCL seq_parameter_set_rbsp( ) 17 PPS_NUT Conjunto de parâmetros de imagem não VCL pic_parameter_set_rbsp( ) 18 EOS_NUT Fim de sequência não VCL end_of_seq_rbsp( ) 19 EOB_NUT Fim de fluxo de bits não VCL end_of_bitstream_rbsp( ) 20, 21 PREFIX_SEI_N Informações de aprimoramento não VCL UT complementares SUFFIX_SEI_N sei_rbsp( )
UT 22-26 RSV_NVCL Reservado não VCL 27-31 UNSPEC Não especificado não VCL
[0307] Um nuh_temporal_id_plus1 menos 1 especifica um identificador temporal para a unidade de NAL. O valor de nuh_temporal_id_plus1 não deve ser igual a 0. A variável TemporalId é especificada da seguinte forma: TemporalId = nuh_temporal_id_plus1 − 1
[0308] Quando nal_unit_type é igual a IRAP_NUT, a fatia codificada pertence a uma imagem IRAP, TemporalId deve ser igual a 0. O valor de TemporalId deve ser igual para todas as unidades VCL NAL de uma unidade de acesso. O valor de TemporalId de uma imagem codificada ou uma unidade de acesso é o valor do TemporalId das unidades VCL NAL da imagem codificada ou da unidade de acesso. O valor de TemporalId para unidades não VCL NAL é restrito da seguinte maneira:
[0309] Se nal_unit_type for igual a SPS_NUT, TemporalId deve ser igual a 0 e o TemporalId da unidade de acesso contendo a unidade de NAL deve ser igual a 0. De outro modo, se nal_unit_type for igual a EOS_NUT ou EOB_NUT, TemporalId deve ser igual a 0. De outro modo, TemporalId deve ser maior do que ou igual ao TemporalId da unidade de acesso contendo a unidade de NAL. Quando a unidade de NAL é uma unidade não VCL NAL, o valor de TemporalId é igual ao valor mínimo dos valores TemporalId de todas as unidades de acesso às quais a unidade não VCL NAL se aplica. Quando nal_unit_type é igual a PPS_NUT, TemporalId pode ser maior do que ou igual ao TemporalId da unidade de acesso que contém, visto que todos os conjuntos de parâmetros de imagem (PPSs) podem ser incluídos no início de um fluxo de bits, em que a primeira imagem codificada tem TemporalId igual a 0. Quando nal_unit_type é igual a PREFIX_SEI_NUT ou SUFFIX_SEI_NUT, TemporalId pode ser maior do que ou igual ao TemporalId da unidade de acesso que contém, visto que uma unidade de SEI NAL pode conter informações que se aplicam a um subconjunto de fluxo de bits que inclui unidades de acesso para as quais os valores de TemporalId são maiores do que o TemporalId da unidade de acesso contendo a unidade de SEI NAL. nuh_reserved_zero_7bits deve ser igual a '0000000'. Outros valores de nuh_reserved_zero_7bits podem ser especificados no futuro por ITU-T | ISO/IEC. Decodificadores devem ignorar (isto é, remover do fluxo de bits e descartar) unidades de NAL com valores de nuh_reserved_zero_7bits diferentes de '0000000'.
[0310] Semântica de RBSP de conjunto de parâmetros de sequência.
[0311] log2_max_pic_order_cnt_lsb_minus4 especifica o valor da variável MaxPicOrderCntLsb que é usado no processo de decodificação para contagem de ordem de imagem da seguinte forma: MaxPicOrderCntLsb = 2( log2_max_pic_order_cnt_lsb_minus4 + 4 )
[0312] O valor de log2_max_pic_order_cnt_lsb_minus4 deve estar na faixa de 0 a 12, inclusive. sps_max_dec_pic_buffering_minus1 mais 1 especifica o tamanho máximo necessário do buffer de imagem decodificada para a CVS em unidades de buffers de armazenamento de imagem. O valor de sps_max_dec_pic_buffering_minus1 deve estar na faixa de 0 a MaxDpbSize − 1, inclusive, em que MaxDpbSize é conforme especificado em alguma outra parte. additional_ref_poc_lsb especifica o valor da variável MaxRefPicOrderCntLsb que é usada no processo de decodificação para listas de imagens de referência da seguinte forma: MaxRefPicOrderCntLsb = 2( log2_max_pic_order_cnt_lsb_minus4 + 4 + additional_ref_poc_ lsb )
[0313] O valor de additional_ref_poc_lsb deve estar na faixa de 0 a 32 − log2_max_pic_order_cnt_lsb_minus4 − 4, inclusive.
[0314] Semântica de RBSP de conjunto de parâmetros de imagem.
[0315] Um num_ref_idx_default_active_minus1[ i ] mais 1, quando i é igual a 0, especifica o valor deduzido da variável NumRefIdxActive[ 0 ] para fatias P ou B com num_ref_idx_active_override_flag igual a 0, e, quando i é igual a 1, especifica o valor deduzido de NumRefIdxActive[ 1 ] para fatias B com num_ref_idx_active_override_flag igual a 0. O valor de num_ref_idx_default_active_minus1[ i ] deve estar na faixa de 0 a 14, inclusive.
[0316] Semântica de cabeçalho de fatia.
[0317] Quando presente, o valor de cada um dentre os elementos de sintaxe de cabeçalho de fatia slice_pic_parameter_set_id e slice_pic_order_cnt_lsb deve ser igual em todos os cabeçalhos de fatia de uma imagem codificada. ... slice_type especifica o tipo de codificação da fatia de acordo com a Tabela 7-3. Tabela 7-3 – Associação de nome a slice_type slice_type Nome de slice_type 0 B (fatia B) 1 P (fatia P) 2 I (fatia I)
[0318] Quando nal_unit_type é igual a IRAP_NUT, isto é, a imagem é uma imagem IRAP, slice_type deve ser igual a 2. ... slice_pic_order_cnt_lsb especifica a contagem de ordem de imagem módulo MaxPicOrderCntLsb para a imagem atual. O comprimento do elemento de sintaxe slice_pic_order_cnt_lsb é log2_max_pic_order_cnt_lsb_minus4 + 4 bits. O valor do slice_pic_order_cnt_lsb deve estar na faixa de 0 a MaxPicOrderCntLsb − 1, inclusive. Quando slice_pic_order_cnt_lsb não está presente, deduz-se que slice_pic_order_cnt_lsb seja igual a 0. num_ref_idx_active_override_flag igual a 1 especifica que o elemento de sintaxe num_ref_idx_active_minus1[ 0 ] está presente para fatias P e B e que o elemento de sintaxe num_ref_idx_active_minus1[ 1 ] está presente para fatias B. num_ref_idx_active_override_flag igual a 0 especifica que os elementos de sintaxe num_ref_idx_active_minus1[ 0 ] e num_ref_idx_active_minus1[ 1 ] não estão presentes. num_ref_idx_active_minus1[ i ], quando presente, especifica o valor da variável NumRefIdxActive[ i ] da seguinte forma: NumRefIdxActive[ i ] = num_ref_idx_active_minus1[ i ] + 1
[0319] O valor de num_ref_idx_active_minus1[ i ] deve estar na faixa de 0 a 14, inclusive. O valor de NumRefIdxActive[ i ] − 1 especifica o índice de referência máximo para lista de imagens de referência i que pode ser usado para decodificar a fatia. Quando o valor de NumRefIdxActive[ i ] é igual a 0, nenhum índice de referência para lista de imagens de referência i pode ser usado para decodificar a fatia. Para i igual a 0 ou 1, quando a fatia atual for uma fatia B e num_ref_idx_active_override_flag é igual a 0, deduz-se que NumRefIdxActive[ i ] seja igual a num_ref_idx_default_active_minus1[ i ] + 1. Quando a fatia atual for uma fatia P e num_ref_idx_active_override_flag é igual a 0, deduz-se que NumRefIdxActive[ 0 ] seja igual a num_ref_idx_default_active_minus1[ 0 ] + 1. Quando a fatia atual for uma fatia P, deduz-se que NumRefIdxActive[ 1 ] seja igual a 0. Quando a fatia atual for uma fatia I, deduz-se que tanto NumRefIdxActive[ 0 ] quanto NumRefIdxActive[ 1 ] sejam iguais a 0. Alternativamente, para i igual a 0 ou 1, o seguinte se aplica após o que foi mencionado acima: Supõe-se que rplsIdx1 seja definido igual a ref_pic_list_sps_flag[ i ] ? ref_pic_list_idx[ i ] : num_ref_pic_lists_in_sps[ i ], e numRpEntries[ i ] seja igual a num_strp_entries[ i ][ rplsIdx1 ] + num_ltrp_entries[ i ][ rplsIdx1 ]. Quando NumRefIdxActive[ i ] é maior do que numRpEntries[ i ], o valor de NumRefIdxActive[ i ] é definido como igual a numRpEntries[ i ].
[0320] Semântica de estrutura de lista de imagens de referência.
[0321] A estrutura de sintaxe ref_pic_list_struct( listIdx ) pode estar presente em um cabeçalho de fatia. Quando a mesma está presente em um cabeçalho de fatia, a estrutura de sintaxe ref_pic_list_struct( listIdx ) especifica lista de imagens de referência listIdx da imagem atual (a imagem contendo a fatia). num_ref_entries[ listIdx ] especifica o número de entradas na estrutura de sintaxe ref_pic_list_struct( listIdx ). A variável NumEntriesInList[ listIdx ] é derivada da seguinte forma: NumRefPicEntriesInRpl[ listIdx ] = num_ref_entries[ listIdx ]
[0322] O valor de NumRefPicEntries[ listIdx ] deve estar na faixa de 0 a sps_max_dec_pic_buffering_minus1, inclusive. poc_ref_lsb[ listIdx ][ i ] especifica o valor da contagem de ordem de imagem módulo MaxRefPicOrderCntLsb da imagem referida pela i-ésima entrada na estrutura de sintaxe ref_pic_list_struct( listIdx ). O comprimento do elemento de sintaxe poc_ref_lsb[ listIdx ][ i ] é Log2( MaxRefPicOrderCntLsb ) bits.
[0323] O processo de decodificação é discutido.
[0324] Processo de decodificação geral.
[0325] O processo de decodificação opera da seguinte forma para a imagem atual CurrPic: a decodificação de unidades de NAL é especificada abaixo. Os processos abaixo especificam os seguintes processos de decodificação com o uso de elementos de sintaxe na camada de cabeçalho de fatia e acima: variáveis e funções relacionadas à contagem de ordem de imagem são derivadas. Isso precisa ser invocado apenas para a primeira fatia de uma imagem. No início do processo de decodificação para cada fatia de uma imagem não IRAP, o processo de decodificação para construção de listas de imagens de referência é invocado para derivação de lista de imagens de referência 0 (RefPicList[ 0 ]) e lista de imagens de referência 1 (RefPicList[ 1 ]). O processo de decodificação para marcação de imagem de referência é invocado, em que imagens de referência podem ser marcadas como “não usada para referência”. Isso precisa ser invocado apenas para a primeira fatia de uma imagem. Os processos de decodificação para unidades de árvore de codificação, escalonamento, transformada, filtragem in- loop, etc., são invocados. Após todas as fatias da imagem atual terem sido decodificadas, a imagem decodificada atual é marcada como “usada para referência”.
[0326] Processo de decodificação de unidade de NAL.
[0327] Entradas para esse processo são unidades de NAL da imagem atual e suas unidades de NAL não VCL associadas. Saídas desse processo são as estruturas de sintaxe de RBSP analisadas encapsuladas dentro das unidades de NAL. O processo de decodificação para cada unidade de NAL extrai a estrutura de sintaxe de RBSP da unidade de NAL e, então, analisa a estrutura de sintaxe de RBSP.
[0328] Processo de decodificação de fatia.
[0329] Processo de decodificação para contagem de ordem de imagem.
[0330] Saída desse processo é PicOrderCntVal, a contagem de ordem de imagem da imagem atual. As contagens de ordem de imagem são usadas para identificar imagens, para derivar parâmetros de movimento em predição de vetor de movimento e modo de mescla, e para verificação de conformidade de decodificador. Cada imagem codificada é associada a uma variável de contagem de ordem de imagem, denotada como PicOrderCntVal. Quando a imagem atual não é uma imagem IRAP, as variáveis prevPicOrderCntLsb e prevPicOrderCntMsb são derivadas da seguinte forma: supõe-se que prevTid0Pic seja a imagem anterior em ordem de decodificação que tem TemporalId igual a 0. A variável prevPicOrderCntLsb é definida como igual a slice_pic_order_cnt_lsb de prevTid0Pic. A variável prevPicOrderCntMsb é definida igual a PicOrderCntMsb de prevTid0Pic. A variável PicOrderCntMsb da imagem atual é derivada da seguinte forma: se a imagem atual for uma imagem IRAP, PicOrderCntMsb é definido igual a 0. De outro modo, PicOrderCntMsb é derivado da seguinte forma: if( ( slice_pic_order_cnt_lsb < prevPicOrderCntLsb ) && ( ( prevPicOrderCntLsb − slice_pic_order_cnt_lsb ) >= ( MaxPicOrderCntLsb / 2 ) ) ) PicOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb else if( (slice_pic_order_cnt_lsb > prevPicOrderCntLsb ) && ( ( slice_pic_order_cnt_lsb − prevPicOrderCntLsb ) > ( MaxPicOrderCntLsb / 2 ) ) ) PicOrderCntMsb = prevPicOrderCntMsb − MaxPicOrderCntLsb else PicOrderCntMsb = prevPicOrderCntMsb
[0331] PicOrderCntVal é derivado da seguinte forma:
PicOrderCntVal = PicOrderCntMsb + slice_pic_order_cnt_lsb
[0332] Todas as imagens IRAP terão PicOrderCntVal igual a 0 visto que é deduzido que slice_pic_order_cnt_lsb seja 0 para imagens IRAP e prevPicOrderCntLsb e prevPicOrderCntMsb são definidos como iguais a 0. O valor de PicOrderCntVal deve estar na faixa de −231 a 231 − 1, inclusive. Em uma CVS, os valores de PicOrderCntVal para quaisquer duas imagens codificadas não devem ser iguais. A qualquer momento durante o processo de decodificação, os valores de PicOrderCntVal & ( MaxRefPicOrderCntLsb − 1 ) para quaisquer duas imagens de referência no DPB não devem ser iguais.
[0333] A função PicOrderCnt( picX ) é especificada da seguinte forma: PicOrderCnt( picX ) = PicOrderCntVal da imagem picX
[0334] A função DiffPicOrderCnt( picA, picB ) é especificada da seguinte forma: DiffPicOrderCnt( picA, picB ) = PicOrderCnt( picA ) − PicOrderCnt( picB )
[0335] O fluxo de bits não deve conter dados que resultem em valores de DiffPicOrderCnt( picA, picB ) usados no processo de decodificação que não estão na faixa de −215 a 215 − 1, inclusive. Supõe-se que X seja a imagem atual e Y e Z sejam duas outras imagens na mesma CVS, Y e Z são considerados estarem na mesma direção de ordem de saída de X quando DiffPicOrderCnt( X, Y ) e DiffPicOrderCnt( X, Z ) são positivos ou ambos são negativos.
[0336] Processo de decodificação para construção de listas de imagens de referência.
[0337] Esse processo é invocado no início do processo de decodificação para cada fatia de uma imagem não IRAP. As imagens de referência são endereçadas através de índices de referência. Um índice de referência é um índice em uma lista de imagens de referência. Ao decodificar uma fatia I, nenhuma lista de imagens de referência é usada na decodificação dos dados de fatia. Ao decodificar uma fatia P, apenas a lista de imagens de referência 0 (isto é, RefPicList[ 0 ]), é usada na decodificação dos dados de fatia. Ao decodificar uma fatia B, a lista de imagens de referência 0 e a lista de imagens de referência 1 (isto é, RefPicList[ 1 ]) são usadas na decodificação dos dados de fatia. No início do processo de decodificação para cada fatia de uma imagem não IRAP, as listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são derivadas. As listas de imagens de referência são usadas na marcação de imagens de referência ou na decodificação dos dados de fatia. Para uma fatia I de uma imagem não IRAP que não é a primeira fatia da imagem, RefPicList[ 0 ] e RefPicList[ 1 ] podem ser derivadas para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para a decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação. Para uma fatia P que não é a primeira fatia de uma imagem, RefPicList[ 1 ] pode ser derivada para finalidade de verificação de conformidade de fluxo de bits, mas sua derivação não é necessária para decodificação da imagem atual ou imagens que sucedem a imagem atual em ordem de decodificação. As listas de imagens de referência RefPicList[ 0 ] e RefPicList[ 1 ] são construídas da seguinte forma: for( i = 0; i < 2; i++ ) { for( j = 0, pocBase = PicOrderCntVal; j < NumEntriesInList[ i ]; j++) { if( há uma picA de referência no DPB com PicOrderCntVal & ( MaxRefPicOrderCntLsb − 1 ) igual a poc_ref_lsb[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = “nenhuma imagem de referência” } }
[0338] Para cada i igual a 0 ou 1, as primeiras entradas de NumRefIdxActive[ i ] em RefPicList[ i ] são denominadas as entradas ativas em RefPicList[ i ], e as outras entradas em RefPicList[ i ] são denominadas as entradas inativas em RefPicList[ i ]. É possível que uma imagem particular seja referida por uma entrada em RefPicList[ 0 ] e uma entrada em RefPicList[ 1 ]. É também possível que uma imagem particular seja referida por mais do que uma entrada em RefPicList[ 0 ] ou por mais do que uma entrada em RefPicList[ 1 ]. As entradas ativas em RefPicList[ 0 ] e as entradas ativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que podem ser usadas para predição inter da imagem atual e uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. As entradas inativas em RefPicList[ 0 ] e as entradas inativas em RefPicList[ 1 ] se referem, coletivamente, a todas as imagens de referência que não são usadas para predição inter da imagem atual, mas podem ser usadas em predição inter para uma ou mais imagens que sucedem a imagem atual na ordem de decodificação. Pode haver uma ou mais entradas em RefPicList[ 0 ] ou RefPicList[ 1 ] que são iguais a “nenhuma imagem de referência” visto que as imagens correspondentes não estão presentes no DPB. Cada entrada inativa em RefPicList[ 0 ] ou RefPicList[ 0 ] que é igual a “nenhuma imagem de referência” deve ser ignorada. Uma perda de imagem não intencional deve ser deduzida para cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] que é igual a “nenhuma imagem de referência”.
[0339] É uma exigência de conformidade de fluxo de bits que as seguintes restrições se apliquem: Para cada i igual a 0 ou 1, NumEntriesInList[ i ] não deve ser menor do que NumRefIdxActive[ i ]. A imagem referida cada entrada ativa em RefPicList[ 0 ] ou RefPicList[ 1 ] deve estar presente no DPB e deve ter TemporalId menor do que ou igual àquele da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: O índice de entrada de qualquer entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve ser usado como um índice de referência para decodificação da imagem atual. De modo opcional, a seguinte restrição também pode ser especificada: Uma entrada inativa em RefPicList[ 0 ] ou RefPicList[ 1 ] não deve se referir à mesma imagem de qualquer outra entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. A imagem atual em si não deve ser referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ]. Não deve haver entrada em RefPicList[ 0 ] ou RefPicList[ 1 ] para a qual a diferença entre o PicOrderCntVal da imagem atual e o PicOrderCntVal da imagem referida pela entrada é maior do que ou igual a 224. Supõe-se que setOfRefPics seja o conjunto de imagens únicas referidas por todas as entradas em RefPicList[ 0 ] e todas as entradas em RefPicList[ 1 ]. O número de imagens em setOfRefPics deve ser menor do que ou igual a sps_max_dec_pic_buffering_minus1 e setOfRefPics deve ser igual para todas as fatias de uma imagem.
[0340] Processo de decodificação para marcação de imagem de referência.
[0341] Esse processo é invocado uma vez por imagem, após decodificação de um cabeçalho de fatia e do processo de decodificação para construção de lista de imagens de referência para a fatia, mas antes da decodificação dos dados de fatia. Esse processo pode resultar em uma ou mais imagens de referência no DPB sendo marcadas como “não usada para referência”. Uma imagem decodificada no DPB pode ser marcada como “não usada para referência” ou “usada para referência”, mas apenas uma dentre essas duas a qualquer dado momento durante a operação do processo de decodificação. A atribuição de uma dentre essas marcações a uma imagem remove implicitamente outra dentre essas marcações quando aplicável. Quando a imagem atual é uma imagem IRAP, todas as imagens de referência atualmente no DPB (se houver) são marcadas como “não usadas para referência”. As imagens de referência no DPB são identificadas pelos Log2( MaxRefPicOrderCntLsb ) LSBs de seus valores PicOrderCntVal. Cada imagem de referência no DPB que não é referida por qualquer entrada em RefPicList[ 0 ] ou RefPicList[ 1 ] é marcada como “não usada para referência”.
[0342] Ainda outra modalidade alternativa.
[0343] Esta seção descreve uma modalidade alternativa à abordagem especificada acima que é denominada “sempre sinalizar listas de imagens de referência em cabeçalhos de fatia com diferenciação entre imagens de referência de curto prazo e de longo prazo”. Nesta modalidade alternativa, no cabeçalho de fatia, um ciclo de POC MSB pode ser sinalizado para cada entrada de LTRP, de modo similar a HEVC ou às abordagens descritas acima, e a seguinte restrição é removida: A qualquer momento durante o processo de decodificação, os valores de PicOrderCntVal & ( MaxLtPicOrderCntLsb − 1 ) para quaisquer duas imagens de referência no DPB não devem ser iguais.
[0344] A Figura 6 é um diagrama esquemático de um dispositivo de codificação de vídeo 600 (por exemplo, um codificador de vídeo 20 ou um decodificador de vídeo 30) de acordo com uma modalidade da revelação. O dispositivo de codificação de vídeo 600 é adequado para implantar as modalidades reveladas conforme descrito no presente documento. O dispositivo de codificação de vídeo 600 compreende portas de ingresso 610 e unidades receptoras (Rx) 620 para receber dados; um processador, unidade lógica ou unidade central de processamento (CPU) 630 para processar os dados; unidades transmissoras (Tx) 640 e portas de egresso 650 para transmitir os dados; e uma memória 660 para armazenar os dados. O dispositivo de codificação de vídeo 600 também pode compreender componentes ópticos para elétricos (OE) e componentes elétricos para ópticos (EO) acoplados às portas de ingresso 610, às unidades receptoras 620, às unidades transmissoras 640 e às portas de egresso 650 para egresso ou ingresso de sinais ópticos ou elétricos.
[0345] O processador 630 é implantado por hardware e software. O processador 630 pode ser implantado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), arranjos de portas programáveis em campo (FPGAs), circuitos integrados de aplicação específica (ASICs) e processadores de sinal digital (DSPs). O processador 630 está em comunicação com as portas de ingresso 610, unidades receptoras 620, unidades transmissoras 640, portas de egresso 650 e memória 660. O processador 630 compreende um módulo de codificação 670. O módulo de codificação 670 implanta as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 670 implanta, processa, prepara ou fornece as várias funções de rede. A inclusão do módulo de codificação 670 fornece, portanto, um aperfeiçoamento substancial à funcionalidade do dispositivo de codificação de vídeo 600 e efetua uma transformação do dispositivo de codificação de vídeo 600 para um estado diferente. De modo alternativo, o módulo de codificação 670 é implantado como instruções armazenadas na memória 660 e executadas pelo processador 630.
[0346] O dispositivo de codificação de vídeo 600 também pode incluir dispositivos de entrada e/ou saída (I/O) 680 para comunicar dados a partir de e para um usuário. Os dispositivos de I/O 680 podem incluir dispositivos de saída, tais como um visor para exibir dados de vídeo, alto-falantes para emitir dados de áudio, etc. Os dispositivos de I/O 680 também podem incluir dispositivos de entrada, tais como um teclado, mouse, trackball, etc., e/ou interfaces correspondentes para interagir com tais dispositivos de saída.
[0347] A memória 660 compreende um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de sobrefluxo, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante a execução de programa. A memória 660 pode ser volátil e/ou não volátil e pode ser memória somente leitura (ROM), memória de acesso aleatório (RAM), memória ternária de conteúdo endereçável (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[0348] A Figura 7 é um diagrama esquemático de uma modalidade de um meio para codificação 700. Em modalidade, o meio para codificação 700 é implantado em um dispositivo de codificação de vídeo 702 (por exemplo, um codificador de vídeo 20 ou um decodificador de vídeo 30). O dispositivo de codificação de vídeo 702 inclui meio de recebimento 701. O meio de recebimento 701 é configurado para receber uma imagem para codificar ou receber um fluxo de bits para decodificar. O dispositivo de codificação de vídeo 702 inclui meio de transmissão 707 acoplado ao meio de recebimento 701. O meio de transmissão 707 é configurado para transmitir o fluxo de bits para um decodificador ou transmitir uma imagem decodificada para um meio de exibição (por exemplo, um dentre os dispositivos de I/O 680).
[0349] O dispositivo de codificação de vídeo 702 inclui um meio de armazenamento 703. O meio de armazenamento 703 é acoplado a pelo menos um dentre o meio de recebimento 701 ou o meio de transmissão 707. O meio de armazenamento 703 é configurado para armazenar instruções. O dispositivo de codificação de vídeo 702 também inclui meio de processamento 705. O meio de processamento 705 é acoplado ao meio de armazenamento 703. O meio de processamento 705 é configurado para executar as instruções armazenadas no meio de armazenamento 703 para realizar os métodos revelados na presente invenção.
[0350] Embora diversas modalidades tenham sido fornecidas na presente revelação, deve-se entender que os sistemas e métodos revelados podem ser incorporados em muitas outras formas específicas sem se afastar do espírito ou escopo da presente revelação. Os presentes exemplos devem ser considerados como ilustrativos e não restritivos, e a intenção não deve ser limitada aos detalhes fornecidos no presente documento. Por exemplo, os vários elementos ou componentes podem ser combinados ou integrados em outro sistema ou determinados recursos podem ser omitidos, ou não implantados.
[0351] Além disso, técnicas, sistemas, subsistemas e métodos descritos e ilustrados nas várias modalidades como discretos ou separados podem ser combinados ou integrados a outros sistemas, módulos, técnicas ou métodos sem se afastar do escopo da presente revelação. Outros itens mostrados ou discutidos como acoplados ou diretamente acoplados ou que se comunicam um com o outro podem ser acoplados indiretamente ou se comunicar através de alguma interface, dispositivo ou componente intermediário, seja de modo elétrico, mecânico ou de outro modo. Outros exemplos de mudanças, substituições e alterações são verificados pelos versados na técnica e podem ser realizados sem se afastar do espírito e escopo revelados no presente documento.
Claims (20)
1. Método de decodificação de um fluxo de bits de vídeo codificado implantado por um decodificador de vídeo, CARACTERIZADO pelo fato de que o método compreende: obter uma estrutura de sintaxe de primeira lista de imagens de referência e uma estrutura de sintaxe de segunda lista de imagens de referência representadas no fluxo de bits de vídeo codificado, em que cada estrutura de sintaxe de lista de imagens de referência contém um número de entradas; derivar, com base na estrutura de sintaxe de primeira lista de imagens de referência e na estrutura de sintaxe de segunda lista de imagens de referência, uma primeira lista de imagens de referência de uma fatia atual e uma segunda lista de imagens de referência da fatia atual, em que a fatia atual compreende uma fatia intra (I), uma fatia unipreditiva (P), ou uma fatia bipreditiva (B).
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o método compreende adicionalmente: obter pelo menos um bloco reconstruído da fatia atual após derivação da primeira lista de imagens de referência e da segunda lista de imagens de referência.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que uma ordem de entradas na estrutura de sintaxe de primeira lista de imagens de referência ou na estrutura de sintaxe de segunda lista de imagens de referência é igual a uma ordem de imagens de referência correspondentes na lista de imagens de referência correspondente, em que cada entrada na estrutura de sintaxe de primeira lista de imagens de referência descreve uma imagem de referência correspondente na primeira lista de imagens de referência, e cada entrada na estrutura de sintaxe de segunda lista de imagens de referência descreve uma imagem de referência correspondente na segunda lista de imagens de referência.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, CARACTERIZADO pelo fato de que o pelo menos um bloco reconstruído é usado para gerar uma imagem exibida em um visor de um dispositivo eletrônico.
5. Método, de acordo com qualquer uma das reivindicações 1 a 4, CARACTERIZADO pelo fato de que a lista de imagens de referência compreende uma lista de imagens de referência usada para predição inter do pelo menos um bloco reconstruído.
6. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a fatia atual é a fatia I ou a fatia P.
7. Dispositivo de decodificação, CARACTERIZADO pelo fato de que compreende: um receptor configurado para receber um fluxo de bits de vídeo codificado; uma memória acoplada ao receptor, a memória armazenando instruções; e um processador acoplado à memória, o processador configurado para executar as instruções armazenadas na memória para levar o processador a: obter uma estrutura de sintaxe de primeira lista de imagens de referência e uma estrutura de sintaxe de segunda lista de imagens de referência representadas no fluxo de bits de vídeo codificado, em que cada estrutura de sintaxe de lista de imagens de referência contém um número de entradas; derivar, com base na estrutura de sintaxe de primeira lista de imagens de referência e na estrutura de sintaxe de segunda lista de imagens de referência, uma primeira lista de imagens de referência de uma fatia atual e uma segunda lista de imagens de referência da fatia atual, em que a fatia atual compreende uma fatia intra (I), uma fatia unipreditiva (P), ou uma fatia bipreditiva (B).
8. Dispositivo de decodificação, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que o processador é adicionalmente configurado para executar as instruções armazenadas na memória para levar o processador a obter pelo menos um bloco reconstruído da fatia atual após derivação da primeira lista de imagens de referência e da segunda lista de imagens de referência.
9. Dispositivo de decodificação, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que compreende adicionalmente um visor configurado para exibir uma imagem com base no pelo menos um bloco reconstruído.
10. Método de codificação de um fluxo de bits de vídeo codificado implantado por um codificador de vídeo, CARACTERIZADO pelo fato de que o método compreende:
construir uma primeira lista de imagens de referência e uma segunda lista de imagens de referência para uma fatia atual, em que a fatia atual compreende uma fatia intra (I), uma fatia unipreditiva (P), ou uma fatia bipreditiva (B); codificar uma estrutura de sintaxe de primeira lista de imagens de referência e uma estrutura de sintaxe de segunda lista de imagens de referência para a fatia atual no fluxo de bits de vídeo codificado, em que a estrutura de sintaxe de primeira lista de imagens de referência contém um número de entradas usadas para derivar as entradas na primeira lista de imagens de referência, e a estrutura de sintaxe de segunda lista de imagens de referência contém um número de entradas usadas para derivar as entradas na segunda lista de imagens de referência.
11. Dispositivo de codificação, CARACTERIZADO pelo fato de que compreende: uma memória acoplada ao receptor, a memória armazenando instruções; e um processador acoplado à memória, o processador configurado para executar as instruções armazenadas na memória para levar o processador a: construir uma primeira lista de imagens de referência e uma segunda lista de imagens de referência para uma fatia atual, em que a fatia atual compreende uma fatia intra (I), uma fatia unipreditiva (P), ou uma fatia bipreditiva (B); codificar uma estrutura de sintaxe de primeira lista de imagens de referência e uma estrutura de sintaxe de segunda lista de imagens de referência para a fatia atual no fluxo de bits de vídeo codificado, em que a estrutura de sintaxe de primeira lista de imagens de referência contém um número de entradas usadas para derivar as entradas na primeira lista de imagens de referência, e a estrutura de sintaxe de segunda lista de imagens de referência contém um número de entradas usadas para derivar as entradas na segunda lista de imagens de referência.
12. Aparelho de codificação, CARACTERIZADO pelo fato de que compreende: um receptor configurado para receber um fluxo de bits para decodificar; um transmissor acoplado ao receptor, o transmissor configurado para transmitir uma imagem decodificada a um visor; uma memória acoplada a pelo menos um dentre o receptor ou o transmissor, a memória configurada para armazenar instruções; e um processador acoplado à memória, o processador configurado para executar as instruções armazenadas na memória para realizar o método conforme definido em qualquer uma das reivindicações 1 a 6 ou reivindicação 10.
13. Sistema, CARACTERIZADO pelo fato de que compreende: um codificador, em que o codificador inclui o dispositivo de decodificação ou o aparelho de codificação conforme definido na reivindicação 11; e um decodificador em comunicação com o codificador, em que o decodificador inclui o dispositivo de decodificação ou o aparelho de codificação conforme definido em qualquer uma das reivindicações 7 a 9.
14. Meio para codificação, CARACTERIZADO pelo fato de que compreende: meio de recebimento configurado para receber um fluxo de bits para decodificar; meio de transmissão acoplado ao meio de recebimento, o meio de transmissão configurado para transmitir uma imagem decodificada para um meio de exibição; meio de armazenamento acoplado a pelo menos um dentre o meio de recebimento ou o meio de transmissão, o meio de armazenamento configurado para armazenar instruções; e meio de processamento acoplado ao meio de armazenamento, o meio de processamento configurado para executar as instruções armazenadas no meio de armazenamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 6 ou reivindicação 10.
15. Codificador, CARACTERIZADO pelo fato de que compreende circuitos de processamento para realizar o método conforme definido na reivindicação 10.
16. Decodificador, CARACTERIZADO pelo fato de que compreende circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 6.
17. Produto de programa de computador, CARACTERIZADO pelo fato de que compreende código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 6 quando executado em um computador ou em um processador.
18. Produto de programa de computador, CARACTERIZADO pelo fato de que compreende código de programa para realizar o método conforme definido na reivindicação 10 quando executado em um computador ou em um processador.
19. Mídia legível por computador não transitória, CARACTERIZADA pelo fato de que porta um código de programa que, quando executado por um dispositivo de computador, leva o dispositivo de computador a realizar o método conforme definido em qualquer uma das reivindicações 1 a 6.
20. Mídia legível por computador não transitória, CARACTERIZADA pelo fato de que porta um código de programa que, quando executado por um dispositivo de computador, leva o dispositivo de computador a realizar o método conforme definido na reivindicação 10.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862719360P | 2018-08-17 | 2018-08-17 | |
US62/719,360 | 2018-08-17 | ||
PCT/US2019/046932 WO2020037276A1 (en) | 2018-08-17 | 2019-08-16 | Reference picture management in video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112021002491A2 true BR112021002491A2 (pt) | 2021-08-10 |
Family
ID=69525847
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112021002486-7A BR112021002486A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagens de referência em codificação de vídeo |
BR112021002832-3A BR112021002832A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagem de referência em codificação de vídeo |
BR112021002501-4A BR112021002501A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagens de referência em codificação de vídeo |
BR112021002499-9A BR112021002499A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagens de referência em codificação de vídeo |
BR112021002483-2A BR112021002483A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagens de referência em codificação de vídeo |
BR112021002491-3A BR112021002491A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagens de referência em codificação de vídeo |
Family Applications Before (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112021002486-7A BR112021002486A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagens de referência em codificação de vídeo |
BR112021002832-3A BR112021002832A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagem de referência em codificação de vídeo |
BR112021002501-4A BR112021002501A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagens de referência em codificação de vídeo |
BR112021002499-9A BR112021002499A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagens de referência em codificação de vídeo |
BR112021002483-2A BR112021002483A2 (pt) | 2018-08-17 | 2019-08-16 | gerenciamento de imagens de referência em codificação de vídeo |
Country Status (24)
Country | Link |
---|---|
US (11) | US11758123B2 (pt) |
EP (7) | EP4336832A3 (pt) |
JP (13) | JP7278366B2 (pt) |
KR (12) | KR102609949B1 (pt) |
CN (13) | CN114501018B (pt) |
AU (1) | AU2019322914B2 (pt) |
BR (6) | BR112021002486A2 (pt) |
CA (1) | CA3109799C (pt) |
CL (1) | CL2021000397A1 (pt) |
DK (1) | DK3831064T3 (pt) |
ES (1) | ES2981233T3 (pt) |
FI (1) | FI3831064T3 (pt) |
HU (1) | HUE066343T2 (pt) |
IL (1) | IL280944B1 (pt) |
MX (8) | MX2021001838A (pt) |
NZ (1) | NZ773625A (pt) |
PH (1) | PH12021550312A1 (pt) |
PL (1) | PL3831064T3 (pt) |
PT (1) | PT3831064T (pt) |
SG (6) | SG11202101404WA (pt) |
SI (1) | SI3831064T1 (pt) |
UA (1) | UA128290C2 (pt) |
WO (6) | WO2020037276A1 (pt) |
ZA (1) | ZA202100951B (pt) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3780608A4 (en) * | 2018-04-02 | 2021-12-01 | SZ DJI Technology Co., Ltd. | IMAGE PROCESSING PROCESS AND IMAGE PROCESSING DEVICE |
CN114501018B (zh) | 2018-08-17 | 2024-01-09 | 华为技术有限公司 | 参考图像管理的解码方法、设备和系统 |
EP3854099A4 (en) * | 2018-09-21 | 2022-06-29 | Sharp Kabushiki Kaisha | Systems and methods for signaling reference pictures in video coding |
WO2020122062A1 (en) * | 2018-12-10 | 2020-06-18 | Sharp Kabushiki Kaisha | Systems and methods for signaling reference pictures in video coding |
CN113597768B (zh) * | 2019-01-28 | 2024-10-15 | Op方案有限责任公司 | 扩展长期参考图片保留的在线和离线选择 |
US11395006B2 (en) * | 2019-03-06 | 2022-07-19 | Tencent America LLC | Network abstraction layer unit header |
KR20220156828A (ko) | 2020-03-19 | 2022-11-28 | 바이트댄스 아이엔씨 | 레퍼런스 픽처 순서에 대한 제약들 |
BR112022019661A2 (pt) * | 2020-03-31 | 2022-11-29 | Sharp Kk | Aparelho de decodificação de vídeo, aparelho de codificação de vídeo, método de decodificação de vídeo e método de codificação de vídeo |
US11558630B2 (en) | 2020-05-20 | 2023-01-17 | Tencent America LLC | Techniques for random access point indication and picture output in coded video stream |
AU2021257907B2 (en) * | 2020-05-20 | 2023-04-06 | Tencent America LLC | Techniques for random access point indication and picture output in coded video stream |
EP4154414A4 (en) | 2020-05-21 | 2024-06-26 | Alibaba Group Holding Limited | METHODS FOR REFERENCE IMAGE PROCESSING IN VIDEO CODING |
US11695938B2 (en) * | 2021-01-05 | 2023-07-04 | Dish Network Technologies India Private Limited | Method and apparatus for thumbnail generation for a video device |
CN116781907A (zh) * | 2022-03-11 | 2023-09-19 | 华为技术有限公司 | 编解码方法及电子设备 |
WO2023234133A1 (en) * | 2022-05-31 | 2023-12-07 | Sharp Kabushiki Kaisha | Systems and methods for signaling reference picture list entry information in video coding |
WO2024126057A1 (en) * | 2022-12-16 | 2024-06-20 | Interdigital Ce Patent Holdings, Sas | Reference picture marking process based on temporal identifier |
Family Cites Families (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1875637A (zh) * | 2003-08-26 | 2006-12-06 | 汤姆森特许公司 | 最小化用于相互编码的参考画面数目的方法和装置 |
FI115589B (fi) * | 2003-10-14 | 2005-05-31 | Nokia Corp | Redundanttien kuvien koodaaminen ja dekoodaaminen |
US8948256B2 (en) * | 2006-10-13 | 2015-02-03 | Thomson Licensing | Reference picture list management syntax for multiple view video coding |
WO2010086500A1 (en) | 2009-01-28 | 2010-08-05 | Nokia Corporation | Method and apparatus for video coding and decoding |
CN102047670B (zh) * | 2009-03-26 | 2014-03-12 | 松下电器产业株式会社 | 编码装置及方法、错误检测装置及方法、解码装置及方法 |
US20120050475A1 (en) * | 2009-05-01 | 2012-03-01 | Dong Tian | Reference picture lists for 3dv |
KR101752418B1 (ko) | 2010-04-09 | 2017-06-29 | 엘지전자 주식회사 | 비디오 신호 처리 방법 및 장치 |
US9008176B2 (en) * | 2011-01-22 | 2015-04-14 | Qualcomm Incorporated | Combined reference picture list construction for video coding |
US8934552B2 (en) | 2011-03-31 | 2015-01-13 | Qualcomm Incorporated | Combined reference picture list construction and mapping |
US20140050270A1 (en) | 2011-04-26 | 2014-02-20 | Lg Electronics Inc. | Method for managing a reference picture list, and apparatus using same |
PL3410725T3 (pl) * | 2011-06-30 | 2022-02-21 | Telefonaktiebolaget Lm Ericsson (Publ) | Sygnalizacja obrazu referencyjnego |
US9521418B2 (en) | 2011-07-22 | 2016-12-13 | Qualcomm Incorporated | Slice header three-dimensional video extension for slice header prediction |
US9131245B2 (en) | 2011-09-23 | 2015-09-08 | Qualcomm Incorporated | Reference picture list construction for video coding |
MX337446B (es) | 2011-09-29 | 2016-03-07 | Sharp Kk | Dispositivo de decodificacion de imagenes, metodo de decodificacion de imagenes y dispositivo de codificacion de imagenes. |
US9451284B2 (en) * | 2011-10-10 | 2016-09-20 | Qualcomm Incorporated | Efficient signaling of reference picture sets |
JP5768662B2 (ja) * | 2011-10-31 | 2015-08-26 | 富士通株式会社 | 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム |
US9264717B2 (en) * | 2011-10-31 | 2016-02-16 | Qualcomm Incorporated | Random access with advanced decoded picture buffer (DPB) management in video coding |
US10003817B2 (en) * | 2011-11-07 | 2018-06-19 | Microsoft Technology Licensing, Llc | Signaling of state information for a decoded picture buffer and reference picture lists |
US20130114710A1 (en) * | 2011-11-08 | 2013-05-09 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video by prediction using reference picture list, and method and apparatus for decoding video by performing compensation using reference picture list |
EP3576412B1 (en) * | 2011-11-08 | 2021-09-01 | Nokia Technologies Oy | Reference picture handling |
KR102332492B1 (ko) * | 2011-11-11 | 2021-12-01 | 엘지전자 주식회사 | 영상 정보 전송 방법 및 장치와 이를 이용한 복호화 방법 및 장치 |
BR112014012006A2 (pt) * | 2011-11-18 | 2017-05-30 | Motorola Mobility Llc | uma forma explícita para sinalizar uma imagem colocalizada para codificação de vídeo de alta eficiência (hevc) |
US9392235B2 (en) | 2011-11-18 | 2016-07-12 | Google Technology Holdings LLC | Explicit way for signaling a collocated reference picture for video coding |
US9485503B2 (en) * | 2011-11-18 | 2016-11-01 | Qualcomm Incorporated | Inside view motion prediction among texture and depth view components |
US9258559B2 (en) * | 2011-12-20 | 2016-02-09 | Qualcomm Incorporated | Reference picture list construction for multi-view and three-dimensional video coding |
JP5944013B2 (ja) * | 2012-01-17 | 2016-07-05 | テレフオンアクチーボラゲット エルエム エリクソン(パブル) | 参照画像リストの取り扱い |
US8867852B2 (en) * | 2012-01-19 | 2014-10-21 | Sharp Kabushiki Kaisha | Decoding a picture based on a reference picture set on an electronic device |
US20130188709A1 (en) | 2012-01-25 | 2013-07-25 | Sachin G. Deshpande | Video decoder for tiles with absolute signaling |
KR101652928B1 (ko) * | 2012-01-31 | 2016-09-01 | 브이아이디 스케일, 인크. | 스케일러블 고효율 비디오 코딩(hevc)을 위한 참조 픽처 세트(rps) 시그널링 |
US9369710B2 (en) * | 2012-02-06 | 2016-06-14 | Qualcomm Incorporated | Reference picture list modification for video coding |
US20150071351A1 (en) * | 2012-04-15 | 2015-03-12 | Samsung Electronics Co., Ltd. | Inter prediction method in which reference picture lists can be changed and apparatus for the same |
WO2013162980A2 (en) * | 2012-04-23 | 2013-10-31 | Google Inc. | Managing multi-reference picture buffers for video data coding |
EP2843946A4 (en) | 2012-04-25 | 2016-01-20 | Samsung Electronics Co Ltd | MULTILOSYVIEW VIDEO COORDINATION METHOD USING A REFERENCE FILMS FOR MULTILOOK VIEW VIEW AND DEVICE THEREFOR, AND MULTIPLE VIDEO VIDEO CODING METHODS USING A REFERENCE FILMS FOR MULTILOOK VIEWS AND METHOD THEREFOR |
US9762903B2 (en) | 2012-06-01 | 2017-09-12 | Qualcomm Incorporated | External pictures in video coding |
US9319679B2 (en) * | 2012-06-07 | 2016-04-19 | Qualcomm Incorporated | Signaling data for long term reference pictures for video coding |
US9591303B2 (en) | 2012-06-28 | 2017-03-07 | Qualcomm Incorporated | Random access and signaling of long-term reference pictures in video coding |
US10230972B2 (en) | 2012-07-01 | 2019-03-12 | Sharp Kabushiki Kaisha | Device for signaling a long-term reference picture in a parameter set |
WO2014008402A1 (en) * | 2012-07-05 | 2014-01-09 | Vid Scale, Inc. | Layer dependency and priority signaling design for scalable video coding |
US9167248B2 (en) * | 2012-07-13 | 2015-10-20 | Qualcomm Incorporated | Reference picture list modification for video coding |
US9398284B2 (en) * | 2012-08-16 | 2016-07-19 | Qualcomm Incorporated | Constructing reference picture lists for multi-view or 3DV video coding |
US9584825B2 (en) * | 2012-09-27 | 2017-02-28 | Qualcomm Incorporated | Long-term reference picture signaling in video coding |
KR102431453B1 (ko) * | 2012-11-21 | 2022-08-11 | 엘지전자 주식회사 | 영상 디코딩 방법 및 이를 이용하는 장치 |
US9992513B2 (en) | 2012-12-21 | 2018-06-05 | Sony Corporation | Image processing efficient transmission or reception of encoded information |
US20150326866A1 (en) | 2012-12-28 | 2015-11-12 | Sharp Kabushiki Kaisha | Image decoding device and data structure |
JP6209772B2 (ja) * | 2013-01-15 | 2017-10-11 | 華為技術有限公司Huawei Technologies Co.,Ltd. | シグナリングを用いたビデオデコーダ |
EP2982123A4 (en) * | 2013-04-05 | 2016-09-07 | Sharp Kk | DECODING INTERMEDIATE REFERENCE IMAGE SETS AND CONSTRUCTING REFERENCE PICTURES |
US9532067B2 (en) * | 2013-04-05 | 2016-12-27 | Sharp Kabushiki Kaisha | Decoding of inter-layer reference picture set and reference picture list construction |
WO2015006922A1 (en) * | 2013-07-16 | 2015-01-22 | Mediatek Singapore Pte. Ltd. | Methods for residual prediction |
US9860529B2 (en) | 2013-07-16 | 2018-01-02 | Qualcomm Incorporated | Processing illumination compensation for video coding |
US9560358B2 (en) * | 2013-07-22 | 2017-01-31 | Qualcomm Incorporated | Device and method for scalable coding of video information |
US9894369B2 (en) | 2013-07-30 | 2018-02-13 | Kt Corporation | Image encoding and decoding method supporting plurality of layers and apparatus using same |
CN105453564B (zh) * | 2013-07-30 | 2019-05-10 | 株式会社Kt | 支持多个层的图像编码和解码方法以及使用该方法的装置 |
EP3056008A4 (en) | 2013-10-10 | 2017-03-22 | Sharp Kabushiki Kaisha | Alignment of picture order count |
US9942546B2 (en) * | 2013-12-12 | 2018-04-10 | Qualcomm Incorporated | POC value design for multi-layer video coding |
US10110925B2 (en) | 2014-01-03 | 2018-10-23 | Hfi Innovation Inc. | Method of reference picture selection and signaling in 3D and multi-view video coding |
US9912966B2 (en) | 2014-01-03 | 2018-03-06 | Nokia Technologies Oy | Parameter set coding |
US10432928B2 (en) | 2014-03-21 | 2019-10-01 | Qualcomm Incorporated | Using a current picture as a reference for video coding |
US9756355B2 (en) * | 2014-06-20 | 2017-09-05 | Qualcomm Incorporated | Value ranges for syntax elements in video coding |
US10412387B2 (en) | 2014-08-22 | 2019-09-10 | Qualcomm Incorporated | Unified intra-block copy and inter-prediction |
KR20170066457A (ko) * | 2014-09-26 | 2017-06-14 | 브이아이디 스케일, 인크. | 시간적 블록 벡터 예측을 갖는 인트라 블록 카피 코딩 |
US9918105B2 (en) | 2014-10-07 | 2018-03-13 | Qualcomm Incorporated | Intra BC and inter unification |
GB2531271A (en) * | 2014-10-14 | 2016-04-20 | Nokia Technologies Oy | An apparatus, a method and a computer program for image sequence coding and decoding |
AU2016253924B2 (en) * | 2015-04-29 | 2018-11-01 | Hfi Innovation Inc. | Method and apparatus for intra block copy reference list construction |
EP3292691A4 (en) | 2015-05-29 | 2019-01-23 | HFI Innovation Inc. | METHOD FOR MANAGING DECODED IMAGE PADS FOR THE INTRA-IMAGE BLOCKS COPYING METHOD |
US10638140B2 (en) * | 2015-05-29 | 2020-04-28 | Qualcomm Incorporated | Slice level intra block copy and other video coding improvements |
US10516891B2 (en) * | 2015-11-20 | 2019-12-24 | Intel Corporation | Method and system of reference frame caching for video coding |
US10555002B2 (en) | 2016-01-21 | 2020-02-04 | Intel Corporation | Long term reference picture coding |
US10652571B2 (en) | 2018-01-25 | 2020-05-12 | Qualcomm Incorporated | Advanced motion vector prediction speedups for video coding |
CN114501018B (zh) * | 2018-08-17 | 2024-01-09 | 华为技术有限公司 | 参考图像管理的解码方法、设备和系统 |
KR20240032173A (ko) | 2018-09-12 | 2024-03-08 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 참조 화상 목록 구조에 대한 후보 시그널링 |
WO2020122062A1 (en) | 2018-12-10 | 2020-06-18 | Sharp Kabushiki Kaisha | Systems and methods for signaling reference pictures in video coding |
WO2020185959A1 (en) * | 2019-03-11 | 2020-09-17 | Futurewei Technologies, Inc. | Gradual decoding refresh in video coding |
US10986353B2 (en) * | 2019-03-15 | 2021-04-20 | Tencent America LLC | Decoded picture buffer management for video coding |
KR102653570B1 (ko) | 2019-05-12 | 2024-04-02 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 참조 픽처 리샘플링을 위한 신호 |
US11418813B2 (en) | 2019-09-20 | 2022-08-16 | Tencent America LLC | Signaling of inter layer prediction in video bitstream |
CN114600462A (zh) | 2019-10-25 | 2022-06-07 | 夏普株式会社 | 用于在视频编码中发送信号通知图片信息的系统和方法 |
US12088848B2 (en) * | 2019-12-11 | 2024-09-10 | Sharp Kabushiki Kaisha | Systems and methods for signaling output layer set information in video coding |
EP4088462A4 (en) * | 2020-02-14 | 2023-05-24 | Beijing Bytedance Network Technology Co., Ltd. | SUBPICTURE INFORMATION SIGNALING IN VIDEO BITSTREAM |
US11496771B2 (en) | 2020-02-24 | 2022-11-08 | Qualcomm Incorporated | Reference picture list and collocated picture signaling in video coding |
AR121127A1 (es) | 2020-02-29 | 2022-04-20 | Beijing Bytedance Network Tech Co Ltd | Señalización de información de imagen de referencia en un flujo de bits de video |
US11743503B2 (en) | 2020-05-14 | 2023-08-29 | Qualcomm Incorporated | Reference picture list constraints and signaling in video coding |
EP4154414A4 (en) * | 2020-05-21 | 2024-06-26 | Alibaba Group Holding Limited | METHODS FOR REFERENCE IMAGE PROCESSING IN VIDEO CODING |
EP4140140A4 (en) * | 2020-05-21 | 2023-07-05 | ByteDance Inc. | PROGRESSIVE DECODING REFRESH SIGNALING AND REFERENCE PICTURE LISTS |
CN115668949A (zh) * | 2020-05-26 | 2023-01-31 | 字节跳动有限公司 | 编解码视频中的帧间层参考图片的标识 |
WO2021239085A1 (en) * | 2020-05-28 | 2021-12-02 | Beijing Bytedance Network Technology Co., Ltd. | Reference picture list signaling in video coding |
US11882270B2 (en) * | 2020-06-09 | 2024-01-23 | Hfi Innovation Inc. | Method and apparatus for video coding with constraints on reference picture lists of a RADL picture |
JP2023068781A (ja) | 2021-11-04 | 2023-05-18 | 株式会社日立製作所 | 異常検出装置、異常検出システム、及び異常検出方法 |
-
2019
- 2019-08-16 CN CN202111390366.0A patent/CN114501018B/zh active Active
- 2019-08-16 BR BR112021002486-7A patent/BR112021002486A2/pt unknown
- 2019-08-16 JP JP2021507958A patent/JP7278366B2/ja active Active
- 2019-08-16 WO PCT/US2019/046932 patent/WO2020037276A1/en unknown
- 2019-08-16 UA UAA202101321A patent/UA128290C2/uk unknown
- 2019-08-16 CN CN202111341982.7A patent/CN114584774B/zh active Active
- 2019-08-16 EP EP23210671.6A patent/EP4336832A3/en active Pending
- 2019-08-16 KR KR1020217007340A patent/KR102609949B1/ko active IP Right Grant
- 2019-08-16 KR KR1020247012883A patent/KR20240058947A/ko active Application Filing
- 2019-08-16 KR KR1020237041442A patent/KR20230165889A/ko active Application Filing
- 2019-08-16 SG SG11202101404WA patent/SG11202101404WA/en unknown
- 2019-08-16 CN CN201980053796.8A patent/CN112567744A/zh active Pending
- 2019-08-16 DK DK19850047.2T patent/DK3831064T3/da active
- 2019-08-16 CN CN202111390353.3A patent/CN114697663B/zh active Active
- 2019-08-16 SG SG11202100647TA patent/SG11202100647TA/en unknown
- 2019-08-16 AU AU2019322914A patent/AU2019322914B2/en active Active
- 2019-08-16 JP JP2021507913A patent/JP7223118B2/ja active Active
- 2019-08-16 IL IL280944A patent/IL280944B1/en unknown
- 2019-08-16 CN CN201980053797.2A patent/CN112567746A/zh active Pending
- 2019-08-16 BR BR112021002832-3A patent/BR112021002832A2/pt unknown
- 2019-08-16 KR KR1020237041439A patent/KR20230170122A/ko active Application Filing
- 2019-08-16 EP EP19850236.1A patent/EP3831070A4/en active Pending
- 2019-08-16 WO PCT/US2019/046934 patent/WO2020037278A1/en active Application Filing
- 2019-08-16 BR BR112021002501-4A patent/BR112021002501A2/pt unknown
- 2019-08-16 BR BR112021002499-9A patent/BR112021002499A2/pt unknown
- 2019-08-16 KR KR1020217007279A patent/KR102610092B1/ko active IP Right Grant
- 2019-08-16 EP EP19850149.6A patent/EP3831055A4/en active Pending
- 2019-08-16 NZ NZ773625A patent/NZ773625A/en unknown
- 2019-08-16 KR KR1020237041433A patent/KR20230169439A/ko active Application Filing
- 2019-08-16 CN CN202111341983.1A patent/CN114584775B/zh active Active
- 2019-08-16 JP JP2021507940A patent/JP7556846B2/ja active Active
- 2019-08-16 CN CN202111289546.XA patent/CN114554196B/zh active Active
- 2019-08-16 KR KR1020217007234A patent/KR102610093B1/ko active IP Right Grant
- 2019-08-16 EP EP19850378.1A patent/EP3831057A4/en active Pending
- 2019-08-16 SI SI201930747T patent/SI3831064T1/sl unknown
- 2019-08-16 MX MX2021001838A patent/MX2021001838A/es unknown
- 2019-08-16 HU HUE19850047A patent/HUE066343T2/hu unknown
- 2019-08-16 CN CN201980054198.2A patent/CN112585973A/zh active Pending
- 2019-08-16 EP EP19850047.2A patent/EP3831064B1/en active Active
- 2019-08-16 JP JP2021507956A patent/JP2021534676A/ja active Pending
- 2019-08-16 WO PCT/US2019/046927 patent/WO2020037272A1/en unknown
- 2019-08-16 SG SG11202101406PA patent/SG11202101406PA/en unknown
- 2019-08-16 MX MX2021001745A patent/MX2021001745A/es unknown
- 2019-08-16 CN CN201980054208.2A patent/CN113141784A/zh active Pending
- 2019-08-16 KR KR1020217007257A patent/KR102610089B1/ko active IP Right Grant
- 2019-08-16 KR KR1020217007129A patent/KR102659936B1/ko active IP Right Grant
- 2019-08-16 KR KR1020217007184A patent/KR102610094B1/ko active IP Right Grant
- 2019-08-16 JP JP2021507884A patent/JP7547319B2/ja active Active
- 2019-08-16 ES ES19850047T patent/ES2981233T3/es active Active
- 2019-08-16 KR KR1020237041409A patent/KR20230169435A/ko active Application Filing
- 2019-08-16 SG SG11202101407QA patent/SG11202101407QA/en unknown
- 2019-08-16 BR BR112021002483-2A patent/BR112021002483A2/pt unknown
- 2019-08-16 EP EP19849559.0A patent/EP3831054A4/en active Pending
- 2019-08-16 WO PCT/US2019/046933 patent/WO2020037277A1/en unknown
- 2019-08-16 CN CN201980054199.7A patent/CN112585974A/zh active Pending
- 2019-08-16 WO PCT/US2019/046929 patent/WO2020037274A1/en unknown
- 2019-08-16 FI FIEP19850047.2T patent/FI3831064T3/fi active
- 2019-08-16 SG SG11202100648RA patent/SG11202100648RA/en unknown
- 2019-08-16 EP EP19850237.9A patent/EP3831056A4/en active Pending
- 2019-08-16 WO PCT/US2019/046928 patent/WO2020037273A1/en unknown
- 2019-08-16 SG SG11202101399VA patent/SG11202101399VA/en unknown
- 2019-08-16 CN CN201980054191.0A patent/CN113412620A/zh active Pending
- 2019-08-16 CA CA3109799A patent/CA3109799C/en active Active
- 2019-08-16 CN CN202410572266.7A patent/CN118660154A/zh active Pending
- 2019-08-16 KR KR1020237041434A patent/KR20230169440A/ko active Application Filing
- 2019-08-16 MX MX2021001743A patent/MX2021001743A/es unknown
- 2019-08-16 MX MX2021001744A patent/MX2021001744A/es unknown
- 2019-08-16 PL PL19850047.2T patent/PL3831064T3/pl unknown
- 2019-08-16 CN CN202111340765.6A patent/CN114205590B/zh active Active
- 2019-08-16 JP JP2021507904A patent/JP7564090B2/ja active Active
- 2019-08-16 PT PT198500472T patent/PT3831064T/pt unknown
- 2019-08-16 BR BR112021002491-3A patent/BR112021002491A2/pt unknown
-
2021
- 2021-02-10 PH PH12021550312A patent/PH12021550312A1/en unknown
- 2021-02-11 ZA ZA2021/00951A patent/ZA202100951B/en unknown
- 2021-02-12 MX MX2024008569A patent/MX2024008569A/es unknown
- 2021-02-12 MX MX2024003663A patent/MX2024003663A/es unknown
- 2021-02-12 MX MX2024008568A patent/MX2024008568A/es unknown
- 2021-02-15 MX MX2024001656A patent/MX2024001656A/es unknown
- 2021-02-16 US US17/176,582 patent/US11758123B2/en active Active
- 2021-02-16 CL CL2021000397A patent/CL2021000397A1/es unknown
- 2021-02-16 US US17/176,594 patent/US12015761B2/en active Active
- 2021-02-16 US US17/176,595 patent/US11991349B2/en active Active
- 2021-02-16 US US17/176,551 patent/US11477438B2/en active Active
- 2021-02-16 US US17/176,566 patent/US11979553B2/en active Active
- 2021-02-16 US US17/176,579 patent/US11956420B2/en active Active
-
2022
- 2022-01-18 US US17/578,178 patent/US11997257B2/en active Active
- 2022-11-30 US US18/072,331 patent/US12058317B2/en active Active
-
2023
- 2023-02-03 JP JP2023015477A patent/JP7543461B2/ja active Active
- 2023-03-14 JP JP2023039811A patent/JP2023085317A/ja active Pending
- 2023-03-22 JP JP2023045824A patent/JP2023088995A/ja active Pending
- 2023-03-28 JP JP2023051948A patent/JP2023086737A/ja active Pending
- 2023-04-19 JP JP2023068782A patent/JP2023095887A/ja active Pending
- 2023-04-19 JP JP2023068781A patent/JP2023095886A/ja active Pending
-
2024
- 2024-01-04 JP JP2024000194A patent/JP2024032732A/ja active Pending
- 2024-02-28 US US18/590,685 patent/US20240214555A1/en active Pending
- 2024-02-29 US US18/591,673 patent/US20240259553A1/en active Pending
- 2024-03-05 US US18/596,291 patent/US20240244184A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11997257B2 (en) | Reference picture management in video coding | |
US20210195178A1 (en) | Index Signaling For Reference Picture List Structures | |
US20240130835A1 (en) | Reference Picture Management in Video Coding | |
BR122024004063A2 (pt) | Gerenciamento de imagens de referência em codificação de vídeo | |
BR122023006719B1 (pt) | Codificador de vídeo, decodificador de vídeo e métodos correspondentes |