BR112021016235A2 - Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador, meio de gravação não transitório legível por computador e método para armazenar um bitstream de um vídeo - Google Patents

Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador, meio de gravação não transitório legível por computador e método para armazenar um bitstream de um vídeo Download PDF

Info

Publication number
BR112021016235A2
BR112021016235A2 BR112021016235-6A BR112021016235A BR112021016235A2 BR 112021016235 A2 BR112021016235 A2 BR 112021016235A2 BR 112021016235 A BR112021016235 A BR 112021016235A BR 112021016235 A2 BR112021016235 A2 BR 112021016235A2
Authority
BR
Brazil
Prior art keywords
mode
flag
block
palette
bitstream
Prior art date
Application number
BR112021016235-6A
Other languages
English (en)
Inventor
Weijia Zhu
Li Zhang
Jizheng Xu
Kai Zhang
Hongbin Liu
Yue Wang
Original Assignee
Beijing Bytedance Network Technology Co., Ltd.
Bytedance Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Bytedance Network Technology Co., Ltd., Bytedance Inc. filed Critical Beijing Bytedance Network Technology Co., Ltd.
Priority claimed from PCT/CN2020/076367 external-priority patent/WO2020169103A1/en
Publication of BR112021016235A2 publication Critical patent/BR112021016235A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador, meio de gravação não transitório legível por computador e método para armazenar um bitstream de um vídeo. dispositivos, sistemas e métodos para codificação de modo de paleta são descritos. um método exemplar para processamento de vídeo inclui desempenhar uma conversão entre um bloco de uma região de vídeo de um vídeo e uma representação de bitstream do vídeo. a representação de bitstream é processada de acordo com uma primeira regra de formato que especifica se uma primeira indicação de uso de um modo de paleta é sinalizada para o bloco e uma segunda regra de formato que especifica uma posição da primeira indicação em relação a uma segunda indicação de uso de um modo de predição para o bloco.

Description

MÉTODO DE PROCESSAMENTO DE DADOS DE VÍDEO, APARELHO PARA PROCESSAR DADOS DE VÍDEO, MEIO DE ARMAZENAMENTO NÃO TRANSITÓRIO LEGÍVEL POR COMPUTADOR, MEIO DE GRAVAÇÃO NÃO TRANSITÓRIO LEGÍVEL POR COMPUTADOR E MÉTODO PARA ARMAZENAR UM BITSTREAM DE UM VÍDEO REFERÊNCIA CRUZADA PARA PEDIDOS RELACIONADOS
[001] Este pedido é a fase nacional do Pedido de Patente Internacional Nº PCT/CN2020/076367, depositado em 24 de fevereiro de 2020, o qual reivindica a prioridade e benefícios do Pedido de Patente Internacional Nº PCT/CN2019/075994, depositado em 24 de fevereiro de 2019. Todos os pedidos de patente mencionados acima são incorporados no presente pedido de patente por referência em sua totalidade.
CAMPO TÉCNICO
[002] Este presente documento está relacionado às tecnologias de codificação de vídeo e imagem.
ANTECEDENTES
[003] Vídeo digital é responsável pelo maior uso de largura de banda na Internet e em outras redes de comunicação digital. À medida que aumenta o número de dispositivos de usuário conectados capazes de receber e exibir vídeo, espera-se que a demanda de largura de banda para uso de vídeo digital continue a crescer.
SUMÁRIO
[004] As técnicas divulgadas podem ser usadas pelo decodificador de vídeo ou imagem ou modalidades de codificador para as quais a codificação por modo de paleta é usada.
[005] Em um aspecto exemplo, um método de processamento de vídeo é divulgado. O método inclui desempenhar uma conversão entre um bloco de uma região de vídeo de um vídeo e uma representação de bitstream do vídeo. A representação de bitstream é processada de acordo com uma primeira regra de formato que especifica se uma primeira indicação de uso de um modo de paleta é sinalizada para o bloco e uma segunda regra de formato que especifica uma posição da primeira indicação em relação a uma segunda indicação de uso de um modo de predição para o bloco.
[006] Em um aspecto exemplo, um método de processamento de vídeo é divulgado. O método inclui determinar, para uma conversão entre um bloco de uma região de vídeo em um vídeo e uma representação de bitstream do vídeo, um modo de predição com base em um ou mais modos de predição permitidos que incluem pelo menos um modo de paleta do bloco. Uma indicação de uso do modo de paleta é determinada de acordo com o modo de predição. O método também inclui desempenhar a conversão com base em um ou mais modos de predição permitidos.
[007] Em outro aspecto exemplo, um método de processamento de vídeo é divulgado. O método inclui desempenhar uma conversão entre um bloco de um vídeo e uma representação de bitstream do vídeo. A representação de bitstream é processada de acordo com uma regra de formato que especifica uma primeira indicação de uso de um modo de paleta e uma segunda indicação de uso de um modo de cópia de bloco intra (IBC) sinalizados dependentes um do outro.
[008] Em outro aspecto exemplo, um método de processamento de vídeo é divulgado. O método inclui determinar, para uma conversão entre um bloco de um vídeo e uma representação de bitstream do vídeo, a presença de uma indicação de uso de um modo de paleta na representação de bitstream com base em uma dimensão do bloco; e desempenhar a conversão com base na determinação.
[009] Em outro aspecto exemplo, um método de processamento de vídeo é divulgado. O método inclui determinar, para uma conversão entre um bloco de um vídeo e uma representação de bitstream do vídeo, a presença de uma indicação de uso de um modo de cópia de bloco intra (IBC) na representação de bitstream com base em uma dimensão do bloco; e desempenhar a conversão com base na determinação.
[0010] Em outro aspecto exemplo, um método de processamento de vídeo é divulgado. O método inclui determinar, para uma conversão entre um bloco de um vídeo e uma representação de bitstream do vídeo, se um modo de paleta é permitido para o bloco com base em uma segunda indicação de uma região de vídeo contendo o bloco; e desempenhar a conversão com base na determinação.
[0011] Em outro aspecto exemplo, um método de processamento de vídeo é divulgado. O método inclui determinar, para uma conversão entre um bloco de um vídeo e uma representação de bitstream do vídeo, se um modo de cópia de bloco intra (IBC) é permitido para o bloco com base em uma segunda indicação de uma região de vídeo contendo o bloco; e desempenhar a conversão com base na determinação.
[0012] Em outro aspecto exemplo, um método de processamento de vídeo é divulgado. O método inclui determinar que modo de paleta deve ser usado para processar uma unidade de transformada, um bloco de codificação ou uma região, uso do modo de paleta sendo codificado separadamente de um modo de predição e desempenhar processamento adicional da unidade de transformada, do bloco de codificação, ou da região usando o modo de paleta.
[0013] Em outro aspecto exemplo, um método de processamento de vídeo é divulgado. O método inclui determinar, para um bloco de vídeo atual, que uma amostra associada a um lançamento de paleta de um modo de paleta tem uma profundidade de primeiro bit que é diferente de uma segunda profundidade de bit associada ao bloco de vídeo atual, e desempenhar, com base em pelo menos o um lançamento de paleta, processamento adicional do bloco de vídeo atual.
[0014] Em outro aspecto exemplo, outro método de processamento de vídeo é divulgado. O método inclui desempenhar uma conversão entre um bloco de vídeo atual de uma imagem de um vídeo e uma representação de bitstream do vídeo, no qual informações sobre se um modo de cópia de bloco intra é usado na conversão ou não são sinalizadas na representação de bitstream ou derivadas com base na condição de codificação do bloco de vídeo atual; em que o modo de cópia de bloco intra compreende codificar o bloco de vídeo atual a partir de outro bloco de vídeo na imagem.
[0015] Em ainda outro aspecto exemplo, outro método de processamento de vídeo é divulgado. O método inclui determinar se um filtro de deblocagem deve ou não ser aplicado durante uma conversão de um bloco de vídeo atual de uma imagem de vídeo, em que o bloco de vídeo atual é codificado usando uma codificação por modo de paleta em que o bloco de vídeo atual é representado usando valores de amostra representativos que são menores do que o total de pixels do bloco de vídeo atual e desempenhar a conversão tal que o filtro de deblocagem seja aplicado no caso da determinação ser que o filtro de deblocagem seja aplicado.
[0016] Em ainda outro aspecto exemplo, outro método de processamento de vídeo é divulgado. O método inclui determinar uma quantização ou um processo de quantização inversa para uso durante uma conversão entre um bloco de vídeo atual de uma imagem de um vídeo e uma representação de bitstream do vídeo, em que o bloco de vídeo atual é codificado usando uma codificação por modo de paleta em que o bloco de vídeo atual é representado usando valores de amostra representativos que são menores do que o total de pixels do bloco de vídeo atual e desempenhar a conversão com base na determinação do processo de quantização ou de quantização inversa.
[0017] Em ainda outro aspecto exemplo, outro método de processamento de vídeo é divulgado. O método inclui determinar, para uma conversão entre um bloco de vídeo atual de um vídeo compreendendo múltiplos blocos de vídeo e uma representação de bitstream do vídeo, que o bloco de vídeo atual é um bloco codificado por paleta; com base na determinação, desempenhar um processo de construção de lista do modo mais provável ao considerar o bloco de vídeo atual como sendo um bloco intracodificado e desempenhar a conversão com base em um resultado do processo de construção de lista; em que o bloco codificado por paleta é codificado ou decodificado usando uma paleta ou valores de amostra de representação.
[0018] Em ainda outro aspecto exemplo, outro método de processamento de vídeo é divulgado. O método inclui.
[0019] Em ainda outro aspecto exemplo, outro método de processamento de vídeo é divulgado. O método inclui determinar, para uma conversão entre um bloco de vídeo atual de um vídeo compreendendo múltiplos blocos de vídeo e uma representação de bitstream do vídeo, que o bloco de vídeo atual é um bloco codificado por paleta; com base na determinação, desempenhar um processo de construção de lista do modo mais provável ao considerar o bloco de vídeo atual como sendo um bloco não intracodificado e desempenhar a conversão com base em um resultado do processo de construção de lista; em que o bloco codificado por paleta é codificado ou decodificado usando uma paleta ou valores de amostra de representação.
[0020] Em ainda outro aspecto exemplo, outro método de processamento de vídeo é divulgado. O método inclui determinar, para uma conversão entre um bloco de vídeo atual de um vídeo compreendendo múltiplos blocos de vídeo e uma representação de bitstream do vídeo, que o bloco de vídeo atual é um bloco codificado por paleta; com base na determinação, desempenhar um processo de construção de lista ao considerar o bloco de vídeo atual como sendo um bloco indisponível e desempenhar a conversão com base em um resultado do processo de construção de lista; em que o bloco codificado por paleta é codificado ou decodificado usando uma paleta ou valores de amostra de representação.
[0021] Em ainda outro aspecto exemplo, outro método de processamento de vídeo é divulgado. O método inclui determinar, durante uma conversão entre um bloco de vídeo atual e uma representação de bitstream do bloco de vídeo atual, que o bloco de vídeo atual é um bloco codificado por paleta, determinando, com base no bloco de vídeo atual sendo o bloco codificado por paleta, uma faixa de bins codificados por contexto usados para a conversão; e desempenhar a conversão com base no intervalo de bins codificados por contexto.
[0022] Em ainda outro aspecto exemplo, o método descrito acima pode ser implementado por um aparelho codificador de vídeo que compreende um processador.
[0023] Em ainda outro aspecto exemplo, esses métodos podem ser incorporados na forma de instruções executáveis por processador e armazenados em um meio de programa legível por computador.
[0024] Estes e outros aspectos são adicionalmente descritos no presente documento.
BREVE DESCRIÇÃO DOS DESENHOS
[0025] FIG. 1 mostra um exemplo de cópia de bloco intra.
[0026] FIG. 2 mostra um exemplo de um bloco codificado no modo de paleta.
[0027] FIG. 3 mostra um exemplo de uso de um preditor de paleta para sinalizar lançamentos de paleta.
[0028] FIG. 4 mostra um exemplo de varreduras transversais horizontais e verticais.
[0029] FIG. 5 mostra um exemplo de codificação de índices de paleta.
[0030] FIG. 6 é um diagrama de bloco de um exemplo de um aparelho de processamento de vídeo.
[0031] FIG. 7 mostra um diagrama de bloco de uma implementação exemplo de um codificador de vídeo.
[0032] FIG. 8 é um fluxograma para um exemplo de um método de processamento de vídeo.
[0033] FIG. 9 mostra um exemplo de pixels envolvidos na decisão de filtro on/off e na seleção de filtro forte/fraco.
[0034] FIG. 10 mostra um exemplo de binarização de quatro modos.
[0035] FIG. 11 mostra um exemplo de binarização de quatro modos.
[0036] FIG. 12 mostra exemplos de 67 direções de predição de modo intra.
[0037] FIG. 13 mostra exemplos de blocos de vídeo vizinhos.
[0038] FIG. 14 mostra exemplos de formas de filtro ALF (croma: diamante 5×5, luma: diamante 7×7).
[0039] FIG. 15 (a) mostra um exemplo de cálculo Laplaciano subamostrado para gradiente vertical.
[0040] FIG. 15 (b) mostra um exemplo de cálculo Laplaciano subamostrado para gradiente horizontal.
[0041] FIG. 15 (c) mostra um exemplo de cálculo Laplaciano subamostrado para gradiente diagonal.
[0042] FIG. 15 (d) mostra um exemplo de cálculo Laplaciano subamostrado para gradiente diagonal.
[0043] FIG. 16 mostra exemplos de classificação de bloco modificado em fronteiras virtuais.
[0044] FIG. 17 mostra exemplos de filtragem ALF modificada para componente de luma em fronteiras virtuais.
[0045] FIG. 18 mostra um exemplo de quatro padrões de 3-pixel 1-D para a classificação de pixel em EO.
[0046] FIG. 19 mostra um exemplo de quatro bandas agrupadas e representadas por sua posição inicial de banda.
[0047] FIG. 20 mostra um exemplo de blocos vizinhos superior e esquerdo usados em derivação de peso CIIP.
[0048] FIG. 21 mostra um exemplo de mapeamento de luma com arquitetura de escalamento de croma.
[0049] FIG. 22 mostra um exemplo de ordem de varredura para um bloco 4x4.
[0050] FIG. 23 mostra outro exemplo de ordem de varredura para um bloco 4x4.
[0051] FIG. 24 é um diagrama de bloco de um sistema de processamento de vídeo exemplo no qual técnicas divulgadas podem ser implementadas.
[0052] Fig. 25 é uma representação de fluxograma de um método para processamento de vídeo de acordo com a presente tecnologia.
[0053] Fig. 26 é uma representação de fluxograma de outro método para processamento de vídeo de acordo com a presente tecnologia.
[0054] Fig. 27 é outra representação de fluxograma de outro método para processamento de vídeo de acordo com a presente tecnologia.
[0055] Fig. 28 é outra representação de fluxograma de outro método para processamento de vídeo de acordo com a presente tecnologia.
[0056] Fig. 29 é outra representação de fluxograma de outro método para processamento de vídeo de acordo com a presente tecnologia.
[0057] Fig. 30 é outra representação de fluxograma de outro método para processamento de vídeo de acordo com a presente tecnologia.
[0058] FIG. 31 é ainda outra representação de fluxograma de outro método para processamento de vídeo de acordo com a presente tecnologia.
DESCRIÇÃO DETALHADA
[0059] O presente documento provê várias técnicas que podem ser usadas por um decodificador de fluxos de bits de imagem ou de vídeo para melhorar a qualidade de vídeo ou imagens digitais descomprimidas ou decodificadas. Por brevidade, o termo “vídeo” é usado na presente invenção para incluir uma sequência de imagens (tradicionalmente chamada de vídeo) e imagens individuais. Além disso, um codificador de vídeo também pode implementar essas técnicas durante o processo de codificação, a fim de reconstruir os quadros decodificados usados para codificação adicional.
[0060] Títulos de seções são usados no presente documento para facilitar a compreensão e não limitam as modalidades e técnicas às seções correspondentes. Como tal, modalidades de uma seção podem ser combinadas com modalidades de outras seções.
1. Sumário
[0061] Este documento está relacionado às tecnologias de codificação de vídeo. Especificamente, está relacionado à codificação por paleta com emprego de representação com base em cores de base na codificação de vídeo. Pode ser aplicado ao padrão de codificação de vídeo existente, como HEVC, ou ao padrão (Codificação de Vídeo Versátil) a ser finalizado. Também pode ser aplicável a futuros padrões de codificação de vídeo ou codec de vídeo.
2. Discussão Inicial
[0062] Os padrões de codificação de vídeo evoluíram principalmente através do desenvolvimento dos bem conhecidos padrões ITU-T e ISO/IEC. O ITU- T produziu H.261 e H.263, ISO/IEC produziu MPEG-1 e Visual MPEG-4, e as duas organizações produziram em conjunto o H.262/Vídeo MPEG-2 e padrões H.264/Codificação de Vídeo Avançado (AVC) MPEG-4 e H.265/HEVC. Desde o H.262, os padrões de codificação de vídeo são baseados na estrutura de codificação de vídeo híbrida em que a predição temporal mais a codificação de transformada são utilizadas. Para explorar as futuras tecnologias de codificação de vídeo além da HEVC, a Equipe Conjunta de Exploração em Vídeo (JVET) foi fundada em conjunto pela VCEG e pela MPEG em 2015. Desde então, muitos novos métodos foram adotados pela JVET e colocados no software de referência denominado Modelo de Exploração Conjunta (JEM). Em abril de 2018, a Equipe Conjunta de Especialistas em Vídeo (JVET) entre VCEG (Q6/16) e ISO/IEC JTC1 SC29/WG11 (MPEG) foi criada para trabalhar no padrão VVC tendo como alvo a redução de taxa de bits de 50% em comparação com HEVC.
[0063] FIG. 7 é um diagrama de bloco de uma implementação exemplo de um codificador de vídeo. A Fig. 7 mostra que a implementação do codificador tem um percurso de realimentação embutido no qual o codificador de vídeo também desempenha a funcionalidade de decodificação de vídeo (reconstruindo a representação comprimida de dados de vídeo para uso na codificação dos próximos dados de vídeo).
2.1 Cópia de bloco intra
[0064] A cópia de bloco intra (IBC), também conhecida como referência de imagem atual, foi adotada nas extensões de Codificação de Conteúdo de Tela de HEVC (HEVC-SCC) e no modelo de teste VVC atual (VTM-4.0). IBC estende o conceito de compensação de movimento da codificação interquadro para a codificação intraquadro. Como demonstrado na FIG. 1, o bloco atual é predito por um bloco de referência na mesma imagem quando IBC é aplicado. As amostras no bloco de referência já devem ter sido reconstruídas antes da codificação ou decodificação do bloco atual. Embora IBC não seja tão eficiente para a maioria das sequências capturadas por câmera, este mostra ganhos de codificação significativos para o conteúdo de tela. O motivo é que existem muitos padrões repetidos, tal como ícones e caracteres de texto em uma imagem do conteúdo de tela. IBC pode remover a redundância entre esses padrões repetidos efetivamente. Em HEVC-SCC, uma unidade de codificação intercodificada (CU) pode aplicar IBC se escolher a imagem atual como sua imagem de referência. O MV é renomeado como vetor de bloco (BV) neste caso, e um BV sempre tem uma precisão de número inteiro de pixel. Para ser compatível com o perfil HEVC principal, a imagem atual é marcada como uma imagem de referência de “longo prazo” no Buffer de Imagem Decodificado (DPB). Deve-se notar que, de maneira similar, em padrões de codificação de vídeo 3D/visualização múltipla, a imagem de referência de inter-visualização também é marcada como uma imagem de referência de “longo prazo”.
[0065] Seguindo um BV para encontrar seu bloco de referência, a predição pode ser gerada ao copiar o bloco de referência. O resíduo pode ser obtido ao subtrair os pixels de referência dos sinais originais. Então, a transformada e a quantização podem ser aplicadas como em outros modos de codificação.
[0066] No entanto, quando um bloco de referência está fora da imagem, ou se sobrepõe ao bloco atual, ou fora da área reconstruída, ou fora da área válida confinada por algumas restrições, parte ou todos os valores de pixel não são definidos. Basicamente, existem duas soluções para lidar com tal problema. Uma é não permitir tal situação, por exemplo, em conformidade de bitstream. A outra é aplicar preenchimento para os valores de pixel indefinidos. As seguintes sub-sessões descrevem as soluções em detalhes.
2.2 IBC em extensões de Codificação de Conteúdo de Tela de HEVC
[0067] Nas extensões de codificação de conteúdo de tela de HEVC, quando um bloco usa a imagem atual como referência, deve-se garantir que todo o bloco de referência esteja dentro da área reconstruída disponível, como indicado no seguinte texto de especificação (negrito):
[0068] As variáveis offsetX e offsetY são derivadas como segue: offsetX = (ChromaArrayType = = 0) ? 0) : ( mvCLX[ 0 ] & 0x7 ? 2 : 0, (8-106) offsetY = ( ChromaArrayType = = 0 ) ? 0 : ( mvCLX[ 1 ] & 0x7 ? 2 : 0, (8-107)
[0069] É um requisito de conformidade de bitstream que, quando a imagem de referência é a imagem atual, o vetor de movimento luma mvLX deve obedecer às seguintes restrições: -Quando o processo de derivação para disponibilidade de bloco de ordem de varredura z como especificado na cláusula 6.4.1 é invocado com (xCurr, yCurr) estabelecido como igual a (xCb, yCb) e a localização de luma vizinha (xNbY, yNbY) estabelecida como igual a ( xPb + (mvLX[ 0 ] >> 2) − offsetX, yPb + ( mvLX[ 1 ] >> 2 ) − offsetY ) como entradas, a saída deve ser igual a TRUE. -Quando o processo de derivação para disponibilidade de bloco de ordem de varredura z como especificado na cláusula 6.4.1 é invocado com (xCurr, yCurr) estabelecido como igual a (xCb, yCb) e a localização de luma vizinha (xNbY, yNbY) estabelecida como igual a ( xPb + (mvLX[ 0 ] >> 2) + nPbW − 1 + offsetX, yPb + (mvLX[ 1 ] >> 2) + nPbH − 1 + offsetY) como entradas, a saída deve ser igual a TRUE.
[0070] -Uma ou ambas as seguintes condições devem ser verdadeiras: -O valor de ( mvLX[ 0 ] >> 2 ) + nPbW + xB1 + offsetX é menor ou igual a
0. -O valor de ( mvLX[ 1 ] >> 2 ) + nPbH + yB1 + offsetY é menor ou igual a 0.
[0071] -A seguinte condição deve ser verdadeira: ( xPb + ( mvLX[ 0 ] >> 2 ) + nPbSw − 1 + offsetX) / CtbSizeY − xCurr / CtbSizeY <= yCurr/CtbSizeY − ( yPb + ( mvLX[ 1 ] >> 2 ) + nPbSh − 1 + offsetY ) / CtbSizeY (8-108)
[0072] Assim, o caso em que o bloco de referência se sobrepõe ao bloco atual ou o bloco de referência está fora da imagem não acontecerá. Não há necessidade de preencher o bloco de referência ou predição.
[0073] Assim, o caso em que o bloco de referência se sobrepõe ao bloco atual ou o bloco de referência está fora da imagem não acontecerá. Não há necessidade de preencher o bloco de referência ou predição.
2.3 IBC no Modelo de Teste VVC
[0074] No modelo de teste VVC atual, por exemplo, projeto VTM-4.0, todo o bloco de referência deve estar com a unidade de árvore de codificação (CTU) atual e não se sobrepor ao bloco atual. Assim, não há necessidade de preencher o bloco de referência ou predição. O flag IBC é codificado como um modo de predição do CU atual. Assim, existem no total três modos de predição, MODE_INTRA, MODE_INTER e MODE_IBC para cada CU.
2.3.1 Modo de Mesclagem de IBC
[0075] Em um modo de mesclagem de IBC, um índice apontando para um lançamento na lista de candidatos de mesclagem de IBC é analisado a partir do bitstream. A construção da lista de mesclagem de IBC pode ser resumida de acordo com a seguinte sequência de etapas: Etapa 1: Derivação de candidatos espaciais. Etapa 2: Inserção de candidatos a HMVP. Etapa 3: Inserção de candidatos médios em pares.
[0076] Na derivação de candidatos de mesclagem espaciais, um máximo de quatro candidatos de mesclagem são selecionados dentre os candidatos localizados nas posições retratadas nas figuras. A ordem de derivação é A1, B1, B0, A0 e B2. A posição B2 é considerada apenas quando qualquer PU de posição A1, B1, B0, A0 e B2 não está disponível (por exemplo, porque pertence a outra fatia ou ladrilho (tile)) ou não é codificado com modo de IBC. Depois do candidato na posição A1 ser adicionado, a inserção dos candidatos remanescentes está sujeita a uma verificação de redundância que garante que os candidatos com as mesmas informações de movimento sejam excluídos da lista para que a eficiência da codificação seja aprimorada. Para reduzir a complexidade computacional, nem todos os pares candidatos possíveis são considerados na verificação de redundância mencionada. Em vez disso, apenas os pares ligados por uma seta são retratados nas figuras são considerados e um candidato é apenas adicionado à lista se o candidato correspondente usado para verificação de redundância não tiver as mesmas informações de movimento.
[0077] Após a inserção dos candidatos espaciais, se o tamanho da lista de mesclagem de IBC ainda for menor que o tamanho máximo da lista de mesclagem de IBC, os candidatos a IBC da tabela HMVP podem ser inseridos. A verificação de redundância é desempenhada ao inserir os candidatos a HMVP.
[0078] Finalmente, os candidatos médios em pares são inseridos na lista de mesclagem de IBC.
[0079] Quando um bloco de referência identificado por um candidato de mesclagem está fora da imagem, ou se sobrepõe ao bloco atual, ou fora da área reconstruída, ou fora da área válida confinada por algumas restrições, o candidato de mesclagem é chamado de candidato de mesclagem inválido.
[0080] Observa-se que os candidatos de mesclagem inválidos podem ser inseridos na lista de mesclagem de IBC.
2.3.2 Modo de IBC AMVP
[0081] No modo de IBC AMVP, um índice de AMVP aponta para um lançamento na lista de IBC AMVP é analisado a partir do bitstream. A construção da lista de IBC AMVP pode ser resumida de acordo com a seguinte sequência de etapas:
[0082] Etapa 1: Derivação de candidatos espaciais.
[0083] Verificar A0, A1 até que um candidato disponível seja encontrado.
[0084] Verificar B0, B1, B2 até que um candidato disponível seja encontrado.
[0085] Etapa 2: Inserção de candidatos a HMVP.
[0086] Etapa 3: Inserção de candidatos zero.
[0087] Após a inserção dos candidatos espaciais, se o tamanho da lista de IBC AMVP ainda for menor que o tamanho máximo da lista de IBC AMVP, os candidatos a IBC da tabela HMVP podem ser inseridos.
[0088] Finalmente, candidatos zero são inseridos na lista de IBC AMVP.
2.4 Modo de Paleta
[0089] A ideia básica por trás de um modo de paleta é que as amostras na CU são representadas por um pequeno conjunto de valores de cor representativos. Esse conjunto é referido como a paleta. Também é possível indicar uma amostra que está fora da paleta ao sinalizar um símbolo de escape seguido por valores de componente (possivelmente quantizados). Isso é ilustrado na FIG. 2.
2.5 Modo de paleta em extensões de Codificação de Conteúdo de Tela de HEVC (HEVC-SCC)
[0090] No modo de paleta em HEVC-SCC, uma maneira preditiva é usada para codificar a paleta e o mapa de índice.
2.5.1 Codificação das entradas de paleta
[0091] Para codificação dos lançamentos de paleta, um preditor de paleta é mantido. O tamanho máximo da paleta, bem como o preditor de paleta, é sinalizado no SPS. Em HEVC-SCC, um palette_predictor_initializer_present_flag é introduzido no PPS. Quando esse flag é 1, os lançamentos para inicializar o preditor de paleta são sinalizadas no bitstream. O preditor de paleta é inicializado no início de cada fileira CTU, cada fatia e cada ladrilho. Dependendo do valor de palette_predictor_initializer_present_flag, o preditor de paleta é restabelecido para 0 ou inicializado usando os lançamentos de inicializador do preditor de paleta sinalizadas no PPS. Em HEVC-SCC, um inicializador do preditor de paleta de tamanho 0 foi habilitado para permitir a desabilitação explícita da inicialização do preditor de paleta no nível de PPS.
[0092] Para cada lançamento no preditor de paleta, um flag de reuso é sinalizado para indicar se faz parte da paleta atual. Isso é ilustrado na FIG. 3. Os flags de reuso são enviados usando codificação run-length de zeros. Depois disso, o número de novos lançamentos de paleta é sinalizado usando código de Golomb exponencial de ordem 0. Finalmente, os valores de componentes para os novos lançamentos de paleta são sinalizados.
2.5.2 Codificação dos índices de paleta
[0093] Os índices de paleta são codificados usando varreduras transversais horizontais e verticais, como mostrado na FIG. 4. A ordem de varredura é sinalizada explicitamente no bitstream usando o palette_transpose_flag. Para o resto da subseção, supõe-se que a varredura seja horizontal.
[0094] Os índices de paleta são codificados usando dois modos de amostra de paleta principais: 'INDEX' e 'COPY_ABOVE'. Como explicado anteriormente, o símbolo de escape também é sinalizado como um modo ‘INDEX’ e atribuído a um índice igual ao tamanho máximo de paleta. O modo é sinalizado usando um flag, exceto para a fileira superior ou quando o modo anterior era 'COPY_ABOVE'. No modo ‘COPY_ABOVE’, o índice de paleta da amostra na fileira acima é copiado. No modo ‘INDEX’, o índice de paleta é sinalizado explicitamente. Para ambos os modos ‘INDEX’ e ‘COPY_ABOVE’, um valor de execução é sinalizado que especifica o número de amostras subsequentes que também são codificadas usando o mesmo modo. Quando o símbolo de escape faz parte da execução no modo ‘INDEX’ ou ‘COPY_ABOVE’, os valores de componente de escape são sinalizados para cada símbolo de escape. A codificação de índices de paleta é ilustrada na FIG. 5.
[0095] Essa ordem de sintaxe é realizada como segue. Primeiro, o número de valores de índice para a CU é sinalizado. Isso é seguido pela sinalização dos valores de índice reais para toda a CU usando codificação binária truncada. Tanto o número de índices quanto os valores de índice são codificados no modo bypass. Isso agrupa os bins de bypass relacionados ao índice. Então, o modo de amostra de paleta (se necessário) e a execução são sinalizados de maneira intercalada. Finalmente, os valores de escape do componente correspondentes às amostras de escape para todo o CU são agrupados e codificados no modo bypass.
[0096] Um elemento de sintaxe adicional, last_run_type_flag, é sinalizado após sinalização dos valores de índice. Esse elemento de sintaxe, em conjunto com o número de índices, elimina a necessidade de sinalizar o valor de execução correspondente à última execução no bloco.
[0097] Em HEVC-SCC, o modo de paleta também é habilitado para os formatos de croma 4:2:2, 4:2:0 e monocromático. A sinalização dos lançamentos e índices de paleta é quase idêntica para todos os formatos de croma. No caso de formatos não monocromáticos, cada lançamento de paleta consiste em 3 componentes. Para o formato monocromático, cada lançamento de paleta consiste em um único componente. Para direções de croma subamostradas, as amostras de croma são associadas a índices de amostra de luma que são divisíveis por 2. Depois de reconstruir os índices de paleta para a CU, se uma amostra tiver apenas um único componente associado a ela, apenas o primeiro componente do lançamento de paleta é usado. A única diferença na sinalização é para os valores de componente de escape. Para cada amostra de escape, o número de valores de componentes de escape sinalizados pode ser diferente dependendo do número de componentes associados a essa amostra.
[0098] Em VVC, a estrutura de codificação de árvore dupla é usada na codificação das fatias intra, para que o componente de luma e dois componentes de croma podem ter paleta e índices de paleta diferentes. Além disso, os dois componentes de croma compartilham a mesma paleta e índices de paleta.
2.6 Esquema de deblocagem em VVC
[0099] Nota-se que, nas descrições a seguir, pNM denota a N-ésima amostra do lado esquerdo na M-ésima fileira em relação à borda vertical ou a N-ésima amostra do lado superior na M-ésima coluna em relação à borda horizontal, qNM denota a N-ésima amostra do lado direito na M-ésima fileira em relação à borda vertical ou a N-ésima amostra do lado inferior na M-ésima coluna em relação à borda horizontal. Um exemplo de pNM e qNM está representado na FIG. 9.
[00100] Nota-se que, nas descrições a seguir, pN denota a N-ésima amostra do lado esquerdo em uma fileira em relação à borda vertical ou a N-ésima amostra do lado superior em uma coluna em relação à borda horizontal, qN denota a N-ésima amostra do lado direito em uma fileira em relação à borda vertical ou a N-ésima amostra do lado inferior em uma coluna em relação à borda horizontal.
[00101] A decisão de filtro on/off é feita para quatro linhas como uma unidade. A FIG. 9 ilustra os pixels que envolvem a decisão de filtro on/off. Os 6 pixels nas duas caixas vermelhas para as primeiras quatro linhas são usados para determinar o filtro on/off para 4 linhas. Os 6 pixels em duas caixas vermelhas para 4 linhas secundárias são usados para determinar o filtro on/off para as quatro linhas secundárias.
[00102] Em algumas modalidades, as bordas verticais em uma imagem são filtradas primeiro. Então, as bordas horizontais em uma imagem são filtradas com amostras modificadas pelo processo de filtragem de bordas verticais como entrada. As bordas verticais e horizontais nas CTBs de cada CTU são processadas separadamente em uma base de unidade de codificação. As bordas verticais dos blocos de codificação em uma unidade de codificação são filtradas iniciando com a borda do lado esquerdo dos blocos de codificação prosseguindo através das bordas em direção ao lado direito dos blocos de codificação em sua ordem geométrica. As bordas horizontais dos blocos de codificação em uma unidade de codificação são filtradas iniciando com a borda no topo dos blocos de codificação prosseguindo através das bordas em direção ao lado inferior dos blocos de codificação em sua ordem geométrica.
2.6.1 Decisão de fronteira
[00103] A filtragem é aplicada a fronteiras de blocos de 8x8. Além disso, deve ser uma fronteira de bloco de transformada ou uma fronteira de sub-bloco de codificação (por exemplo, devido ao uso de predição de movimento afim, ATMVP). Para aqueles que não são tais fronteiras, o filtro é desabilitado.
2.6.2 Cálculo de intensidade de fronteira
[00104] Para uma fronteira de bloco de transformada/fronteira de sub- bloco de codificação, se estiver localizado na grade 8x8, pode ser filtrado e a preparação de bS[ xDi ][ yDj ] (em que [ xDi ][ yDj ] denota a coordenada) para esta borda é definida como segue: – Se a amostra p0 ou q0 está no bloco de codificação de uma unidade de codificação codificada com modo de intrapredição, bS[ xDi ][ yDj ] é estabelecido como igual a 2. – Caso contrário, se a borda de bloco também for uma borda do bloco de transformada e a amostra p0 ou q0 está em um bloco de transformada que contém um ou mais níveis de coeficiente de transformada diferente de zero, bS[ xDi ][ yDj ] é estabelecido como igual a 1. – Caso contrário, se o modo de predição do sub-bloco de codificação contendo a amostra p0 é diferente do modo de predição do sub-bloco de codificação que contém a amostra q0, bS[ xDi ][ yDj ] é estabelecido como igual a
1. – Caso contrário, se uma ou mais das seguintes condições forem verdadeiras, bS[ xDi ][ yDj ] é estabelecido como igual a 1: – O sub-bloco de codificação contendo a amostra p0 e o sub-bloco de codificação contendo a amostra q0 são ambos codificados no modo de predição de IBC e a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento usados na predição dos dois sub-blocos de codificação é maior ou igual a 4 em unidades de amostras de um quarto de luma – Para a predição do sub-bloco de codificação contendo a amostra p0 imagens de referência diferentes ou um número diferente de vetores de movimento são usados para a predição do sub-bloco de codificação contendo a amostra q0. NOTA 1 - A determinação de se as imagens de referência usadas para os dois sub-blocos de codificação são iguais ou diferentes se baseia apenas em quais imagens são referenciadas, sem considerar se uma predição é formada usando um índice na lista de imagem de referência 0 ou um índice em lista de imagem de referência 1, e também sem considerar se a posição de índice dentro de uma lista de imagem de referência é diferente. NOTA 2 - O número de vetores de movimento que são usados para a predição de um sub-bloco de codificação com cobertura de amostra superior esquerda ( xSb, ySb ), é igual a PredFlagL0[ xSb ][ ySb ] + PredFlagL1[ xSb ][ ySb ]. – Um vetor de movimento é usado para predizer o sub-bloco de codificação contendo a amostra p0 e um vetor de movimento é usado para predizer o sub-bloco de codificação contendo a amostra q0, e a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento usados é maior ou igual a 4 em unidades de amostras de um quarto de luma. – Dois vetores de movimento e duas imagens de referência diferentes são usados para predizer o sub-bloco de codificação que contém a amostra p0, dois vetores de movimento para as mesmas duas imagens de referência são usados para predizer o sub-bloco de codificação que contém a amostra q0 e a diferença absoluta entre a componente horizontal ou vertical dos dois vetores de movimento usados na predição dos dois sub-blocos de codificação para a mesma imagem de referência é maior ou igual a 4 em unidades de amostras de um quarto de luma. – Dois vetores de movimento para a mesma imagem de referência são usados para predizer o sub-bloco de codificação que contém a amostra p0, dois vetores de movimento para a mesma imagem de referência são usados para predizer o sub-bloco de codificação que contém a amostra q0 e ambas as seguintes condições são verdadeiras: – A diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento de lista 0 usados na predição dos dois sub-blocos de codificação é maior ou igual a 4 nas amostras de um quarto de luma, ou a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento de lista 1 usados na predição dos dois sub-blocos de codificação é maior ou igual a 4 em unidades de amostras de um quarto de luma. – A diferença absoluta entre o componente horizontal ou vertical do vetor de movimento de lista 0 usado na predição do sub-bloco de codificação contendo a amostra p0 e o vetor de movimento de lista 1 usado na predição do sub-bloco de codificação contendo a amostra q0 é maior ou igual a 4 em unidades de amostras de um quarto de luma, ou a diferença absoluta entre o componente horizontal ou vertical do vetor de movimento de lista 1 usado na predição do sub-bloco de codificação contendo a amostra p0 e o vetor de movimento de lista
0 usado na predição do sub-bloco de codificação contendo a amostra q0 é maior ou igual a 4 em unidades de amostras de um quarto de luma – Caso contrário, a variável bS[ xDi ][ yDj ] é estabelecido como igual a 0.
[00105] Tabelas 2-1 e 2-2 resumem as regras de cálculo de BS. Tabela 2-1. Intensidade de fronteira (quando SPS IBC é desabilitado) Prioridade Condições Y U V Pelo menos um dentre os blocos adjacentes é 5 2 2 2 intra Fronteira de TU e pelo menos um dentre os 4 blocos adjacentes tem coeficientes de 1 1 1 transformada diferente de zero Imagens de referência ou número de MVs (1 para 3 unipredição, 2 para bipredição) dos blocos 1 N/A N/A adjacentes são diferentes Diferença absoluta entre os vetores de movimento da mesma imagem de referência que 2 1 N/A N/A pertence aos blocos adjacentes é maior ou igual a uma amostra inteira de luma 1 Caso contrário 0 0 0 Tabela 2-2. Intensidade de fronteira (quando SPS IBC é habilitado) Prioridade Condições Y U V Pelo menos um dentre os blocos adjacentes é 8 2 2 2 intra 7 Fronteira de TU e pelo menos um dentre os 1 1 1 blocos adjacentes tem coeficientes de transformada diferente de zero Modo de predição de blocos adjacentes é 6 1 diferente (por exemplo, um é IBC, um é inter) Tanto o IBC quanto a diferença absoluta entre os vetores de movimento que pertencem aos blocos 5 1 N/A N/A adjacentes é maior ou igual a uma amostra inteira de luma Imagens de referência ou número de MVs (1 para 4 unipredição, 2 para bipredição) dos blocos 1 N/A N/A adjacentes são diferentes Diferença absoluta entre os vetores de movimento da mesma imagem de referência que 3 1 N/A N/A pertence aos blocos adjacentes é maior ou igual a uma amostra inteira de luma 1 Caso contrário 0 0 0
2.6.3 Decisão de deblocagem para componente de luma
[00106] O processo de decisão de deblocagem é descrito nesta subseção.
[00107] Filtros de luma mais amplos e mais fortes são usados apenas se todos os Condition1, Condition2 e Condition3 são TRUE.
[00108] A condição 1 é a “condição de bloco grande”. Essa condição detecta se as amostras no lado P e no lado Q pertencem a grandes blocos, que são representados pelas variáveis bSidePisLargeBlk e bSideQisLargeBlk respectivamente. O bSidePisLargeBlk e bSideQisLargeBlk são definidos como segue.
bSidePisLargeBlk = ((tipo de borda é vertical e p0 pertence a CU com largura > = 32) | | (tipo de borda é horizontal e p0 pertence a CU com altura > = 32))? TRUE: FALSE bSideQisLargeBlk = ((tipo de borda é vertical e q0 pertence a CU com largura > = 32) | | (tipo de borda é horizontal e q0 pertence a CU com altura > = 32))? TRUE: FALSE
[00109] Com base em bSidePisLargeBlk e bSideQisLargeBlk, a condição 1 é definida como segue. Condition1 = (bSidePisLargeBlk || bSidePisLargeBlk)? TRUE: FALSE
[00110] Em seguida, se Condition 1 é verdade, a condição 2 será verificada adicionalmente. Primeiro, as seguintes variáveis são derivadas: – dp0, dp3, dq0, dq3 são primeiro derivados como em HEVC – if(lado p é maior ou igual a 32) dp0 = ( dp0 + Abs( p50 − 2 * p40 + p30 ) + 1 ) >> 1 dp3 = ( dp3 + Abs( p53 − 2 * p43 + p33 ) + 1 ) >> 1 – if(lado q é maior ou igual a 32) dq0 = ( dq0 + Abs( q50 − 2 * q40 + q30 ) + 1 ) >> 1 dq3 = ( dq3 + Abs( q53 − 2 * q43 + q33 ) + 1 ) >> 1 Condition2 = (d < β) ? TRUE: FALSE onde d= dp0 + dq0 + dp3 + dq3, como mostrado na seção 2.2.4.
[00111] Se Condition1 e Condition2 forem válidas, se algum dos blocos usa sub-blocos é verificado adicionalmente: If (bSidePisLargeBlk) If (mode block P == SUBBLOCKMODE) Sp =5 else Sp =7 else Sp = 3 If (bSideQisLargeBlk) If (mode block Q == SUBBLOCKMODE) Sq =5 else Sq =7 else Sq = 3
[00112] Finalmente, se ambos Condition 1 e Condition 2 são válidos, o método de deblocagem proposto verificará a condição 3 (a condição de filtro forte de bloco grande), que é definida como segue.
[00113] Na Condition3 StrongFilterCondition, as seguintes variáveis são derivadas: dpq é derivado como em HEVC. sp3 = Abs( p3 − p0 ), derivado como em HEVC if(lado p é maior ou igual a 32) if(Sp ==5) sp3 = ( sp3 + Abs( p5 − p3 ) + 1) >> 1 else sp3 = ( sp3 + Abs( p7 − p3 ) + 1) >> 1 sq3 = Abs( q0 − q3 ), derivado como em HEVC if(q lado é maior ou igual a 32) If(Sq==5) sq3 = ( sq3 + Abs( q5 − q3 ) + 1) >> 1 else sq3 = ( sq3 + Abs( q7 − q3 ) + 1) >> 1
[00114] Como em HEVC, StrongFilterCondition = (dpq é menor que ( β >> 2 ), sp3 + sq3 é menor que ( 3*β >> 5 ), e Abs( p0 − q0 ) é menor que ( 5 * tC + 1 ) >> 1)? TRUE: FALSE.
2.6.4 Filtro de deblocagem mais forte para luma (projetado para blocos maiores)
[00115] Filtro bilinear é usado quando amostras em qualquer um dos lados de uma fronteira pertencem a um bloco grande. Uma amostra pertencente a um bloco grande é definida como quando a largura > = 32 para uma borda vertical e quando a altura > = 32 para uma borda horizontal.
[00116] O filtro bilinear está listado abaixo.
[00117] Amostras de fronteira de bloco pi para i=0 a Sp-1 e qi para j=0 a Sq- 1 (pi e qi são a i-ésima amostra dentro de uma fileira para filtrar a borda vertical, ou a i-ésima amostra dentro de uma coluna para filtrar a borda horizontal) na deblocagem de HEVC descrito acima) são então substituídos por interpolação linear como segue: — 𝑝𝑖 ´ = (𝑓𝑖 ∗ 𝑀𝑖𝑑𝑑𝑙𝑒𝑠,𝑡 + (64 − 𝑓𝑖 ) ∗ 𝑃𝑠 + 32) ≫ 6), 𝑟𝑒𝑐𝑜𝑟𝑡𝑎𝑑𝑜𝑠 𝑝𝑎𝑟𝑎 𝑝𝑖 ± 𝑡𝑐𝑃𝐷𝑖 — 𝑞𝑗 ´ = (𝑔𝑗 ∗ 𝑀𝑖𝑑𝑑𝑙𝑒𝑠,𝑡 + (64 − 𝑔𝑗 ) ∗ 𝑄𝑠 + 32) ≫ 6), 𝑟𝑒𝑐𝑜𝑟𝑡𝑎𝑑𝑜𝑠 𝑝𝑎𝑟𝑎 𝑞𝑗 ± 𝑡𝑐𝑃𝐷𝑗 onde os termos 𝑡𝑐𝑃𝐷𝑖 e 𝑡𝑐𝑃𝐷𝑗 é um recorte dependente da posição descrito na Seção 2.3.6 e 𝑔𝑗 , 𝑓𝑖 , 𝑀𝑖𝑑𝑑𝑙𝑒𝑠,𝑡 , 𝑃𝑠 e 𝑄𝑠 são dados na Tabela 2-3: Tabela 2-3. Filtros de deblocagem de tap longos Sp, Sq 𝑓𝑖 = 59 − 𝑖 ∗ 9, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒇 7, 7 = {59,50,41,32,23,14,5} (lado 𝑔𝑗 = 59 − 𝑗 ∗ 9, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒈 p: 7, = {59,50,41,32,23,14,5} lado q:
7) 𝑀𝑖𝑑𝑑𝑙𝑒7,7 = (2 ∗ (𝑝𝑜 + 𝑞𝑜 ) + 𝑝1 + 𝑞1 + 𝑝2 + 𝑞2 +𝑝3 + 𝑞3 +𝑝4 + 𝑞4 +𝑝5 + 𝑞5 +𝑝6 + 𝑞6 + 8) ≫ 4 𝑃7 = (𝑝6 + 𝑝7 + 1) ≫ 1, 𝑄7 = (𝑞6 + 𝑞7 + 1) ≫ 1 𝑓𝑖 = 59 − 𝑖 ∗ 9, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒇 7, 3 = {59,50,41,32,23,14,5} (lado 𝑔𝑗 = 53 − 𝑗 ∗ 21, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒈 p: 7 = {53,32,11} lado q: 𝑀𝑖𝑑𝑑𝑙𝑒7,3 = (2 ∗ (𝑝𝑜 + 𝑞𝑜 ) + 𝑞0 + 2 ∗ (𝑞1 + 𝑞2 ) + 𝑝1 + 𝑞1 + 3) 𝑝2 +𝑝3 +𝑝4 +𝑝5 + 𝑝6 + 8) ≫ 4 𝑃7 = (𝑝6 + 𝑝7 + 1) ≫ 1, 𝑄3 = (𝑞2 + 𝑞3 + 1) ≫ 1 𝑔𝑗 = 59 − 𝑗 ∗ 9, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒈 3, 7 = {59,50,41,32,23,14,5} (lado 𝑓𝑖 = 53 − 𝑖 ∗ 21, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒇 p: 3 = {53,32,11} lado q: 𝑀𝑖𝑑𝑑𝑙𝑒3.7 = (2 ∗ (𝑞𝑜 + 𝑝𝑜 ) + 𝑝0 + 2 ∗ (𝑝1 + 𝑝2 ) + 𝑞1 + 𝑝1 + 7) 𝑞2 +𝑞3 +𝑞4 +𝑞5 + 𝑞6 + 8) ≫ 4 𝑄7 = (𝑞6 + 𝑞7 + 1) ≫ 1, 𝑃3 = (𝑝2 + 𝑝3 + 1) ≫ 1 𝑔𝑗 = 58 − 𝑗 ∗ 13, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒈 7, 5 = {58,45,32,19,6} (lado 𝑓𝑖 = 59 − 𝑖 ∗ 9, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒇 p: 7 = {59,50,41,32,23,14,5} lado q: 𝑀𝑖𝑑𝑑𝑙𝑒7,5 = (2 ∗ (𝑝𝑜 + 𝑞𝑜 + 𝑝1 + 𝑞1 ) + 𝑞2 + 𝑝2 + 𝑞3 + 𝑝3 + 𝑞4 5) + 𝑝4 + 𝑞5 + 𝑝5 + 8) ≫ 4 𝑄5 = (𝑞4 + 𝑞5 + 1) ≫ 1, 𝑃7 = (𝑝6 + 𝑝7 + 1) ≫ 1 5, 7 𝑔𝑗 = 59 − 𝑗 ∗ 9, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒈 (lado = {59,50,41,32,23,14,5} p: 5 lado q: 𝑓𝑖 = 58 − 𝑖 ∗ 13, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒇 7) = {58,45,32,19,6} 𝑀𝑖𝑑𝑑𝑙𝑒5,7 = (2 ∗ (𝑞𝑜 + 𝑝𝑜 + 𝑝1 + 𝑞1 ) + 𝑞2 + 𝑝2 + 𝑞3 + 𝑝3 + 𝑞4 + 𝑝4 + 𝑞5 + 𝑝5 + 8) ≫ 4 𝑄7 = (𝑞6 + 𝑞7 + 1) ≫ 1, 𝑃5 = (𝑝4 + 𝑝5 + 1) ≫ 1 𝑔𝑗 = 58 − 𝑗 ∗ 13, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒈 5, 5 = {58,45,32,19,6} (lado 𝑓𝑖 = 58 − 𝑖 ∗ 13, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒇 p: 5 = {58,45,32,19,6} lado q: 𝑀𝑖𝑑𝑑𝑙𝑒5,5 = (2 ∗ (𝑞𝑜 + 𝑝𝑜 + 𝑝1 + 𝑞1 + 𝑞2 + 𝑝2 ) + 𝑞3 + 𝑝3 + 𝑞4 5) + 𝑝4 + 8) ≫ 4 𝑄5 = (𝑞4 + 𝑞5 + 1) ≫ 1, 𝑃5 = (𝑝4 + 𝑝5 + 1) ≫ 1 𝑔𝑗 = 53 − 𝑗 ∗ 21, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒈 5, 3 = {53,32,11} (lado 𝑓𝑖 = 58 − 𝑖 ∗ 13, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒇 p: 5 = {58,45,32,19,6} lado q: 𝑀𝑖𝑑𝑑𝑙𝑒5,3 = (𝑞𝑜 + 𝑝𝑜 + 𝑝1 + 𝑞1 + 𝑞2 + 𝑝2 + 𝑞3 + 𝑝3 + 4) ≫ 3 3) 𝑄3 = (𝑞2 + 𝑞3 + 1) ≫ 1, 𝑃5 = (𝑝4 + 𝑝5 + 1) ≫ 1 𝑔𝑗 = 58 − 𝑗 ∗ 13, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒈 3, 5 = {58,45,32,19,6} (lado 𝑓𝑖 = 53 − 𝑖 ∗ 21, 𝑡𝑎𝑚𝑏é𝑚 𝑝𝑜𝑑𝑒 𝑠𝑒𝑟 𝑑𝑒𝑠𝑐𝑟𝑖𝑡𝑜 𝑐𝑜𝑚𝑜 𝒇 p: 3 = {53,32,11} lado q: 𝑀𝑖𝑑𝑑𝑙𝑒3,5 = (𝑞𝑜 + 𝑝𝑜 + 𝑝1 + 𝑞1 + 𝑞2 + 𝑝2 + 𝑞3 + 𝑝3 + 4) ≫ 3 5) 𝑄5 = (𝑞4 + 𝑞5 + 1) ≫ 1, 𝑃3 = (𝑝2 + 𝑝3 + 1) ≫ 1
2.6.5 Controle de deblocagem para croma
[00118] Os filtros fortes de croma são usados em ambos os lados da fronteira do bloco. Aqui, o filtro de croma é selecionado quando ambos os lados da borda de croma são maiores ou iguais a 8 (posição de croma), e a seguinte decisão com três condições são satisfeitas: a primeira é para a decisão de intensidade de fronteira, bem como bloco grande. O filtro proposto pode ser aplicado quando a largura ou altura de bloco que cruza ortogonalmente a borda de bloco for igual ou maior que 8 no domínio da amostra de croma. O segundo e o terceiro são basicamente o mesmo que para a decisão de deblocagem de HEVC luma, que são decisão de filtro on/off e decisão de filtro forte, respectivamente.
[00119] Na primeira decisão, a intensidade de fronteira (bS) é modificada para a filtragem de croma, como mostrado na Tabela 2-2. As condições na Tabela 2-2 são verificadas sequencialmente. Se uma condição é satisfeita, então as condições remanescentes com prioridades mais baixas são saltadas.
[00120] Deblocagem de croma é desempenhado quando bS é igual a 2 ou bS é igual a 1 quando uma fronteira de bloco grande é detectada.
[00121] A segunda e a terceira condição são basicamente as mesmas que a decisão de filtro forte de HEVC luma como segue.
[00122] Na segunda condição: d é então derivado como na deblocagem de HEVC luma. A segunda condição será TRUE quando d for menor que β.
[00123] Na terceira condição, StrongFilterCondition é derivado como segue: dpq é derivado como em HEVC. sp3 = Abs( p3 − p0 ), derivado como em HEVC sq3 = Abs( q0 − q3 ), derivado como em HEVC
[00124] Como no projeto HEVC, StrongFilterCondition = (dpq é menor que ( β >> 2 ), sp3 + sq3 é menor que ( β >> 3 ) e Abs( p0 − q0 ) é menor que ( 5 * tC + 1 ) >> 1).
2.6.6 Filtro de deblocagem forte para croma
[00125] O seguinte filtro de deblocagem forte para croma é definido: p2′= (3*p3+2*p2+p1+p0+q0+4) >> 3 p1′= (2*p3+p2+2*p1+p0+q0+q1+4) >> 3 p0′= (p3+p2+p1+2*p0+q0+q1+q2+4) >> 3
[00126] O filtro de croma proposto desempenha a deblocagem em uma grade de amostra de croma 4x4.
2.6.7 Recorte dependente de posição
[00127] O recorte dependente de posição tcPD é aplicado às amostras de saída do processo de filtragem de luma envolvendo filtros fortes e filtros longos que estão modificando amostras 7, 5 e 3 na fronteira. Assumindo a distribuição de erro de quantização, propõe-se aumentar o valor de recorte para as amostras as quais se espera que tenham ruído mais alto de quantização, assim, se espera que tenham desvio mais alto do valor de amostra reconstruído a partir do valor de amostra verdadeiro.
[00128] Para cada fronteira P ou Q filtrada com filtro assimétrico, dependendo do resultado do processo de tomada de decisão na seção 2.3.3, a tabela de limite dependente de posição é selecionada a partir de duas tabelas (ou seja, Tc7 e Tc3 tabuladas abaixo) que são providas para o decodificador como informações laterais: Tc7 = { 6, 5, 4, 3, 2, 1, 1}; Tc3 = { 6, 4, 2 }; tcPD = (Sp == 3) ? Tc3 : Tc7; tcQD = (Sq == 3) ? Tc3 : Tc7;
[00129] Para as fronteiras P ou Q sendo filtrados com um filtro simétrico curto, o limite dependente de posição de magnitude mais baixa é aplicado: Tc3 = { 3, 2, 1 };
[00130] Após definir o limite, filtrado p’i e q’i os valores de amostra são recortados de acordo com os valores de recorte tcP e tcQ: p’’i = Clip3(p’i + tcPi, p’i – tcPi, p’i ); q’’j = Clip3(q’j + tcQj, q’j – tcQ j, q’j ); onde p’i e q’i são valores de amostra filtrados, p’’i e q’’j são o valor da amostra de saída após o recorte e tcPi tcPi são limites de recorte que são derivados a partir do parâmetro VVC tc e tcPD e tcQD. A função Clip3 é uma função de recorte, uma vez que é especificada em VVC.
2.6.8 Ajuste de deblocagem de sub-bloco
[00131] Para habilitar a deblocagem amigável paralelo usando filtros longos e deblocagem de sub-bloco, os filtros longos são restritos para modificar no máximo 5 amostras em um lado que usa deblocagem de sub-bloco (AFFINE ou ATMVP ou DMVR) conforme mostrado no controle de luma para filtros longos. Adicionalmente, a deblocagem de sub-bloco é ajustado de modo que as fronteiras de sub-bloco em uma grade 8x8 que estão próximas de uma CU ou uma fronteira de TU implícito sejam restritas a modificar no máximo duas amostras em cada lado.
[00132] O seguinte aplica-se às fronteiras de sub-bloco que não estão alinhadas com a fronteira de CU. If (mode block Q == SUBBLOCKMODE && edge !=0) { if (!(implicitTU && (edge == (64 / 4)))) if (edge == 2 || edge == (orthogonalLength - 2) || edge == (56 / 4) || edge == (72 / 4)) Sp = Sq = 2; else Sp = Sq = 3; else Sp = Sq = bSideQisLargeBlk ? 5:3
}
[00133] Onde a borda igual a 0 corresponde à fronteira de CU, borda igual a 2 ou igual a orthogonalLength-2 corresponde à fronteira do sub-bloco 8 amostras de uma fronteira de CU etc. Onde TU implícito é verdadeiro se a divisão implícita de TU for usada.
2.6.9 Restrição a buffers de linha 4CTU/2CTU para luma/croma
[00134] A filtragem de bordas horizontais está limitando Sp = 3 para luma, Sp = 1 e Sq = 1 para croma, quando a borda horizontal está alinhada com a fronteira de CTU.
2.7 Codificação de modo intra em VVC
[00135] Para capturar as direções de borda arbitrárias apresentadas em vídeo natural, o número de modos intra direcionais em VTM5 é estendido de 33, como usado no HEVC, para 65. Os novos modos direcionais não em HEVC são representados como setas pontilhadas vermelhas na FIG. 12, e os modos planar e DC permanecem os mesmos. Esses modos de intrapredição direcional mais densos se aplicam a todos os tamanhos de bloco e para intrapredições luma e croma.
[00136] Em VTM5, vários modos de intrapredição angulares convencionais são substituídos adaptativamente por modos de intrapredição de ângulo amplo para os blocos não quadrados. A intraprevisão de ângulo amplo é descrita na Seção 3.3.1.2.
[00137] Em HEVC, cada bloco intracodificado tem uma forma quadrada e o comprimento de cada um de seus lados é uma potência de 2. Assim, nenhuma operação de divisão é necessária para gerar um intrapreditor usando o modo DC. Em VTM5, os blocos podem ter um formato retangular que necessita do uso de uma operação de divisão por bloco no caso geral. Para evitar operações de divisão para predição de DC, apenas o lado mais longo é usado para computar a média para blocos não quadrados.
[00138] Para manter baixa a complexidade da geração da lista do modo mais provável (MPM), um método de codificação de modo intra com 6 MPMs é usado, considerando dois modos intra vizinhos disponíveis. Os três aspectos a seguir são considerados para construir a lista MPM: i. Modos intra padrão ii. Modos intra vizinhos iii. Modos intra derivados
[00139] Uma lista 6-MPM unificada é usada para blocos intra, independentemente de as ferramentas de codificação MRL e ISP serem aplicadas ou não. A lista MPM é construída com base nos modos intra do bloco vizinho esquerdo e acima. Suponha que o modo do bloco esquerdo seja denotado como Left e o modo do bloco acima é denotado como Above, a lista de MPM unificada é construída como segue (os blocos da esquerda e acima são mostrados na FIG.
13. – Quando um bloco vizinho não está disponível, seu modo intra é estabelecido como Planar por padrão. – Se ambos os modos Left e Above são modos não angulares: o Lista MPM → {Planar, DC, V, H, V-4, V+4} – Se um dos modos Left e Above é o modo angular e o outro é não angular: o Estabelecer um modo Max como o modo maior em Left e Above o Lista MPM → {Planar, Max, DC, Max -1, Max +1, Max -2} – Se Left e Above são angulares e são diferentes: o Estabelecer um modo Max como o modo maior em Left e Above o se a diferença de modo Left e Above está na faixa de 2 a 62, inclusive ▪ Lista MPM → {Planar, Left, Above, DC, Max -1, Max +1} o Caso contrário
▪ Lista MPM → {Planar, Left, Above, DC, Max -2, Max +2} – Se Left e Above são angulares e eles são os mesmos: o Lista MPM → {Planar, Left, Left -1, Left +1, DC, Left -2}
[00140] Além disso, o primeiro bin da palavra-código do índice mpm é codificado por contexto CABAC. No total, três contextos são usados, correspondendo a se o bloco intra atual é MRL habilitado, ISP habilitado ou um bloco intra normal.
[00141] Durante o processo de geração de lista de 6 MPM, a poda é usada para remover modos duplicados de forma que apenas modos únicos possam ser incluídos na lista MPM. Para codificação de entropia dos 61 modos não MPM, um Código Binário Truncado (TBC) é usado.
[00142] Para a codificação de modo intra de croma, um total de 8 modos intra são permitidos para a codificação de modo intra de croma. Esses modos incluem cinco modos intra tradicionais e três modos de modelo linear de componente cruzado (CCLM, LM_A e LM_L). A sinalização do modo croma e o processo de derivação são mostrados na Tabela 2-4. A codificação do modo croma depende diretamente do modo intrapredição do bloco luma correspondente. Uma vez que a estrutura de particionamento de bloco separado para componentes luma e croma é ativada em fatias I, um bloco de croma pode corresponder a múltiplos blocos luma. Portanto, para o modo DM de Croma, o modo intrapredição do bloco luma correspondente cobrindo a posição central do bloco croma atual é herdado diretamente. Tabela 2-4 - Derivação do modo de predição croma do modo luma quando cclm é habilitado Modo de intrapredição luma correspondente Modo de predição croma 0 50 18 1 X ( 0 <= X <= 66 ) 0 66 0 0 0 0
7 0 50 18 1 X
2.8 Modulação por código de Pulso Diferencial de Bloco residual quantizado (QR-BDPCM)
[00143] Em JVET-M0413, uma modulação por código de Pulso Diferencial de Bloco residual quantizado (QR-BDPCM) é proposta para codificar os conteúdos da tela eficientemente.
[00144] As direções de predição usadas em QR-BDPCM podem ser modos de predição vertical e horizontal. A intrapredição é feita em todo o bloco por cópia da amostra na direção da predição (predição horizontal ou vertical) semelhante à intrapredição. O resíduo é quantizado e o delta entre o resíduo quantizado e seu valor quantizado (horizontal ou vertical) de preditor é codificado. Isso pode ser descrito por meio do seguinte: Para um bloco de tamanho M (linhas) × N (colunas), assume-se que 𝑟𝑖,𝑗 , 0 ≤ 𝑖 ≤ 𝑀 − 1, 0 ≤ 𝑗 ≤ 𝑁 − 1 seja o resíduo de predição após desempenhar intrapredição horizontalmente (copiando o valor de pixel vizinho esquerdo através do bloco predito linha por linha) ou verticalmente (copiando a linha vizinha superior para cada linha no bloco predito) usando amostras não filtradas de cima ou amostras de fronteira de bloco esquerdo. Denota-se 𝑄(𝑟𝑖,𝑗 ), 0 ≤ 𝑖 ≤ 𝑀 − 1, 0 ≤ 𝑗 ≤ 𝑁 − 1 a versão quantizada de 𝑟𝑖,𝑗 residual, onde residual é a diferença entre o bloco original e os valores de bloco preditos. Em seguida, o bloco DPCM é aplicado às amostras residuais quantizadas, resultando na matriz M × N modificada 𝑅̃ com elementos 𝑟̃𝑖,𝑗 . Quando BDPCM vertical é sinalizado: 𝑄(𝑟𝑖,𝑗 ), 𝑖 = 0, 0 ≤ 𝑗 ≤ (𝑁 − 1) 𝑟̃𝑖,𝑗 = { (2-7-1) 𝑄(𝑟𝑖,𝑗 ) − 𝑄(𝑟(𝑖−1),𝑗 ), 1 ≤ 𝑖 ≤ (𝑀 − 1), 0 ≤ 𝑗 ≤ (𝑁 − 1)
[00145] Para predição horizontal, regras semelhantes se aplicam, e as amostras quantizadas residuais são obtidas por 𝑄(𝑟𝑖,𝑗 ), 0 ≤ 𝑖 ≤ (𝑀 − 1), 𝑗 = 0 𝑟̃𝑖,𝑗 = { (2-7-2) 𝑄(𝑟𝑖,𝑗 ) − 𝑄(𝑟𝑖,(𝑗−1) ), 0 ≤ 𝑖 ≤ (𝑀 − 1), 1 ≤ 𝑗 ≤ (𝑁 − 1)
[00146] As amostras quantizadas residuais 𝑟̃𝑖,𝑗 são enviadas para o decodificador.
[00147] No lado do decodificador, os cálculos acima são revertidos para produzir 𝑄(𝑟𝑖,𝑗 ), 0 ≤ 𝑖 ≤ 𝑀 − 1, 0 ≤ 𝑗 ≤ 𝑁 − 1. Para o caso de predição vertical, 𝑄(𝑟𝑖,𝑗 ) = ∑𝑖𝑘=0 𝑟̃𝑘,𝑗 , 0 ≤ 𝑖 ≤ (𝑀 − 1), 0 ≤ 𝑗 ≤ (𝑁 − 1) (2-7-3)
[00148] Para o caso horizontal, 𝑄(𝑟𝑖,𝑗 ) = ∑𝑗𝑘=0 𝑟̃𝑖,𝑘 , 0 ≤ 𝑖 ≤ (𝑀 − 1), 0 ≤ 𝑗 ≤ (𝑁 − 1) (2-7-4)
[00149] Os resíduos quantizados inversos, 𝑄 −1 (𝑄(𝑟𝑖,𝑗 )), são adicionados aos valores de bloco intra de predição para produzir os valores de amostra reconstruídos.
[00150] O principal benefício deste esquema é que o DPCM inverso pode ser feito em tempo real durante a análise do coeficiente, simplesmente adicionando o preditor à medida que os coeficientes são analisados ou pode ser executado após a análise.
2.9 Filtro de Loop Adaptativo
[00151] No VTM5, um Filtro de Loop Adaptativo (ALF) com adaptação de filtro baseada em bloco é aplicado. Para o componente luma, um dentre 25 filtros é selecionado para cada bloco 4×4, com base na direção e atividade dos gradientes locais.
2.9.1 Forma de Filtro
[00152] No VTM5, duas filtros em forma de diamante (como mostrado na FIG. 14) são usadas. A forma de diamante 7×7 é aplicada ao componente luma e a forma de diamante 5×5 é aplicada aos componentes croma.
2.9.2 Classificação de bloco
[00153] Para o componente luma, cada bloco 4 × 4 é categorizado em uma das 25 classes. O índice de classificação C é derivado com base em sua direcionalidade 𝐷 e um valor quantizado de atividade 𝐴̂, como segue: 𝐶 = 5𝐷 + 𝐴̂ (2-9-1)
[00154] Para calcular 𝐷 e 𝐴̂, os gradientes da direção horizontal, vertical e duas diagonais são calculados primeiro usando o 1-D Laplaciano: 𝑗+3 𝑔𝑣 = ∑𝑖+3 𝑘=𝑖−2 ∑𝑙=𝑗−2 𝑉𝑘,𝑙 , 𝑉𝑘,𝑙 = |2𝑅(𝑘, 𝑙) − 𝑅(𝑘, 𝑙 − 1) − 𝑅(𝑘, 𝑙 + 1)| (2-9-2) 𝑗+3 𝑔ℎ = ∑𝑖+3 𝑘=𝑖−2 ∑𝑙=𝑗−2 𝐻𝑘,𝑙 , 𝐻𝑘,𝑙 = |2𝑅(𝑘, 𝑙) − 𝑅(𝑘 − 1, 𝑙) − 𝑅(𝑘 + 1, 𝑙)| (2-9-3) 𝑗+3 𝑔𝑑1 = ∑𝑖+3 𝑘=𝑖−2 ∑𝑙=𝑗−3 𝐷1𝑘,𝑙 , 𝐷1𝑘,𝑙 = |2𝑅(𝑘, 𝑙) − 𝑅(𝑘 − 1, 𝑙 − 1) − 𝑅(𝑘 + 1, 𝑙 + 1)| (2-9-4) 𝑗+3 𝑔𝑑2 = ∑𝑖+3 𝑘=𝑖−2 ∑𝑗=𝑗−2 𝐷2𝑘,𝑙 , 𝐷2𝑘,𝑙 = |2𝑅(𝑘, 𝑙) − 𝑅(𝑘 − 1, 𝑙 + 1) − 𝑅(𝑘 + 1, 𝑙 − 1)| (2-9-5)
[00155] Onde índices 𝑖 e 𝑗 referem-se às coordenadas da amostra superior esquerda dentro do bloco 4 × 4 e 𝑅(𝑖, 𝑗) indica uma amostra reconstruída na coordenada (𝑖, 𝑗).
[00156] Para reduzir a complexidade da classificação de bloco, o cálculo Laplaciano 1-D subamostrado é aplicado. Como mostrado na FIG. 15 (a)-(d), as mesmas posições subamostradas são usadas para o cálculo do gradiente de todas as direções.
[00157] Então os valores máximo e mínimo 𝐷 dos gradientes das direções horizontal e vertical são estabelecidos como: 𝑚𝑎𝑥 𝑚𝑖𝑛 𝑔ℎ,𝑣 = 𝑚𝑎𝑥 (𝑔ℎ , 𝑔𝑣 ), 𝑔ℎ,𝑣 = 𝑚𝑖𝑛(𝑔ℎ , 𝑔𝑣 ) (2-9-6)
[00158] Os valores máximo e mínimo do gradiente das duas direções diagonais são estabelecidos como:
𝑚𝑎𝑥 𝑚𝑖𝑛 𝑔𝑑0,𝑑1 = 𝑚𝑎𝑥 (𝑔𝑑0 , 𝑔𝑑1 ), 𝑔𝑑0,𝑑1 = 𝑚𝑖𝑛(𝑔𝑑0 , 𝑔𝑑1 ) (2-9-7)
[00159] Para derivar o valor da direcionalidade 𝐷, esses valores são comparados entre si e com dois limites 𝑡1 e 𝑡2 : 𝑚𝑎𝑥 𝑚𝑖𝑛 𝑚𝑎𝑥 𝑚𝑖𝑛 Etapa 1. Se ambos 𝑔ℎ,𝑣 ≤ 𝑡1 ∙ 𝑔ℎ,𝑣 e 𝑔𝑑0,𝑑1 ≤ 𝑡1 ∙ 𝑔𝑑0,𝑑1 são verdade, 𝐷 é estabelecido para 0. 𝑚𝑎𝑥 ⁄ 𝑚𝑖𝑛 𝑚𝑎𝑥 ⁄ 𝑚𝑖𝑛 Etapa 2. Se 𝑔ℎ,𝑣 𝑔ℎ,𝑣 > 𝑔𝑑0,𝑑1 𝑔𝑑0,𝑑1 , continua a partir da Etapa 3; caso contrário, continua a partir da Etapa 4. 𝑚𝑎𝑥 𝑚𝑖𝑛 Etapa 3. Se 𝑔ℎ,𝑣 > 𝑡2 ∙ 𝑔ℎ,𝑣 , 𝐷 é estabelecido para 2; por outro lado 𝐷 é estabelecido para 1. 𝑚𝑎𝑥 𝑚𝑖𝑛 Etapa 4. Se 𝑔𝑑0,𝑑1 > 𝑡2 ∙ 𝑔𝑑0,𝑑1 , 𝐷 é estabelecido para 4; por outro lado 𝐷 é estabelecido para 3.
[00160] O 𝐴 de valor da atividade é calculado como: 𝑗+3 𝐴 = ∑𝑖+3 𝑘=𝑖−2 ∑𝑙=𝑗−2(𝑉𝑘,𝑙 + 𝐻𝑘,𝑙 ) (2-9-8)
[00161] 𝐴 é ainda quantizado na faixa de 0 a 4, inclusive, e o valor quantizado é denotado como 𝐴̂.
[00162] Para componentes croma em uma imagem, nenhum método de classificação é aplicado, ou seja, um único conjunto de coeficientes ALF é aplicado para cada componente croma.
2.9.3. Transformações geométricas de coeficientes de filtro e valores de recorte
[00163] Antes de filtrar cada bloco de luma 4×4, as transformações geométricas, como rotação ou inversão diagonal e vertical são aplicadas aos coeficientes do filtro 𝑓(𝑘, 𝑙) e para os valores de recorte de filtro correspondentes 𝑐(𝑘, 𝑙) dependendo dos valores de gradiente calculados para aquele bloco. Isso é equivalente a aplicar essas transformações às amostras na região de suporte do filtro. A ideia é tornar os diferentes blocos aos quais o ALF é aplicado de forma mais semelhante, alinhando sua direcionalidade.
[00164] São introduzidas três transformações geométricas, incluindo diagonal, inversão vertical e rotação: Diagonal: 𝑓𝐷 (𝑘, 𝑙 ) = 𝑓(𝑙, 𝑘 ), 𝑐𝐷 (𝑘, 𝑙 ) = 𝑐 (𝑙, 𝑘 ), (2-9-9) Inversão vertical: 𝑓𝑉 (𝑘, 𝑙) = 𝑓(𝑘, 𝐾 − 𝑙 − 1), 𝑐𝑉 (𝑘, 𝑙) = 𝑐(𝑘, 𝐾 − 𝑙 − 1) (2-9-10) Rotação: 𝑓𝑅 (𝑘, 𝑙 ) = 𝑓 (𝐾 − 𝑙 − 1, 𝑘 ), 𝑐𝑅 (𝑘, 𝑙 ) = 𝑐 (𝐾 − 𝑙 − 1, 𝑘 ) (2-9-11)
[00165] Onde 𝐾 é o tamanho do filtro e 0 ≤ 𝑘, 𝑙 ≤ 𝐾 − 1 são coordenadas de coeficientes, de modo que a (0,0) de localização está no canto superior esquerdo e a (𝐾 − 1, 𝐾 − 1) de localização está no canto inferior direito. As transformações são aplicadas aos coeficientes do filtro f (k, l) e aos valores de recorte 𝑐(𝑘, 𝑙) dependendo dos valores de gradiente calculados para aquele bloco. A relação entre a transformação e os quatro gradientes das quatro direções está resumida na tabela a seguir. Tabela 2-5 - Mapeamento do gradiente calculado para um bloco e as transformações Valores de gradiente Transformação gd2 <gd1 e gh <gv Sem transformação gd2 < gd1 e gv < gh Diagonal gd1 <gd2 e gh <gv Inversão vertical gd1 < gd2 e gv < gh Rotação
2.9.4 Sinalização de parâmetros de filtro
[00166] No VTM5, os parâmetros de filtro ALF são sinalizados no Conjunto de Parâmetro de Adaptação (APS). Em um APS, até 25 conjuntos de coeficientes de filtro luma e índices de valor de recorte e até um conjunto de coeficientes de filtro croma e índices de valor de recorte podem ser sinalizados. Para reduzir a sobrecarga de bits, os coeficientes de filtro de classificação diferente podem ser mesclados. No cabeçalho de fatia, os índices dos APSs usados para a fatia atual são sinalizados.
[00167] Os índices de valor de recorte, que são decodificados do APS, permitem determinar os valores de recorte usando uma tabela Luma de valores de recorte e uma tabela Chroma de valores de recorte. Esses valores de recorte são dependentes da profundidade de bits interna. Mais precisamente, a tabela Luma de valores de recorte e a tabela Chroma de valores de recorte são obtidas pelas seguintes fórmulas: 𝑁−𝑛+1 AlfClipL= {round (2𝐵 𝑁 ) para 𝑛 ∈ [1. . 𝑁]}, (2-9-12) (𝑁−𝑛) (𝐵−8)+8 AlfClipC= {round (2 𝑁−1 ) 𝑝𝑎𝑟𝑎 𝑛 ∈ [1. . 𝑁]} (2-9-13) com B igual à profundidade de bits interna e N igual a 4 que é o número de valores de recorte permitidos em VTM5.0.
[00168] O processo de filtragem pode ser controlado em nível CTB. Um flag é sempre sinalizado para indicar se ALF é aplicado a um CTB luma. Um CTB luma pode escolher um conjunto de filtros dentre 16 conjuntos de filtros fixos e os conjuntos de filtros de APSs. Um índice de conjunto de filtros é sinalizado para um CTB luma para indicar qual conjunto de filtros é aplicado. Os 16 conjuntos de filtros fixos são predefinidos e codificados rigidamente no codificador e no decodificador.
[00169] Os coeficientes de filtro são quantizados com norma igual a 128. A fim de restringir a complexidade de multiplicação, uma conformidade de bitstream é aplicada de modo que o valor de coeficiente da posição não central deve estar na faixa de -27 para 27 - 1, inclusive. O coeficiente de posição central não é sinalizado no bitstream e é considerado igual a 128.
2.9.5 Processo de filtragem
[00170] No lado do decodificador, quando ALF é habilitado para um CTB, cada amostra 𝑅(𝑖, 𝑗) dentro da CU é filtrada, resultando no valor da amostra 𝑅′(𝑖, 𝑗) como mostrado abaixo, 𝑅′ (𝑖, 𝑗) = 𝑅 (𝑖, 𝑗) + ((∑𝑘≠0 ∑𝑙≠0 𝑓(𝑘, 𝑙 ) ×
𝐾(𝑅(𝑖 + 𝑘, 𝑗 + 𝑙 ) − 𝑅(𝑖, 𝑗), 𝑐(𝑘, 𝑙 )) + 64) ≫ 7) (2-9-14) onde 𝑓(𝑘, 𝑙 ) denota os coeficientes de filtro decodificados, 𝐾(𝑥, 𝑦) é a função de recorte e 𝑐 (𝑘, 𝑙 ) denota os parâmetros de recorte decodificados. A variável k
𝐿 𝐿 e l varia entre − e onde L denota o comprimento de filtro. A função de recorte 2 2 𝐾 (𝑥, 𝑦) = min(𝑦, max(−𝑦, 𝑥 )) que corresponde à função 𝐶𝑙𝑖𝑝3 (−𝑦, 𝑦, 𝑥 ).
2.9.6 Processo de filtragem de fronteira virtual para redução de buffer de linha
[00171] Em VTM5, para reduzir o requisito de buffer de linha de ALF, a classificação de bloco modificada e a filtragem são empregadas para as amostras próximas às fronteiras horizontais de CTU. Para este propósito, uma fronteira virtual é definida como uma linha, deslocando a fronteira de CTU horizontal com “N” amostras como mostrado na FIG. 16, com N igual a 4 para o componente Luma e 2 para o componente Chroma.
[00172] A classificação de bloco modificada é aplicada ao componente Luma, conforme representado na FIG. 2-11. Para o cálculo de gradiente Laplaciano 1D do bloco 4x4 acima da fronteira virtual, apenas as amostras acima da fronteira virtual são usadas. De maneira similar, para o cálculo de gradiente Laplaciano 1D do bloco 4x4 abaixo da fronteira virtual, apenas as amostras abaixo da fronteira virtual são usadas. A quantização de valor de atividade A é escalada de acordo, levando em consideração o número reduzido de amostras usadas no cálculo de gradiente Laplaciano 1D.
[00173] Para o processamento de filtragem, a operação de preenchimento simétrico nas fronteiras virtuais é usada para os componentes Luma e Chroma. Como mostrado na FIG. 17, quando a amostra sendo filtrada está localizada abaixo da fronteira virtual, as amostras vizinhas que estão localizadas acima da fronteira virtual são preenchidas. Enquanto isso, as amostras correspondentes nos outros lados também são preenchidas, simetricamente.
2.10 Desvio Adaptativo de Amostra (SAO)
[00174] O desvio adaptativo de amostra (SAO) é aplicado ao sinal reconstruído após o filtro de deblocagem ao usar os desvios especificados para cada CTB pelo codificador. O codificador HM primeiro toma a decisão sobre se o processo de SAO deve ou não ser aplicado para a fatia atual. Se SAO for aplicado para a fatia, cada CTB é classificado como um dos cinco tipos de SAO, conforme mostrado na Tabela 2-6. O conceito de SAO é classificar os pixels em categorias e reduzir a distorção adicionando um desvio aos pixels de cada categoria. A operação SAO inclui Desvio de Borda (EO) que usa propriedades de borda para classificação de pixel em SAO tipo 1-4 e Desvio de Banda (BO) que usa intensidade de pixel para classificação de pixel em SAO tipo 5. Cada CTB aplicável tem parâmetros SAO incluindo sao_merge_left_flag, sao_merge_up_flag, tipo SAO e quatro desvios. Se sao_merge_left_flag é igual a 1, o CTB atual reutilizará o tipo SAO e os desvios do CTB à esquerda. Se sao_merge_up_flag é igual a 1, o CTB atual reutilizará o tipo SAO e os desvios do CTB para cima. Tabela 2-6 – Especificação de tipo SAO Tipo tipo de desvio adaptativo de amostra a ser Número de SAO usado categorias 0 Nenhum 0 1 Desvio da borda de padrão de 0 grau 1-D 4 2 Desvio da borda de padrão de 90 grau 1-D 4 3 Desvio da borda de padrão de 135 grau 1-D 4 4 Desvio da borda de padrão de 45 grau 1-D 4 5 desvio de banda 4
2.10.1. Operação de cada tipo de SAO
[00175] O desvio de borda usa quatro padrões de 3 pixels 1-D para classificação do pixel atual p considerando as informações direcionais de borda,
como mostrado na FIG. 18. Da esquerda para a direita, esses são: 0 graus, 90 graus, 135 graus e 45 graus.
[00176] Cada CTB é classificado em uma das cinco categorias de acordo com a Tabela 2-7. Tabela 2-7 – Regra de classificação de pixel para EO Categoria Condição Significado 0 Nenhum dos abaixo Amplamente monotônico 1 p < 2 vizinhos Mínimo local 2 p <1 vizinho && p == 1 vizinho Borda 3 p > 1 vizinho && p == 1 vizinho Borda 4 p < 2 vizinhos Máximo local
[00177] O desvio de banda (BO) classifica todos os pixels em uma região CTB em 32 bandas uniformes usando os cinco bits mais significativos do valor de pixel como o índice de banda. Em outras palavras, a faixa de intensidade do pixel é dividida em 32 segmentos iguais de zero ao valor de intensidade máxima (por exemplo, 255 para pixels de 8 bits). Quatro bandas adjacentes são agrupadas e cada grupo é indicado por sua posição mais à esquerda, como mostrado na FIG.
19. O codificador procura todas as posições para obter o grupo com a redução de distorção máxima ao compensar o desvio de cada banda.
2.11 Inter e intrapredição combinada (CIIP)
[00178] Em VTM5, quando uma CU é codificada no modo de mesclagem, se a CU contém pelo menos 64 amostras de luma (ou seja, a largura da CU vezes a altura da CU é igual ou maior que 64), e se a largura da CU e a altura da CU são menores que 128 amostras de luma, um flag adicional é sinalizado para indicar se o modo de inter/intrapredição combinado (CIIP) é aplicado à CU atual. Como o próprio nome indica, a predição CIIP combina um sinal de interpredição com um sinal de intrapredição. O sinal de interpredição no modo CIIP 𝑃𝑖𝑛𝑡𝑒𝑟 é derivado usando o mesmo processo de interpredição aplicado ao modo de mesclagem regular; e o sinal de intrapredição 𝑃𝑖𝑛𝑡𝑟𝑎 é derivado seguindo o processo regular de intrapredição com o modo planar. Em seguida, os sinais de inter e intrapredição são combinados usando média ponderada, onde o valor de peso é calculado dependendo dos modos de codificação dos blocos vizinhos superior e esquerdo (representados na FIG. 20) da seguinte forma: – Se o vizinho superior estiver disponível e intracodificado, estabelecer isIntraTop como 1, caso contrário, estabelecer isIntraTop como 0; – Se o vizinho esquerdo estiver disponível e intracodificado, estabelecer isIntraLeft como 1, caso contrário, estabelecer isIntraLeft como 0; – Se (isIntraLeft isIntraLeft) é igual a 2, então wt é estabelecido como 3; – Caso contrário, se (isIntraLeft isIntraLeft) é igual a 1, então wt é estabelecido como 2; – Caso contrário, estabelecer wt como 1. A predição CIIP é formada da seguinte forma: 𝑃CIIP = ((4 − 𝑤𝑡) ∗ 𝑃𝑖𝑛𝑡𝑒𝑟 + 𝑤𝑡 ∗ 𝑃𝑖𝑛𝑡𝑟𝑎 + 2) ≫ 2 (3-1)
2.12 Mapeamento Luma com escala de croma (LMCS)
[00179] Em VTM5, uma ferramenta de codificação chamada mapeamento luma com escala de croma (LMCS) é adicionada como um novo bloco de processamento antes dos filtros de malha. O LMCS tem dois componentes principais: 1) mapeamento em malha do componente luma com base em modelos lineares por partes adaptativos; 2) para os componentes croma, a escala de resíduo de croma dependente de luma é aplicada. A FIG. 21 mostra a arquitetura LMCS a partir da perspectiva do decodificador. Os blocos sombreados em azul claro na FIG. 21 indicam onde o processamento é aplicado no domínio mapeado; e estes incluem a quantização inversa, transformada inversa, intrapredição luma e adição da predição luma junto com o resíduo de luma. Os blocos não sombreados na FIG. 21 indicam onde o processamento é aplicado no domínio original (isto é, não mapeado); e estes incluem filtros de malha, como deblocagem, ALF e SAO, predição compensada de movimento, intrapredição de croma, adição da predição de croma junto com o resíduo de croma e armazenamento de imagens decodificadas como imagens de referência. Os blocos sombreados em amarelo claro na FIG. 21 são os novos blocos funcionais LMCS, incluindo mapeamento direto e inverso do sinal luma e um processo de escala de croma dependente de luma. Como a maioria das outras ferramentas em VVC, o LMCS pode ser habilitado/desabilitado no nível de sequência usando um flag SPS.
3. Exemplos de Problemas Resolvidos pelas Modalidades
[00180] Um flag de paleta é geralmente usado para indicar se o modo de paleta é empregado na CU atual, que pode ter diferentes limitações e variações em sua codificação de entropia. No entanto, como codificar melhor o flag de paleta não foi totalmente estudado nos padrões de codificação de vídeo anteriores.
[00181] As amostras de paleta podem ter artefato visual se forem processadas pelo processo de filtragem pós-malha.
[00182] A ordem de varredura de paleta pode ser aprimorada para blocos não quadrados.
4. EXEMPLOS DE MODALIDADES
[00183] As invenções detalhadas abaixo devem ser consideradas como exemplos para explicar os conceitos gerais. Essas invenções não devem ser interpretadas de forma restrita. Além disso, essas invenções podem ser combinadas de qualquer maneira.
1. A indicação de uso de modo de paleta para uma unidade de transformada/unidade de predição/bloco/região de codificação pode ser codificada separadamente do modo de predição. a. Em um exemplo, o modo de predição pode ser codificado antes da indicação de uso de paleta. i. Alternativamente, além disso, a indicação de uso de paleta pode ser sinalizada condicionalmente com base no modo de predição.
1. Em um exemplo, quando o modo de predição é o modo de cópia de bloco intra (ou seja, MODE_IBC), a sinalização da indicação de uso de modo de paleta pode ser saltada. Alternativamente, além disso, a indicação de uso de paleta pode ser inferida com falsa quando o modo de predição atual é MODE_IBC.
2. Em um exemplo, quando o modo de predição é o modo inter (ou seja, MODE_INTER), a sinalização da indicação de uso de modo de paleta pode ser saltada. Alternativamente, além disso, a indicação de uso de modo de paleta pode ser inferida como falsa quando o modo de predição atual é MODE_INTER.
3. Em um exemplo, quando o modo de predição é o modo intra (ou seja, MODE_INTRA), a sinalização da indicação de uso de modo de paleta pode ser saltada. Alternativamente, além disso, a indicação de uso de modo de paleta pode ser inferida como falsa quando o modo de predição atual é MODE_INTRA.
4. Em um exemplo, quando o modo de predição é o modo de salto (ou seja, o flag de salto igual a 1), a sinalização da indicação de uso de modo de paleta pode ser saltada. Alternativamente, além disso, a indicação de uso de modo de paleta pode ser inferida como falsa quando o modo de salto é empregado na CU atual.
5. Em um exemplo, quando o modo de predição é o modo intra (ou seja, MODE_INTRA), a indicação de uso de modo de paleta pode ser sinalizada. Alternativamente, além disso, quando o modo de predição é o modo inter ou modo de cópia de bloco intra, a sinalização da indicação de uso de modo de paleta pode ser saltada. a) Alternativamente, além disso, quando o modo de predição é o modo intra e não o modo de modulação por código de Pulso (PCM), a indicação de uso de modo de paleta pode ser sinalizada. b) Alternativamente, além disso, quando o modo de predição é o modo intra, a indicação de uso de modo de paleta pode ser sinalizada antes da indicação de uso do modo PCM. Em um exemplo, quando o modo de paleta é aplicado, a sinalização de uso de modo PCM pode ser saltada. c) Alternativamente, além disso, quando o modo de predição é o modo inter ou modo de cópia de bloco intra, a sinalização da indicação de uso de modo de paleta pode ser saltada.
6. Em um exemplo, quando o modo de predição é o modo inter (ou seja, MODE_INTER), a indicação de uso de paleta pode ser sinalizada. a) Alternativamente, quando o modo de predição é o modo intra, a sinalização da indicação de uso de modo de paleta pode ser saltada.
7. Em um exemplo, quando o modo de predição é o modo de cópia de bloco intra, a indicação de uso de modo de paleta pode ser sinalizada. Alternativamente, além disso, quando o modo de predição é o modo inter ou modo intra, a sinalização da indicação de uso de modo de paleta pode ser saltada. ii. Alternativamente, além disso, a indicação de uso de modo de paleta pode ser sinalizada condicionalmente com base no tipo de grupo de imagem/fatia/ladrilho. b. Em um exemplo, o modo de predição pode ser codificado antes da indicação de uso de modo de paleta. c. Em um exemplo, a indicação de uso de modo de paleta pode ser sinalizada quando o modo de predição é o modo INTRA ou INTER_MODE. i. Em um exemplo, a indicação de uso de modo de paleta pode ser codificada após o flag de salto, modo de predição e o flag de modo PCM. ii. Em um exemplo, a indicação de uso de modo de paleta pode ser codificada após o flag de salto, modo de predição, antes do flag de modo PCM. iii. Em um exemplo, quando o bloco atual é codificado com modo intra, as indicações de paleta e modos IBC podem ser sinalizadas adicionalmente.
1. Em um exemplo, um flag de bit pode ser sinalizado para indicar se a paleta ou modo IBC é sinalizado.
2. Em um exemplo, a sinalização do flag de bit pode ser saltada sob certas condições, tais como dimensão de bloco, se IBC ou modo de paleta é habilitado para um ladrilho/grupo de ladrilhos/fatia/imagem/sequência. d. Em um exemplo, o modo de predição (como se é modo intra ou inter) pode ser codificado primeiramente, seguido pela sinalização condicional de se é o modo de paleta ou não. i. Em um exemplo, quando o modo de predição é o modo intra, outro flag pode ser ainda sinalizado para indicar se é o modo de paleta ou não.
1. Em um exemplo, o 'outro flag' pode ser sinalizado quando o modo de paleta é habilitado para uma unidade de dados de vídeo (por exemplo, sequência/imagem/grupo de ladrilhos/ladrilho).
2. Em um exemplo, o 'outro flag' pode ser sinalizado sob a condição de dimensão de bloco.
3. Alternativamente, além disso, se não é o modo de paleta, um flag pode ser ainda sinalizado para indicar se é o modo PCM ou não.
4. Em um exemplo, o 'outro flag' pode ser codificado por contexto de acordo com as informações de blocos vizinhos. Alternativamente, o 'outro flag' pode ser codificado por contexto com apenas um contexto. Alternativamente, o 'outro flag' pode ser codificado em bypass, ou seja, sem contexto.
ii. Alternativamente, quando o modo de predição é o modo inter, outro flag pode ser ainda sinalizado para indicar se é o modo IBC ou não.
1. Em um exemplo, o 'outro flag' pode ser sinalizado quando o modo IBC é habilitado para uma unidade de dados de vídeo (por exemplo, sequência/imagem/grupo de ladrilhos/ladrilho).
2. Em um exemplo, o 'outro flag' pode ser sinalizado sob a condição de dimensão de bloco.
2. Propõe-se adicionar o modo de paleta como um candidato adicional para o modo de predição. A indicação de uso de modo de paleta pode ser determinada/sinalizada com base no modo de predição, por exemplo, como discutido na modalidade exemplar 1 acima. Em algumas modalidades, não há necessidade de sinalizar a indicação de uso de modo de paleta separadamente do modo de predição. a. Em um exemplo, os modos de predição podem incluir modos intra, cópia de bloco intra e modos de paleta para fatias intra/imagens I/grupos de ladrilhos intra. b. Alternativamente, os modos de predição podem incluir modos intra, paleta para grupos de fatias intra/imagens I/ladrilho intra. c. Em um exemplo, os modos de predição podem incluir modos intra, cópia de bloco intra e paleta para blocos 4x4. d. Em um exemplo, os modos de predição podem incluir modos intra, inter, cópia de bloco intra e paleta para grupos de fatias inter/imagens P e/ou B/ladrilho inter. e. Em um exemplo, os modos de predição podem incluir modos de cópia inter, intra, bloco intra e para grupos de fatias inter/imagens
P e/ou B/ladrilho inter. f.
Alternativamente, os modos de predição podem incluir pelo menos dois dentre modo intra, inter, cópia de bloco intra e de paleta. g.
Em um exemplo, o modo inter pode não ser incluído nos modos de predição para blocos 4x4. h.
Em um exemplo, quando o bloco não é codificado como o modo de salto (que é um caso especial para o modo inter), o índice do modo de predição pode ser contextualmente codificado usando diferentes bins.
Em algumas modalidades, a sinalização de um ou mais bins pode ser saltada devido a uma condição, como a dimensão de bloco (por exemplo, 4x4) ou um modo de predição estar desabilitado (por exemplo, o modo IBC estar desabilitado de modo que o bin correspondente seja saltado). i.
Em um exemplo, a binarização dos quatro modos é definida como: intra (1), inter (00), IBC (010) e Paleta (011). Aqui, três bins são usados, com cada bit correspondendo a um valor de bin. ii.
Em um exemplo, a binarização dos quatro modos é definida como: intra (10), inter (00), IBC (01) e Paleta (11), conforme mostrado na FIG. 10. Aqui, três bins são usados, com cada bit correspondendo a um valor de bin. iii.
Em um exemplo, se a fatia atual é uma fatia intra e IBC não é habilitado no SPS, a binarização da Paleta e modos intra é definida como: Paleta (1) e intra (0). Aqui, um bin é usado. iv.
Em um exemplo, se a fatia atual não é uma fatia intra e IBC não é habilitado no SPS, a binarização dos modos Paleta, inter e intra é definida como: intra (1), inter (00), e Paleta (01).
Aqui, dois bins são usados, com cada bit correspondendo a um valor de bin. v. Em um exemplo, se a fatia atual é uma fatia intra e IBC é habilitado no SPS, a binarização da Paleta e modos intra é definida como: IBC (1), Paleta (01) e intra (00). Aqui, dois bins são usados, com cada bit correspondendo a um valor de bin. vi. Em um exemplo, a binarização dos quatro modos é definida como: inter (1), intra (01), IBC (001) e Paleta (000). Aqui, três bins são usados, com cada bit correspondendo a um valor de bin. vii. Em um exemplo, a binarização dos quatro modos é definida como: intra (1), inter (01), IBC (001) e Paleta (000). Aqui, três bins são usados, com cada bit correspondendo a um valor de bin. viii. Em um exemplo, a binarização dos quatro modos é definida como: inter (0), intra (10), IBC (111) e Paleta (110), conforme mostrado na FIG. 11. Aqui, três bins são usados, com cada bit correspondendo a um valor de bin.
3. A sinalização da indicação de uso de modo de paleta/IBC pode depender das informações do outro modo. a. Em um exemplo, a indicação de uso de modo de paleta pode ser sinalizada quando o modo de predição atual é um modo intra e não um modo IBC. b. Em um exemplo, a indicação de uso de modo de IBC pode ser sinalizada quando o modo de predição atual é um modo intra e não um modo de paleta.
4. Como sinalizar as informações de modo pode depender do tipo de fatia/imagem/grupo de ladrilhos. a. Em um exemplo, quando é o grupo I-fatia/ladrilho intra, um flag pode ser sinalizado para indicar se é o modo IBC. Se não é o modo IBC, outro flag pode ser sinalizado para indicar se é o modo de paleta ou modo intra. b. Em um exemplo, quando é I-fatia/grupo de ladrilhos intra, um flag pode ser sinalizado para indicar se é o modo intra. Se não é o modo intra, outro flag pode ser sinalizado para indicar se é o modo de paleta ou IBC.
5. A indicação de uso de modo de paleta pode ser sinalizada e/ou derivada com base nas seguintes condições. a. dimensão do bloco de bloco atual i. Em um exemplo, a indicação de uso de modo de paleta pode ser sinalizada apenas para blocos com largura * altura menor que ou igual a um limite, como 64*64. ii. Em um exemplo, a indicação de uso de modo de paleta pode ser sinalizada apenas para blocos com ambas a largura e altura maior ou igual a um limite, como 64 iii. Em um exemplo, a indicação de uso de modo de paleta pode ser sinalizada apenas para blocos com todas as condições abaixo verdadeiras:
1. largura e/ou altura maior que ou igual a um limite, como 16;
2. largura e/ou altura menor que ou igual a um limite, como 32 ou 64 iv. Em um exemplo, a indicação de uso de modo de paleta pode ser sinalizada apenas para blocos com largura igual a altura
(ou seja, blocos quadrados) b. modo de predição de bloco atual c. Parâmetro de quantização atual de bloco atual d. O flag de paleta de blocos vizinhos e. Os flags de cópia de bloco intra de blocos vizinhos f. Indicação do formato de cor (como 4:2:0, 4:4:4) g. Estrutura em árvore de codificação dupla/separada h. Tipo de fatia/grupo de ladrilhos e/ou tipo de imagem
6. A indicação de uso de modo IBC pode ser sinalizada e/ou derivada com base nas seguintes condições. a. dimensão do bloco de bloco atual i. Em um exemplo, a indicação de uso de modo IBC pode ser sinalizada apenas para blocos tanto com largura ou altura menor que 128 b. modo de predição de bloco atual c. Parâmetro de quantização atual de bloco atual d. O flag de paleta de blocos vizinhos e. Os flags de cópia de bloco intra de blocos vizinhos f. Indicação do formato de cor (como 4:2:0, 4:4:4) g. Estrutura em árvore de codificação dupla/separada h. Tipo de fatia/grupo de ladrilhos e/ou tipo de imagem
7. O modo de paleta pode ser tratado como modo intra (por exemplo, MODE_INTRA) no processo de decisão de deblocagem. a. Em um exemplo, se as amostras em lado p ou lado q são codificadas com o modo de paleta, a intensidade de fronteira é estabelecida como 2. b. Em um exemplo, se as amostras em lado p ou lado q são codificadas com o modo de paleta, a intensidade de fronteira é estabelecida como 2. c. Alternativamente, o modo de paleta pode ser tratado como modo intra (por exemplo, MODE_INTER) no processo de decisão de deblocagem.
8. O modo de paleta pode ser tratado como um modo separado (por exemplo, MODE_PLT) no processo de decisão de deblocagem. a. Em um exemplo, se as amostras em lado p ou lado q são codificadas com o modo de paleta, a intensidade de fronteira é estabelecida como 0. i. Alternativamente, se as amostras em um lado são codificadas com o modo de paleta, a intensidade de fronteira é estabelecida como 0. b. Em um exemplo, se as amostras em lado p são codificadas com o modo IBC e as amostras em lado q são codificadas com o modo de paleta, a intensidade de fronteira é estabelecida como 1, vice-versa. c. Em um exemplo, se as amostras em lado p são codificadas com o modo IBC e as amostras em lado q são codificadas com o modo de paleta, a intensidade de fronteira é estabelecida como 2, vice-versa.
9. O modo de paleta pode ser tratado como um bloco de salto de transformada no processo de deblocagem. a. O modo de paleta pode ser tratado como um bloco BDPCM no processo de deblocagem.
10. A indicação de uso de modo de paleta para um bloco pode ser sinalizada e/ou derivada com base no flag de nível de fatia/grupo de ladrilhos/nível de imagem a. Em um exemplo, o flag indica se a diferença fracionária do vetor de movimento (MVD) é permitida na fusão com a diferença de vetor de movimento (MMVD, também conhecido como UMVE) e/ou modo de resolução de vetor de movimento adaptativo (AMVR), (por exemplo, slice_fracmmvd_flag) Alternativamente, além disso, se o slice_fracmmvd_flag indica que o MVD fracionário é habilitado, a sinalização de indicação de uso de modo de paleta é saltada e o modo de paleta é inferido como desabilitado. b. Em um exemplo, o flag indica se o modo de paleta é habilitado para a imagem/grupo de ladrilhos/fatia. Alternativamente, além disso, quando um tal flag indica que o modo de paleta está desabilitado, a sinalização de uso de modo de paleta para um bloco é saltada e o modo de paleta é inferido como desabilitado.
11. A indicação de uso de modo de cópia de bloco intra (IBC) para um bloco pode ser sinalizada e/ou derivada com base no flag de nível de fatia/grupo de ladrilhos/imagem. a. Em um exemplo, o flag indica se a diferença fracionária de vetor de movimento (MVD) é permitida na fusão com a diferença de vetor de movimento (MMVD, também conhecido como UMVE) e/ou modo de resolução de vetor de movimento adaptativo (AMVR), (por exemplo, slice_fracmmvd_flag). Alternativamente, além disso, se o slice_fracmmvd_flag indica que o MVD fracionário é habilitado, a sinalização de indicação de uso de modo IBC é saltada e o modo IBC é inferido como desabilitado. b. Em um exemplo, o flag indica se o modo IBC é habilitado para a fatia/grupo de ladrilhos/imagem. Alternativamente, além disso, quando um tal flag indica que o modo IBC está desabilitado, a sinalização de uso de modo IBC para um bloco é saltada e o modo
IBC é inferido como desabilitado.
12. A amostra associada a uma entrada de paleta pode ter profundidades de bit diferentes da profundidade de bit interna e/ou a profundidade de bit das amostras originais/reconstruídas. a. Em um exemplo, denota que a amostra associada a um pode ter a profundidade de bit igual a N, o seguinte pode se aplicar: i. Em um exemplo, N pode ser um número inteiro (por exemplo, 8). ii. Em um exemplo, N pode ser maior do que a profundidade de bit interna e/ou a profundidade de bit de amostras originais/reconstruídas. iii. Em um exemplo, N pode ser menor do que a profundidade de bit interna e/ou a profundidade de bit de amostras originais/reconstruídas. iv. Em um exemplo, N pode depender de
1. Dimensão do bloco de bloco atual
2. Parâmetro de quantização atual de bloco atual
3. Indicação do formato de cor (como 4:2:0, 4:4:4)
4. Estrutura em árvore de codificação dupla/separada
5. Tipo de fatia/grupo de ladrilhos e/ou tipo de imagem
6. Número de entradas de paleta
7. Número de entradas de paleta de predição
8. Índice de componente de cor b. Em um exemplo, a amostra associada a múltiplas entradas de paleta pode ter diferentes profundidades de bit. i. Em um exemplo, sejam C0 e C1 duas entradas de paleta na paleta atual, e elas podem ter profundidade de bit igual a b0 e b1, respectivamente. b0 pode ser diferente de b1
1. Em um exemplo, b0 pode ser maior/menor do que a profundidade de bit interna e/ou a profundidade de bit de amostras originais/reconstruídas e/ou b1 pode ser maior/menor do que a profundidade de bit interna e/ou a profundidade de bit de amostras originais/reconstruídas. c. Em um exemplo, no modo de paleta, as amostras podem ser reconstruídas de acordo com os valores deslocados das amostras associadas às entradas de paleta. i. Em um exemplo, as amostras podem ser reconstruídas ao deslocar para a esquerda as amostras nas entradas de paleta por M bits. ii. Em um exemplo, o valor reconstruído pode ser (C<<M) + (1<<(M-1)), em que C é a entrada de paleta. iii. Em um exemplo, as amostras podem ser reconstruídas ao deslocar para a direita as amostras nas entradas de paleta por M bits. iv. Em um exemplo, o valor reconstruído pode ser clip((C+(1<<(M-1)))>>M, 0, (1<<N)-1), em que C é a entrada de paleta e N é a profundidade de bit de reconstrução. v. Alternativamente, além disso, em um exemplo, o M pode depender da diferença de profundidade de bit entre as amostras associadas a entradas de paleta e a profundidade de bit interna de amostras reconstruídas/amostras originais.
1. Em um exemplo, M pode ser igual à profundidade de bit interna menos a profundidade de bit das amostras nas entradas de paleta
2. Em um exemplo, M pode ser igual à profundidade de bit de amostras nas entradas de paleta menos a profundidade de bit interna
3. Em um exemplo, M pode ser igual à profundidade de bit de amostras originais menos a profundidade de bit das amostras nas entradas de paleta
4. Em um exemplo, M pode ser igual à profundidade de bit de amostras nas entradas de paleta menos a profundidade de bit das amostras originais.
5. Em um exemplo, M pode ser igual à profundidade de bit de amostras reconstruídas menos a profundidade de bit das amostras nas entradas de paleta.
6. Em um exemplo, M pode ser igual à profundidade de bit de amostras nas entradas de paleta menos a profundidade de bit das amostras reconstruídas. vi. Em um exemplo, M pode ser um número inteiro (por exemplo, 2). vii. Alternativamente, além disso, em um exemplo, o M pode depender de
1. Dimensão do bloco de bloco atual
2. Parâmetro de quantização atual de bloco atual
3. Indicação do formato de cor (como 4:2:0, 4:4:4)
4. Estrutura em árvore de codificação dupla/separada
5. Tipo de fatia/grupo de ladrilhos e/ou tipo de imagem
6. Número de entradas de paleta
7. Número de entradas de paleta de predição
8. Posição da amostra em um bloco/imagem/fatia/ladrilho
9. Índice de componente de cor viii. Em um exemplo, uma operação de consulta com base nas amostras nas entradas de paleta pode ser usada durante a reconstrução da amostra.
1. Em um exemplo, os valores na tabela de consulta podem ser sinalizados no SPS/VPS/PPS/cabeçalho de imagem/cabeçalho de fatia/cabeçalho de grupo de ladrilhos/fileira LCU/grupo de LCUs.
2. Em um exemplo, os valores na tabela de consulta podem ser inferidos no SPS/VPS/PPS/cabeçalho de imagem/cabeçalho de fatia/cabeçalho de grupo de ladrilhos/fileira LCU/grupo de LCUs.
13. O parâmetro de quantização sinalizado/derivado (QP) para blocos codificados por paleta pode ser modificado em primeiro lugar antes de ser usado para derivar amostras/pixels de escape, tal como ser recortado. a. Em um exemplo, a faixa QP aplicada para blocos codificados por paleta pode ser tratada da mesma maneira que o modo de salto de transformada e/ou modo BDPCM. b. Em um exemplo, o QP aplicado para blocos codificados por paleta pode ser revisado para ser max(Qp, 4 + T), onde T é um valor inteiro e Qp é o parâmetro de quantização sinalizado ou derivado para o bloco. i. Em um exemplo, T pode ser um limite predefinido. ii. Em um exemplo, T pode ser igual a (4 + min_qp_prime_ts_ minus4) em que min_qp_prime_ts_ minus4 pode ser sinalizado.
14. Como codificar amostras/símbolos de escape pode ser unificado independentemente de o transquant-bypass ser habilitado ou não. a. Em um exemplo, a amostra de escape pode ser sinalizada com comprimento fixo. b. Em um exemplo, uma amostra de escape pode ser sinalizada em comprimento fixo usando N bits. i. Em um exemplo, N pode ser um número inteiro (por exemplo, 8 ou 10) e pode depender de
1. Uma mensagem sinalizada no SPS/VPS/PPS/cabeçalho de imagem/cabeçalho de fatia/cabeçalho do grupo de ladrilhos/fileira LCU/grupo de LCUs.
2. Profundidade de bit interna
3. Profundidade de bit de entrada
4. Dimensão do bloco de bloco atual
5. Parâmetro de quantização atual de bloco atual
6. Indicação do formato de cor (como 4:2:0, 4:4:4)
7. Estrutura em árvore de codificação dupla/separada
8. Tipo de fatia/grupo de ladrilhos e/ou tipo de imagem c. Em um exemplo, o comprimento de código para sinalizar um pixel/amostra de escape pode depender da profundidade de bit interna. i. Alternativamente, o comprimento de código para sinalizar um pixel/amostra de escape pode depender da profundidade de bit de entrada. d. Em um exemplo, o comprimento de código para sinalizar um pixel/amostra de escape pode depender do parâmetro de quantização. i. Em um exemplo, o comprimento de código para sinalizar um pixel/amostra de escape pode ser f(Qp)
1. Em um exemplo, a função f pode ser definida como (profundidade de bit interna - (Qp - 4)/6).
15. O processo de quantização e/ou quantização inversa para blocos codificados por paleta e blocos não codificados por paleta pode ser definido de diferentes maneiras. a. Em um exemplo, o deslocamento de bit para a direita pode ser usado para quantizar a amostra de escape em vez de usar o processo de quantização para coeficientes de transformada ou resíduos. b. Em um exemplo, o deslocamento de bit para a esquerda pode ser usado para quantizar a amostra de escape em vez de usar o processo de quantização inverso para coeficientes de transformada ou resíduos. c. No lado do codificador, o seguinte pode se aplicar: i. Em um exemplo, o valor de amostra/pixel de escape pode ser sinalizado como f(p, Qp), onde p é o valor de pixel/amostra. ii. Em um exemplo, a função f pode ser definida como p>>((Qp- 4)/6), onde p é o valor de pixel/amostra e Qp é o parâmetro de quantização. iii. Em um exemplo, o valor de amostra/pixel de escape pode ser sinalizado como p>>N, onde p é o valor de pixel/amostra.
1. Em um exemplo, N pode ser um número inteiro (por exemplo, 2) e pode depender de a) Uma mensagem sinalizada no
SPS/VPS/PPS/cabeçalho de imagem/cabeçalho de fatia/cabeçalho de grupo de ladrilhos/fileira LCU/grupo de LCUs. b) Profundidade de bit interna c) Profundidade de bit de entrada d) Dimensão do bloco de bloco atual e) Parâmetro de quantização atual de bloco atual f) Indicação do formato de cor (como 4:2:0, 4:4:4) g) Estrutura em árvore de codificação dupla/separada h) Tipo de fatia/grupo de ladrilhos e/ou tipo de imagem d. No lado do codificador, o seguinte pode se aplicar: i. Em um exemplo, o pixel/amostra de escape pode ser sinalizado como f(bd, p, Qp)
1. Em um exemplo, a função f pode ser definida como clip(0, (1<<(bd-(Qp-4)/6))-1, (p + (1<<(bd-1)))>>((Qp- 4)/6)). ii. Em um exemplo, o valor de amostra/pixel de escape pode ser reconstruído como f(p, Qp), onde p é o valor de pixel/amostra de escape decodificado.
1. Em um exemplo, f pode ser definida como p<<((Qp- 4)/6) iii. Em um exemplo, o valor de amostra/pixel de escape pode ser reconstruído como f(bd,p,Qp), onde p é o valor de pixel/amostra de escape decodificado.
1. Em um exemplo, a função de recorte pode ser definida como clip(0, (1<<bd)-1, p<<((Qp-4)/6)) iv. Nos exemplos acima, a função de recorte clip(a, i, b) pode ser definida como (i < a ? a : (i > b ? b : i)). v. Nos exemplos acima, a função de recorte clip(a, i, b) pode ser definida como (i <= a ? a : (i >= b ? b : i)). vi. Nos exemplos acima, p pode ser o valor de pixel/amostra, bd pode ser a profundidade de bit interna ou profundidade de bit de entrada e Qp é o parâmetro de quantização.
16. Um bloco codificado por paleta pode ser tratado como um bloco intra (por exemplo, MODE_INTRA) durante o processo de construção da lista dos modos mais prováveis (MPM). a. Em um exemplo, ao coletar os modos intra de blocos vizinhos (adjacentes ou não adjacentes) durante a construção da lista de MPM, se um bloco vizinho (por exemplo, à esquerda e/ou acima) é codificado com o modo de paleta, ele pode ser tratado como bloco intracodificado convencional (por exemplo, MODE_INTRA) com um modo padrão. i. Em um exemplo, o modo padrão pode ser o modo DC/PLANAR/VER/HOR. ii. Em um exemplo, o modo padrão pode ser qualquer um do modo de intrapredição. iii. Em um exemplo, o modo padrão pode ser sinalizado em DPS/SPS/VPS/PPS/APS/cabeçalho de imagem/cabeçalho de fatia/cabeçalho de grupo de ladrilhos/maior unidade de codificação (LCU)/unidade de codificação (CU)/fileira LCU/grupo de LCUs/TU/bloco PU/unidade de codificação de vídeo.
17.Um bloco codificado por paleta pode ser tratado como um não-bloco intra (por exemplo, tratado como um bloco com modo de predição igual a MODE_PLT) durante o processo de construção de lista dos modos mais prováveis (MPM). a. Em um exemplo, ao coletar os modos intra de blocos vizinhos durante a construção da lista de MPM, se um bloco vizinho (por exemplo, à esquerda e/ou acima) é codificado com o modo de paleta, ele pode ser tratado da mesma maneira ou de uma maneira similar àqueles codificados com modo inter. b. Em um exemplo, ao coletar os modos intra de blocos vizinhos durante a construção da lista de MPM, se um bloco vizinho (por exemplo, à esquerda e/ou acima) é codificado com o modo de paleta, ele pode ser tratado da mesma maneira ou de uma maneira similar àqueles codificados com modo IBC.
18. O bloco luma codificado com o modo de paleta correspondente a um bloco croma codificado com o modo DM pode ser interpretado como tendo um modo intrapredição padrão. a. Em um exemplo, o bloco luma correspondente codificado com o modo de paleta pode ser tratado como um bloco intra (por exemplo, MODE_INTRA) ou um bloco de paleta (por exemplo, MODE_PLT) quando um bloco de croma é codificado com o modo DM. b. Em um exemplo, o modo de predição padrão pode ser o modo DC/PLANAR/VER/HOR. c. Em um exemplo, o modo de predição padrão pode ser qualquer um modo intrapredição. d. Em um exemplo, o modo de predição padrão pode ser sinalizado em DPS/SPS/VPS/PPS/APS/cabeçalho de imagem/cabeçalho de fatia/cabeçalho de grupo de ladrilhos/maior unidade de codificação (LCU)/unidade de codificação (CU)/fileira LCU/grupo de LCUs/TU/bloco PU/unidade de codificação de vídeo.
19. Um bloco codificado por paleta pode ser tratado como um bloco indisponível durante a construção de lista dos modos de predição de vetor de movimento com base em histórico (HMVP), na mesclagem (MERGE) e/ou nos modos de predição de vetor de movimento avançado (AMVP). a. Em um exemplo, um bloco indisponível pode denotar um bloco que não tem nenhuma informação de movimento ou suas informações de movimento não poderiam ser usadas como uma predição para outros blocos. b. Em um exemplo, um bloco codificado com o modo de paleta pode ser tratado como um bloco intra (por exemplo, MODE_INTRA) ou um bloco de paleta (por exemplo, MODE_PLT) no processo de construção de lista nos modos HMVP, MERGE e/ou AMVP. i. Alternativamente, em um exemplo, ao coletar as informações de movimento de blocos vizinhos durante a construção da lista HMVP, MERGE e/ou AMVP, um bloco vizinho codificado com o modo de paleta pode ser tratado como um bloco com um índice de referência inválido. ii. Alternativamente, em um exemplo, ao coletar as informações de movimento de blocos vizinhos durante a construção da lista HMVP, MERGE e/ou AMVP, um bloco vizinho codificado com o modo de paleta pode ser tratado como um interbloco com um índice de referência igual a 0. iii. Alternativamente, em um exemplo, ao coletar as informações de movimento de blocos vizinhos durante a construção de lista dos modos HMVP, MERGE e/ou AMVP, um bloco vizinho codificado com o modo de paleta pode ser tratado como um interbloco com um vetor de movimento zero.
20. Como tratar um bloco codificado com o modo de paleta (por exemplo, se para e/ou como aplicar os métodos acima) pode ser baseado em: a. Conteúdos de vídeo (por exemplo, conteúdos de tela ou conteúdos naturais) b. Uma mensagem sinalizada no DPS/SPS/VPS/PPS/APS/cabeçalho de imagem/cabeçalho de fatia/cabeçalho de grupo de ladrilhos/maior unidade de codificação (LCU)/unidade de codificação (CU)/fileira LCU/grupo de LCUs/TU/bloco PU/unidade de codificação de vídeo. c. Posição de CU/PU/TU/bloco/unidade de codificação de vídeo d. Dimensão de bloco do bloco atual e/ou seus blocos vizinhos e. Formato de bloco do bloco atual e/ou seus blocos vizinhos f. Indicação do formato de cor (como 4:2:0, 4:4:4, RGB ou YUV) g. Estrutura da árvore de codificação (como árvore dupla ou árvore única) h. Tipo de fatia/grupo de ladrilhos e/ou tipo de imagem i. Componente de cor (por exemplo, pode ser aplicado apenas em componente luma e/ou componente croma) j. ID de camada temporal k. Perfis/Níveis/Tiers de um padrão
21. Os bins codificados por contexto para blocos codificados por paleta podem ser restritos a uma determinada faixa. a. Em um exemplo, um contador é atribuído a um bloco para registrar quantos bins foram codificados por contexto. Quando o contador excede um limite, a codificação de bypass é aplicada em vez de usar a codificação por contexto. i.
Alternativamente, os contadores NumColorComp podem ser atribuídos para registrar quantos bins foram codificados por contexto para cada componente de cor.
NumColorComp é o número de componentes de cor a serem codificados em um bloco (por exemplo, para uma CU em formato YUV, NumColorComp é estabelecido como 3). ii.
Alternativamente, um contador pode ser inicializado para ser zero, e após de codificar um bin com o contexto, o contador é aumentado em um. b.
Alternativamente, um contador pode ser inicializado com algum valor maior que zero (por exemplo, W*H*K) e depois de codificar um bin com o contexto, o contador é diminuído em um.
Quando o contador é menor que ou igual a T, a codificação de bypass é aplicada em vez de usar a codificação por contexto. i.
Em um exemplo, T é estabelecido como 0 ou 1. ii.
Em um exemplo, T é estabelecido de acordo com as informações decodificadas ou número de passagens de codificação etc. al. c.
Em um exemplo, os blocos codificados por paleta podem ter um limite igual ou diferente em comparação aos blocos codificados por TS ou blocos não codificados por TS em termos de bins codificados por contexto. i.
Em um exemplo, o número de bins codificados por contexto para um bloco codificado por paleta pode ser estabelecido como (W*H*T), em que W e H são a largura e a altura de um bloco, respectivamente, e T é um número inteiro. Em um exemplo, T é estabelecido para ser o mesmo usado para blocos codificados por TS, como 1,75 ou 2. ii. Em um exemplo, o número de bins codificados por contexto para um bloco codificado por paleta pode ser estabelecido como (W*H*NumColorComp*T) em que W e H são a largura e a altura de um bloco, respectivamente; NumColorComp é o número de componentes de cor a serem codificados em um bloco (por exemplo, para uma CU em formato YUV, NumColorComp é estabelecido como 3), e T é um número inteiro. Em um exemplo, T é estabelecido para ser o mesmo usado para blocos codificados por TS, como 1,75 ou 2. d. Em um exemplo, o limite de blocos codificados por paleta pode ser menor do que blocos codificados por TS ou blocos não codificados por TS em termos de bins codificados por contexto. e. Em um exemplo, o limite de blocos codificados por paleta pode ser maior do que blocos codificados por TS ou blocos não codificados por TS em termos de bins codificados por contexto.
22. Um bloco codificado por paleta pode ser tratado como um bloco não intra (por exemplo, tratado como um bloco com modo de predição igual a MODE_PLT) durante o processo de contagem de blocos intra vizinhos em modo CIIP. a. Em um exemplo, ao coletar os modos intra de blocos vizinhos durante a contagem de blocos intra vizinhos em modo CIIP, se um bloco vizinho (por exemplo, à esquerda e/ou acima) é codificado com o modo de paleta, ele pode ser tratado da mesma maneira ou de uma maneira similar àqueles codificados com modo inter.
b. Em um exemplo, ao coletar os modos intra de blocos vizinhos durante a contagem de blocos intra vizinhos em modo CIIP, se um bloco vizinho (por exemplo, à esquerda e/ou acima) é codificado com o modo de paleta, ele pode ser tratado da mesma maneira ou de uma maneira similar àqueles codificados com modo IBC. c. Alternativamente, um bloco codificado por paleta pode ser tratado como um bloco intra durante o processo de contagem de blocos intra vizinhos em modo CIIP.
23. Propõe-se saltar os processos de pré e/ou pós-filtragem para amostras codificadas por paleta. a. Em um exemplo, as amostras codificadas por paleta podem não ser deblocadas. b. Em um exemplo, as amostras codificadas por paleta podem não ser compensadas por um desvio no processo de SAO. c. Em um exemplo, as amostras codificadas por paleta podem não ser filtradas no processo de ALF. i. Em um exemplo, a classificação no processo de ALF pode saltar as amostras codificadas por paleta. d. Em um exemplo, o LMCS pode ser desabilitado para amostras codificadas por paleta.
24. Propõe-se adicionar mais ordens de varredura no modo de paleta. a. Em um exemplo, a ordem de varredura transversal horizontal reversa definida como segue pode ser usada. i. Em um exemplo, a direção da varredura para as fileiras ímpares pode ser da esquerda para a direita. ii. Em um exemplo, a direção da varredura para as fileiras pares pode ser da direita para a esquerda.
iii. Em um exemplo, a ordem de varredura para um bloco 4x4 pode ser como mostrado na Fig. 22. b. Em um exemplo, a ordem de varredura transversal vertical reversa definida como segue pode ser usada. i. Em um exemplo, a direção da varredura para as fileiras ímpares pode ser da superior para a inferior. ii. Em um exemplo, a direção da varredura para as fileiras pares pode ser da inferior para a superior. iii. Em um exemplo, a ordem de varredura para um bloco 4x4 pode ser como mostrado na Fig. 23.
25. A combinação de ordens de varredura permitidas pode depender do formato de bloco. a. Em um exemplo, quando a razão entre a largura e a altura de um bloco é maior do que um limite, apenas as ordens de varredura transversal horizontal e transversal horizontal reversa podem ser aplicadas. i. Em um exemplo, o limite é igual a 1. ii. Em um exemplo, o limite é igual a 4. b. Em um exemplo, quando a razão entre a altura e a largura de um bloco é maior do que um limite, apenas as ordens de varredura transversal vertical e transversal vertical reversa podem ser aplicadas. i. Em um exemplo, o limite é igual a 1. ii. Em um exemplo, o limite é igual a 4.
26. Propõe-se permitir apenas uma direção de intrapredição e/ou uma direção de varredura no processo QR-BDPCM. a. Em um exemplo, apenas a direção vertical é permitida em um bloco com largura maior que a altura. b. Em um exemplo, apenas a direção horizontal é permitida em um bloco com largura menor que a altura. c. Em um exemplo, a indicação da direção de QR-BDPCM pode ser inferida para um bloco não quadrado. i. Em um exemplo, além disso, a indicação da direção de QR- BDPCM pode ser inferida para a direção vertical para um bloco com largura maior que a altura. ii. Em um exemplo, além disso, a indicação da direção de QR- BDPCM pode ser inferida para a direção horizontal para um bloco com largura maior que a altura.
27. Os métodos nos tópicos 24,25 e 26 podem ser aplicados apenas em um bloco com w*Th >= h ou h*Th >= w, onde w e h são a largura e a altura do bloco, respectivamente, e Th é um limite. a. Em um exemplo, Th é um número inteiro (por exemplo, 4 ou 8) e pode ser baseado em i. Conteúdos de vídeo (por exemplo, conteúdos de tela ou conteúdos naturais) ii. Uma mensagem sinalizada no DPS/SPS/VPS/PPS/APS/cabeçalho de imagem/cabeçalho de fatia/cabeçalho de grupo de ladrilhos/maior unidade de codificação (LCU)/unidade de codificação (CU)/fileira LCU/grupo de LCUs/TU/bloco PU/unidade de codificação de vídeo. iii. Posição de CU/PU/TU/bloco/unidade de codificação de vídeo iv. Dimensão de bloco do bloco atual e/ou seus blocos vizinhos v. Formato de bloco do bloco atual e/ou seus blocos vizinhos vi. Indicação do formato de cor (como 4:2:0, 4:4:4, RGB ou YUV) vii. Estrutura da árvore de codificação (como árvore dupla ou árvore única) viii. Tipo de fatia/grupo de ladrilhos e/ou tipo de imagem ix. Componente de cor (por exemplo, pode ser aplicado apenas em componente luma e/ou componente croma) x. ID de camada temporal xi. Perfis/Níveis/Tiers de um padrão
5. Modalidades Adicionais
5.1 Modalidade 1
[00190] Esta seção mostra um exemplo de modalidade na qual a representação de bitstream de vídeo pode ser alterada em comparação com a sintaxe de bitstream de linha de base. As alterações são destacadas usando entradas de texto em negrito e itálico. seq_parameter_set_rbsp( ) { Descritor sps_max_sub_layers_minus1 u(3) … sps_gbi_enabled_flag u(1) sps_ibc_enabled_flag u(1) sps_plt_enabled_flag u(1) … } sps_plt_enabled_flag igual a 1 especifica que o modo de paleta pode ser usado na decodificação de imagens em CVS. sps_plt_enabled_flag igual a 0 especifica que o modo de paleta não é usado em CVS. Quando sps_plt_enabled_flag não está presente, assume-se como sendo igual a 0. coding_unit( x0, y0, cbWidth, cbHeight, treeType) { Descritor if (tile_group_type! = I | | sps_ibc_enabled_flag || sps_plt_enabled_flag) { if (treeType! = DUAL_TREE_CHROMA) cu_skip_flag[ x0 ][ y0 ] ae(v) if (cu_skip_flag [x0] [y0] = = 0 && tile_group_type! = I) pred_mode_flag ae(v) if (((tile_group_type = = I && cu_skip_flag [x0] [y0] = = 0) | | (tile_group_type! = I && CuPredMode [x0] [y0]! = MODE_INTRA)) && (sps_ibc_enabled_flag || sps_plt_enabled_flag) pred_mode_scc_flag ae(v) if (scc_mode_flag) { if(sps_ibc_enabled_flag) { ae(v) pred_mode_ibc_flag } if(sps_plt_enabled_flag) { pred_mode_plt_flag ae(v) } } } … } pred_mode_scc_flag igual a 1 especifica que a unidade de codificação atual é codificada por um modo de codificação de conteúdo de tela. pred_mode_scc_flag igual a 0 especifica que a unidade de codificação atual não é codificada por um modo de codificação de conteúdo de tela Quando pred_mode_scc_flag não está presente, assume-se como sendo igual a 0. pred_mode_plt_flag igual a 1 especifica que a unidade de codificação atual é codificada no modo de paleta. pred_mode_plt_flag igual a 0 especifica que a unidade de codificação atual não é codificada no modo de paleta.
Quando pred_mode_plt_flag não está presente, assume-se como sendo igual ao valor de sps_plt_enabled_flag ao decodificar um grupo de ladrilhos I, e 0 ao decodificar um grupo de ladrilhos P ou B, respectivamente.
Quando pred_mode_scc_flag é igual a 1 e sps_ibc_enabled_flag é igual a 0, o pred_mode_plt_flag é inferido como igual a 1. Quando pred_mode_ibc_flag é igual a 1, a variável CuPredMode[ x ][ y ] é estabelecida para ser igual a MODE_PLT para x = x0..x0 + cbWidth − 1 e y = y0..y0 + cbHeight − 1. coding_unit( x0, y0, cbWidth, cbHeight, treeType ) { Descritor if( tile_group_type != I || sps_ibc_enabled_flag || sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA ) cu_skip_flag[ x0 ][ y0 ] ae(v) if (cu_skip_flag [x0] [y0] = = 0 && tile_group_type! = I) pred_mode_flag ae(v) if( ( ( tile_group_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && (sps_ibc_enabled_flag) pred_mode_ibc_flag ae(v)
if( ( ( tile_group_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && sps_plt_enabled_flag && CuPredMode[ x0 ][ y0 ] != MODE_IBC pred_mode_plt_flag ae(v) } … } if( tile_group_type != I || sps_ibc_enabled_flag || sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA ) cu_skip_flag[ x0 ][ y0 ] ae(v) if (cu_skip_flag [x0] [y0] = = 0 && tile_group_type! = I) pred_mode_flag ae(v) if( ( ( tile_group_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && (sps_ibc_enabled_flag) pred_mode_ibc_flag ae(v) if( CuPredMode[ x0 ][ y0 ] == MODE_INTRA && sps_plt_enabled_flag ) pred_mode_plt_flag ae(v) } … } pred_mode_plt_flag igual a 1 especifica que a unidade de codificação atual é codificada no modo de paleta. pred_mode_plt_flag igual a 0 especifica que a unidade de codificação atual não é codificada no modo de paleta.
Quando pred_mode_plt_flag não está presente, assume-se como sendo igual ao valor de sps_plt_enabled_flag ao decodificar um grupo de ladrilhos I, e 0 ao decodificar um grupo de ladrilhos P ou B, respectivamente.
Quando pred_mode_ibc_flag é igual a 1, a variável CuPredMode[ x ][ y ] é estabelecida para ser igual a MODE_PLT para x = x0..x0 + cbWidth − 1 e y = y0..y0 + cbHeight − 1. coding_unit( x0, y0, cbWidth, cbHeight, treeType ) { Descritor if( tile_group_type != I || sps_ibc_enabled_flag || sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA ) cu_skip_flag[ x0 ][ y0 ] ae(v) if (cu_skip_flag [x0] [y0] = = 0 && tile_group_type! = I) pred_mode_flag ae(v) if( ( ( tile_group_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) || ( tile_group_type != I && CuPredMode[ x0 ][ y0 ] == MODE_INTRA ) ) && (sps_ibc_enabled_flag) pred_mode_ibc_flag ae(v) if( ( ( tile_group_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( tile_group_type != I && CuPredMode[ x0 ][ y0 ] == MODE_INTRA && (sps_ibc_enabled_flag? CuPredMode[ x0 ][ y0 ] != MODE_IBC : TRUE) ) ) && sps_plt_enabled_flag )
pred_mode_plt_flag ae(v) } … } pred_mode_plt_flag igual a 1 especifica que a unidade de codificação atual é codificada no modo de paleta. pred_mode_plt_flag igual a 0 especifica que a unidade de codificação atual não é codificada no modo de paleta.
Quando pred_mode_plt_flag não está presente, assume-se como sendo igual ao valor de sps_plt_enabled_flag quando decodificando um grupo de ladrilhos I, e 0 ao decodificar um grupo de ladrilhos P ou B, respectivamente.
Quando pred_mode_ibc_flag é igual a 1, a variável CuPredMode[ x ][ y ] é estabelecida para ser igual a MODE_PLT para x = x0..x0 + cbWidth − 1 e y = y0..y0 + cbHeight − 1. coding_unit( x0, y0, cbWidth, cbHeight, treeType ) { Descritor if( tile_group_type != I || sps_ibc_enabled_flag || sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA ) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 ) pred_modes(x0, y0, cbWidth, cbHeight) … } pred_modes ( x0, y0, cbWidth, cbHeight) { Descritor if(tile_group_type == I ) { if(sps_ibc_enabled_flag) pred_mode_ibc_flag ae(v)
if(CuPredMode[ x0 ][ y0 ] != MODE_IBC){ if(sps_plt_enabled_flag && cbWidth <=64 && cbHeight <= 64) plt_mode_flag ae(v) } else{ pred_mode_flag ae(v) if(CuPredMode[ x0 ][ y0 ] == MODE_INTRA || (CuPredMode[ x0 ][ y0 ] != MODE_INTRA && ! sps_ibc_enabled_flag)){ if(sps_plt_enabled_flag && cbWidth <=64 && cbHeight <= 64) plt_mode_flag ae(v) } else{ if(sps_ibc_enabled_flag) pred_mode_ibc_flag ae(v) } } } if(tile_group_type == I ) { if(sps_ibc_enabled_flag || sps_plt_enabled_flag) pred_mode_ flag ae(v) if(CuPredMode[ x0 ][ y0 ] != MODE_INTRA){ if(sps_plt_enabled_flag && cbWidth <=64 && cbHeight <= 64)
plt_mode_flag ae(v) } else{ pred_mode_flag ae(v) if(CuPredMode[ x0 ][ y0 ] == MODE_INTRA || (CuPredMode[ x0 ][ y0 ] != MODE_INTRA && ! sps_ibc_enabled_flag)){ if(sps_plt_enabled_flag && cbWidth <=64 && cbHeight <= 64) plt_mode_flag ae(v) } else{ if(sps_ibc_enabled_flag) pred_mode_ibc_flag ae(v) } } } if(tile_group_type == I ) { if(sps_ibc_enabled_flag || sps_plt_enabled_flag) pred_mode_ flag ae(v) if(CuPredMode[ x0 ][ y0 ] != MODE_INTRA){ if(sps_plt_enabled_flag && cbWidth <=64 && cbHeight <= 64) plt_mode_flag ae(v) } else{
pred_mode_flag ae(v) if(CuPredMode[ x0 ][ y0 ] == MODE_INTRA || (CuPredMode[ x0 ][ y0 ] != MODE_INTRA && ! sps_ibc_enabled_flag)){ if(sps_plt_enabled_flag && cbWidth <=64 && cbHeight <= 64) plt_mode_flag ae(v) } else{ if(sps_ibc_enabled_flag) pred_mode_ibc_flag ae(v) } } } if(tile_group_type == I ) { if(sps_ibc_enabled_flag || sps_plt_enabled_flag) pred_mode_ flag ae(v) if(CuPredMode[ x0 ][ y0 ] != MODE_INTRA){ if(sps_plt_enabled_flag) plt_mode_flag ae(v) } else{ pred_mode_flag ae(v) if(CuPredMode[ x0 ][ y0 ] == MODE_INTRA || (CuPredMode[ x0 ][ y0 ] != MODE_INTRA && ! sps_ibc_enabled_flag)){
if(sps_plt_enabled_flag) plt_mode_flag ae(v) } else{ if(sps_ibc_enabled_flag) ae(v) pred_mode_ibc_flag } } } plt_mode_flag igual a 1 especifica que a unidade de codificação atual é codificada no modo de paleta. intra_mode_plt_flag igual a 0 especifica que a unidade de codificação atual é codificada no modo de paleta.
Quando plt_mode_flag não está presente, assume-se como sendo igual a falso.
Quando pred_mode_scc_flag é igual a 1, a variável CuPredMode[ x ][ y ] é estabelecida para ser igual a MODE_PLT para x = x0..x0 + cbWidth − 1 e y = y0..y0 + cbHeight − 1. pred_mode_flag igual a 0 especifica que a unidade de codificação atual é codificada no modo de interpredição ou modo de predição IBC. pred_mode_flag igual a 1 especifica que a unidade de codificação atual é codificada no modo intrapredição ou modo PLT.
A variável CuPredMode[ x ][ y ] é derivada como segue para x = x0..x0 + cbWidth − 1 e y = y0..y0 + cbHeight − 1: – Se pred_mode_flag é igual a 0, CuPredMode[ x ][ y ] é estabelecido como igual a MODE_INTER. – Caso contrário (pred_mode_flag é igual a 1), CuPredMode[ x ][ y ] é estabelecido como igual a MODE_INTRA.
Quando pred_mode_flag não está presente, assume-se como sendo igual a 1 ao decodificar um grupo de ladrilhos I, e igual a 0 ao decodificar um grupo de ladrilhos P ou B, respectivamente. Tabela 9-4 Elementos de sintaxe e binarização associada. Estrutura da Binarização Elemento de sintaxe processo Parâmetro de sintaxe entrada pred_modes( ) PLT_mode_flag FL cMax = 1 Tabela 9-10 - Atribuição de ctxInc a elementos de sintaxe com bins codificados por contexto binIdx Elemento de sintaxe >= 0 1 2 3 4 5 PLT_mode_flag 0 na na na na na
5.2 Modalidade nº 2
[00191] Esta modalidade descreve o modeType. Os textos recém- adicionados estão em negrito e itálico.
[00192] Uma variável modeType que especifica se modos de codificação Intra, IBC, Paleta e Inter podem ser usados (MODE_TYPE_ALL), ou se apenas modos de codificação Intra, Paleta e IBC podem ser usados (MODE_TYPE_INTRA), ou se apenas modos de codificação Inter podem ser usados (MODE_TYPE_INTER) para unidades de codificação dentro do nó da árvore de codificação.
5.3 Modalidade nº 3
[00193] Esta modalidade descreve a sintaxe da unidade de codificação. Nesta modalidade, o pred_mode_plt_flag é sinalizado após o pred_mode_ibc_flag. Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, treeType, modeType ) { Descritor if( slice_type != I || sps_ibc_enabled_flag | | sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA && !( [[cbWidth == 4 && cbHeight == 4 && !sps_ibc_enabled_flag ) ]] ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag )) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL) pred_mode_flag ae(v) [[if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) )[[==]] if( ( (slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | (slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ]
== 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 ) && modeType != MODE_TYPE_INTER ) { if( sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v) } if( CuPredMode[ x0 ][ y0 ] == MODE_INTRA || (slice_type != I && !(cbWidth = = 4 && cbHeight = = 4 ) && !sps_ibc_enabled_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA )) && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && modeType != MODE_INTER) pred_mode_plt_flag ae(v) } … }
5.4 Modalidade 4
[00194] Esta modalidade descreve a sintaxe da unidade de codificação. Nesta modalidade, o pred_mode_plt_flag é sinalizado após o pred_mode_ibc_flag e o pred_mode_plt_flag é sinalizado apenas quando o modo de predição atual é MODE_INTRsA. Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, treeType, modeType) { Descritor if(slice_type != I || sps_ibc_enabled_flag | | sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA && !( [[cbWidth == 4 && cbHeight == 4 && !sps_ibc_enabled_flag ) ]] ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag )) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL) pred_mode_flag ae(v) [[ if( ( (slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | (slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) )]] if( ( (slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | (slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 ) && modeType != MODE_ TYPE_INTER ) {
if( sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v) } if(cu_skip_flag[ x0 ][ y0 ] = = 0 && CuPredMode[ x0 ][ y0 ] == MODE_INTRA && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && modeType != MODE_ TYPE_INTER ) pred_mode_plt_flag ae(v) } … }
5.5 Modalidade nº 5
[00195] Esta modalidade descreve a sintaxe da unidade de codificação. Nesta modalidade, o pred_mode_ibc_flag é sinalizado após o pred_mode_plt_flag. Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, treeType, modeType ) { Descrito r if(slice_type != I || sps_ibc_enabled_flag | | sps_plt_enabled_flag ) {
if( treeType != DUAL_TREE_CHROMA && !( [[cbWidth = = 4 && cbHeight = = 4 && !sps_ibc_enabled_flag ) ]] ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag )) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL) pred_mode_flag ae(v) [[ if( ( (slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | (slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) ) ]] if( CuPredMode[ x0 ][ y0 ] == MODE_INTRA || (slice_type != I && !(cbWidth = = 4 && cbHeight = = 4 ) && !sps_ibc_enabled_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA )) && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && modeType != MODE_INTER) pred_mode_plt_flag ae(v)
if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 ) && modeType != MODE_ TYPE_INTER ) { if( sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v) } } … }
5.6 Modalidade 6
[00196] Esta modalidade descreve a sintaxe da unidade de codificação. Nesta modalidade, o pred_mode_ibc_flag é sinalizado após o pred_mode_plt_flag e o pred_mode_plt_flag é sinalizado apenas quando o modo de predição atual é MODE_INTRA. Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, treeType, modeType) { Descrito r if( slice_type != I || sps_ibc_enabled_flag | | sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA && !( [[cbWidth = = 4 && cbHeight = = 4 && !sps_ibc_enabled_flag
) ]] ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag )) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL) pred_mode_flag ae(v) if cu_skip_flag[ x0 ][ y0 ] = = 0 && (CuPredMode[ x0 ][ y0 ] == MODE_INTRA && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && modeType != MODE_TYPE_INTER ) pred_mode_plt_flag ae(v) } [[ if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) )]] if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ]
== 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 ) && modeType != MODE_TYPE_INTER ) { if( sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v) } } … }
5.7 Modalidade 7
[00197] Esta modalidade descreve a sintaxe da unidade de codificação. Nesta modalidade, o pred_mode_plt_flag e o pred_mode_ibc_flag são sinalizados quando o modo de predição é MODE_INTRA. Os textos recém- adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, treeType, modeType ) { Descrito r if(slice_type != I || sps_ibc_enabled_flag | | sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA && !( [[cbWidth = = 4 && cbHeight = = 4 && !sps_ibc_enabled_flag ) ]] ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag ))
cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL) pred_mode_flag ae(v) [[ if( ( (slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | (slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) )]] if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] == MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 ) && modeType != MODE_TYPE_INTER ) { if( sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v) } if( CuPredMode[ x0 ][ y0 ] == MODE_INTRA && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && modeType !=
MODE_INTER) pred_mode_plt_flag ae(v) } … }
5.8 Modalidade nº 8
[00198] Esta modalidade descreve a sintaxe da unidade de codificação. Nesta modalidade, o pred_mode_plt_flag e o pred_mode_ibc_flag são sinalizados quando o modo de predição não é MODE_INTRA. Os textos recém- adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, treeType, modeType ) { Descrito r if(slice_type != I || sps_ibc_enabled_flag | | sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA && !( [[cbWidth = = 4 && cbHeight = = 4 && !sps_ibc_enabled_flag ) ]] ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag )) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL) pred_mode_flag ae(v)
[[ if( ( (slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | (slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) )]] if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 ) && modeType != MODE_TYPE_INTER ) { if( sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v) } if( CuPredMode[ x0 ][ y0 ] != MODE_INTRA && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && modeType != MODE_INTER) pred_mode_plt_flag ae(v) } … }
5.9 Modalidade 9
[00199] Esta modalidade descreve a sintaxe da unidade de codificação. Nesta modalidade, o pred_mode_plt_flag e o pred_mode_ibc_flag são sinalizados quando o modo de predição é MODE_INTER. Os textos recém- adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, treeType, modeType ) { Descritor if(slice_type != I || sps_ibc_enabled_flag | | sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA && !( [[cbWidth == 4 && cbHeight == 4 && !sps_ibc_enabled_flag ) ]] ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag )) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL) pred_mode_flag ae(v)
[[ if( ( (slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | (slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) )]] if (((slice_type = = I && cu_skip_flag [x0] [y0] = = 0) | | (slice_type! = I && (CuPredMode [x0] [y0] == MODE_INTER | | (cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag [x0] [y0] = = 0)) )) && cbWidth <= 64 && cbHeight <= 64) && modeType! = MODE_TYPE_INTER ) { if( sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v) } if( CuPredMode[ x0 ][ y0 ] == MODE_INTER && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && modeType != MODE_INTER) pred_mode_plt_flag ae(v) } … }
5.10 Modalidade nº 10
[00200] Esta modalidade descreve a semântica do pred_mode_plt_flag. Os textos recém-adicionados estão em negrito e itálico. pred_mode_plt_flag especifica o uso do modo de paleta na unidade de codificação atual. pred_mode_plt_flag = = 1 indica que o modo de paleta é aplicado na unidade de codificação atual. pred_mode_plt_flag = = 0 indica que o modo de paleta não é aplicado para a unidade de codificação atual. Quando pred_mode_plt_flag não está presente, infere-se que seja igual a 0.
5.11 Modalidade nº 11
[00201] Esta modalidade descreve a semântica do pred_mode_plt_flag. Os textos recém-adicionados estão em negrito e itálico. pred_mode_plt_flag especifica o uso do modo de paleta na unidade de codificação atual. pred_mode_plt_flag = = 1 indica que o modo de paleta é aplicado na unidade de codificação atual. pred_mode_plt_flag = = 0 indica que o modo de paleta não é aplicado para a unidade de codificação atual. Quando pred_mode_plt_flag não está presente, infere-se que seja igual a 0. Quando pred_mode_plt_flag é igual a 1, a variável CuPredMode[ x ][ y ] é estabelecido para ser igual a MODE_PLT para x = x0..x0 cbWidth - 1 ey = y0..y0 cbHeight - 1.
5.12 Modalidade nº 12
[00202] Esta modalidade descreve a derivação da intensidade de fronteira. Os textos recém-adicionados estão em negrito e itálico.
8.8.3.5 Processo de derivação da intensidade de filtragem de fronteira
[00203] As entradas para este processo são: um arranjo de amostra de imagem recPicture, uma localização ( xCb, yCb ) especificando a amostra superior esquerda do bloco de codificação atual em relação à amostra superior esquerda da imagem atual, uma variável nCbW especificando a largura do bloco de codificação atual, uma variável nCbH especificando a altura do bloco de codificação atual, uma variável edgeType especificando se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada, uma variável cIdx especificando o componente de cor do bloco de codificação atual, um arranjo edgeFlags bidimensional (nCbW)x(nCbH).
[00204] A saída desse processo é um arranjo bS bidimensional (nCbW)x(nCbH) especificando a intensidade de filtragem de fronteira. ...
[00205] A variável bS[ xDi ][ yDj ] é derivada da seguinte forma:
[00206] Se cIdx for igual a 0 e ambas as amostras p0 e q0 estão em um bloco de codificação com intra_bdpcm_flag igual a 1, bS[ xDi ][ yDj ] é estabelecido como igual a 0.
[00207] Caso contrário, se a amostra p0 ou q0 está no bloco de codificação de uma unidade de codificação codificada com modo de intrapredição, bS[ xDi ][ yDj ] é estabelecido como igual a 2.
[00208] Caso contrário, se a borda de bloco também for uma borda do bloco de transformada e a amostra p0 ou q0 estiver em um bloco de codificação com ciip_flag igual a 1, bS[ xDi ][ yDj ] é estabelecido como igual a 2.
[00209] Caso contrário, se a borda de bloco também for uma borda de bloco de transformada e a amostra p0 ou q0 estiver em um bloco de transformada que contém um ou mais níveis de coeficiente de transformada diferente de zero, bS[ xDi ][ yDj ] é estabelecido como igual a 1. Caso contrário, se a borda de bloco também for uma borda de bloco de transformada e amostra p0 e q0 estiver em dois blocos de codificação com pred_mode_plt_flag igual a 1, bS[ xDi ][ yDj ] é estabelecido como igual a 0.
[00210] Caso contrário, se o modo de predição do sub-bloco de codificação contendo a amostra p0 for diferente a partir do modo de predição do sub-bloco de codificação contendo a amostra q0, bS[ xDi ][ yDj ] é estabelecido como igual a 1.
[00211] Caso contrário, se cIdx for igual a 0 e uma ou mais das seguintes condições forem verdadeiras, bS[ xDi ][ yDj ] é estabelecido como igual a 1:
[00212] O sub-bloco de codificação contendo a amostra p0 e o sub-bloco de codificação contendo a amostra q0 são ambos codificados no modo de predição IBC e a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento usados na predição dos dois sub-blocos de codificação é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00213] Para a predição do sub-bloco de codificação contendo a amostra p0, imagens de referência diferentes ou um número diferente de vetores de movimento são usados para a predição do sub-bloco de codificação contendo a amostra q0.
[00214] NOTA 1 - A determinação de se as imagens de referência usadas para os dois sub-blocos de codificação são iguais ou diferentes se baseia apenas em quais imagens são referenciadas, sem considerar se uma predição é formada usando um índice na lista de imagem de referência 0 ou um índice em lista de imagem de referência 1, e também sem considerar se a posição de índice dentro de uma lista de imagem de referência é diferente.
[00215] NOTA 2 - O número de vetores de movimento que são usados para a predição de um sub-bloco de codificação com amostra superior esquerda cobrindo ( xSb, ySb ), é igual a PredFlagL0[ xSb ][ ySb ] + PredFlagL1[ xSb ][ ySb ].
[00216] Um vetor de movimento é usado para predizer o sub-bloco de codificação contendo a amostra p0 e um vetor de movimento é usado para predizer o sub-bloco de codificação contendo a amostra q0, e a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento usados é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00217] Dois vetores de movimento e duas imagens de referência diferentes são usados para predizer o sub-bloco de codificação contendo a amostra p0, dois vetores de movimento para as mesmas duas imagens de referência são usados para predizer o sub-bloco de codificação contendo a amostra q0 e a diferença absoluta entre o componente horizontal ou vertical dos dois vetores de movimento usados na predição dos dois sub-blocos de codificação para a mesma imagem de referência é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00218] Dois vetores de movimento para a mesma imagem de referência são usados para predizer o sub-bloco de codificação contendo a amostra p0, dois vetores de movimento para a mesma imagem de referência são usados para predizer o sub-bloco de codificação contendo a amostra q0 e ambas as seguintes condições são verdadeiras:
[00219] A diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento de lista 0 usados na predição dos dois sub-blocos de codificação é maior ou igual a 4 nas amostras de um quarto de luma, ou a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento de lista 1 usados na predição dos dois sub-blocos de codificação é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00220] A diferença absoluta entre o componente horizontal ou vertical do vetor de movimento de lista 0 usado na predição do sub-bloco de codificação contendo a amostra p0 e o vetor de movimento de lista 1 usado na predição do sub-bloco de codificação contendo a amostra q0 é maior ou igual a 4 em unidades de amostras de um quarto de luma, ou a diferença absoluta entre o componente horizontal ou vertical do vetor de movimento de lista 1 usado na predição do sub-bloco de codificação contendo a amostra p0 e o vetor de movimento de lista 0 usado na predição do sub-bloco de codificação contendo a amostra q0 é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00221] Caso contrário, a variável bS[ xDi ][ yDj ] é estabelecida como igual a 0.
5.13a Modalidade nº 13a
[00222] Esta modalidade descreve a derivação da intensidade de fronteira. Os textos recém-adicionados estão em negrito e itálico.
8.8.3.5 Processo de derivação da intensidade de filtragem de fronteira
[00223] As entradas para este processo são: um arranjo de amostra de imagem recPicture, uma localização ( xCb, yCb ) especificando a amostra superior esquerda do bloco de codificação atual em relação à amostra superior esquerda da imagem atual, uma variável nCbW especificando a largura do bloco de codificação atual, uma variável nCbH especificando a altura do bloco de codificação atual, uma variável edgeType especificando se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada, uma variável cIdx especificando o componente de cor do bloco de codificação atual, um arranjo edgeFlags bidimensional (nCbW)x(nCbH).
[00224] A saída desse processo é um arranjo bS bidimensional (nCbW)x(nCbH) especificando a intensidade de filtragem de fronteira. …
[00225] A variável bS[ xDi ][ yDj ] é derivada da seguinte forma:
[00226] Se cIdx for igual a 0 e ambas as amostras p0 e q0 estão em um bloco de codificação com intra_bdpcm_flag igual a 1, bS[ xDi ][ yDj ] é estabelecido como igual a 0.
[00227] Caso contrário, se a amostra p0 ou q0 está no bloco de codificação de uma unidade de codificação codificada com modo de intrapredição, bS[ xDi ][ yDj ] é estabelecido como igual a 2.
[00228] Caso contrário, se a borda de bloco também for uma borda do bloco de transformada e a amostra p0 ou q0 estiver em um bloco de codificação com ciip_flag igual a 1, bS[ xDi ][ yDj ] é estabelecido como igual a 2.
[00229] Caso contrário, se a borda de bloco também for uma borda de bloco de transformada e a amostra p0 ou q0 estiver em um bloco de transformada que contém um ou mais níveis de coeficiente de transformada diferentes de zero, bS[ xDi ][ yDj ] é estabelecido como igual a 1. Caso contrário, se a borda de bloco também for uma borda de bloco de transformada e a amostra p0 ou q0 estiver em um bloco de codificação com pred_mode_plt_flag igual a 1, bS[ xDi ][ yDj ] é estabelecido como igual a 0.
[00230] Caso contrário, se o modo de predição do sub-bloco de codificação contendo a amostra p0 for diferente a partir do modo de predição do sub-bloco de codificação contendo a amostra q0, bS[ xDi ][ yDj ] é estabelecido como igual a 1.
[00231] Caso contrário, se cIdx for igual a 0 e uma ou mais das seguintes condições forem verdadeiras, bS[ xDi ][ yDj ] é estabelecido como igual a 1:
[00232] O sub-bloco de codificação contendo a amostra p0 e o sub-bloco de codificação contendo a amostra q0 são ambos codificados no modo de predição IBC e a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento usados na predição dos dois sub-blocos de codificação é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00233] Para a predição do sub-bloco de codificação contendo a amostra p0 imagens de referência diferentes ou um número diferente de vetores de movimento são usados para a predição do sub-bloco de codificação contendo a amostra q0.
[00234] NOTA 1 - A determinação de se as imagens de referência usadas para os dois sub-blocos de codificação são iguais ou diferentes se baseia apenas em quais imagens são referenciadas, sem considerar se uma predição é formada usando um índice na lista de imagem de referência 0 ou um índice em lista de imagem de referência 1, e também sem considerar se a posição de índice dentro de uma lista de imagem de referência é diferente.
[00235] NOTA 2 - O número de vetores de movimento que são usados para a predição de um sub-bloco de codificação com amostra superior esquerda cobrindo ( xSb, ySb ), é igual a PredFlagL0[ xSb ][ ySb ] + PredFlagL1[ xSb ][ ySb ].
[00236] Um vetor de movimento é usado para predizer o sub-bloco de codificação contendo a amostra p0 e um vetor de movimento é usado para predizer o sub-bloco de codificação contendo a amostra q0, e a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento usados é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00237] Dois vetores de movimento e duas imagens de referência diferentes são usados para predizer o sub-bloco de codificação contendo a amostra p0, dois vetores de movimento para as mesmas duas imagens de referência são usados para predizer o sub-bloco de codificação contendo a amostra q0 e a diferença absoluta entre o componente horizontal ou vertical dos dois vetores de movimento usados na predição dos dois sub-blocos de codificação para a mesma imagem de referência é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00238] Dois vetores de movimento para a mesma imagem de referência são usados para predizer o sub-bloco de codificação contendo a amostra p0, dois vetores de movimento para a mesma imagem de referência são usados para predizer o sub-bloco de codificação contendo a amostra q0 e ambas as seguintes condições são verdadeiras:
[00239] A diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento de lista 0 usados na predição dos dois sub-blocos de codificação é maior ou igual a 4 nas amostras de um quarto de luma, ou a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento de lista 1 usados na predição dos dois sub-blocos de codificação é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00240] A diferença absoluta entre o componente horizontal ou vertical do vetor de movimento de lista 0 usado na predição do sub-bloco de codificação contendo a amostra p0 e o vetor de movimento de lista 1 usado na predição do sub-bloco de codificação contendo a amostra q0 é maior ou igual a 4 em unidades de amostras de um quarto de luma, ou a diferença absoluta entre o componente horizontal ou vertical do vetor de movimento de lista 1 usado na predição do sub-bloco de codificação contendo a amostra p0 e o vetor de movimento de lista 1 usado na predição do sub-bloco de codificação contendo a amostra q0 é maior ou igual a 4 em unidades de amostras de um quarto de luma.
[00241] Caso contrário, a variável bS[ xDi ][ yDj ] é estabelecida como igual a 0.
5.13b Modalidade n°13b
[00242] Esta modalidade descreve a codificação e reconstrução de amostras de escape. Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”. palette_coding( x0, y0, cbWidth, cbHeight, startComp, Descritor numComps ) { …
/* Parsing escape values */ if( palette_escape_val_present_flag ) { for( cIdx = startComp; cIdx < ( startComp + numComps ); cIdx++ ) for( sPos = 0; sPos < cbWidth* cbHeight; sPos++ ) { xC = TraverseScanOrder[ cbWidth][ cbHeight ][ sPos ][ 0 ] yC = TraverseScanOrder[ cbWidth][ cbHeight ][ sPos ][ 1 ] if( PaletteIndexMap[ cIdx ] [ xC ][ yC ] == ( MaxPaletteIndex – 1 ) ) { palette_escape_val [[ae(v) ]]u(v) PaletteEscapeVal[ cIdx ][ xC ][ yC ] = palette_escape_val } } } } Processo de decodificação para modo de paleta As entradas para este processo são: uma localização ( xCb, yCb ) especificando a amostra de luma superior esquerda do bloco atual em relação à amostra de luma superior esquerda da imagem atual, uma variável startComp especifica o primeiro componente de cor na tabela de paletas, uma variável cIdx especificando o componente de cor do bloco atual,
duas variáveis nCbW e nCbH especificando a largura e a altura do bloco atual, respectivamente.
A saída desse processo é um arranjo recSamples [ x ][ y ], com x = 0.. nCbW − 1, y = 0.. nCbH − 1 especificando valores de amostra reconstruídos para o bloco.
Dependendo do valor de cIdx, as variáveis nSubWidth e nSubHeight são derivadas da seguinte forma: Se cIdx for igual a 0, nSubWidth é estabelecido como 1 e nSubHeight é estabelecido como 1. Caso contrário, nSubWidth é estabelecido como SubWidthC e nSubHeight é estabelecido como SubHeightC.
O bloco ( nCbW x nCbH ) do arranjo de amostra reconstruída recSamples na localização ( xCb, yCb ) é representado por recSamples[ x ][ y ] com x = 0..nCTbW − 1 e y = 0..nCbH − 1, e o valor de recSamples[ x ][ y ] para cada x na faixa de 0 a nCbW − 1, inclusive, e cada y na faixa de 0 a nCbH − 1, inclusive, é derivado da seguinte forma: As variáveis xL e yL são derivadas da seguinte forma: xL = palette_transpose_flag ? x * nSubHeight : x * nSubWidth (8-69) yL = palette_transpose_flag ? y * nSubWidth : y * nSubHeight (8-70) A variável bIsEscapeSample é derivada da seguinte maneira: Se PaletteIndexMap[ xCb + xL ][ yCb + yL ] for igual a MaxPaletteIndex e palette_escape_val_present_flag for igual a 1, bIsEscapeSample é estabelecido como igual 1. Caso contrário, bIsEscapeSample é estabelecido como igual a 0. Se bIsEscapeSample for igual a 0, o seguinte se aplica:
recSamples[ x ][ y ] = CurrentPaletteEntries[ cIdx ][ PaletteIndexMap[ xCb + xL ][ yCb + yL ] ] (8-71) Caso contrário, se cu_transquant_bypass_flag for igual a 1, o seguinte se aplica: recSamples[ x ][ y ] = PaletteEscapeVal[ cIdx ][ xCb + xL ][ yCb + yL ] (8-72) Caso contrário (bIsEscapeSample é igual a 1 e cu_transquant_bypass_flag é igual a 0), as seguintes etapas ordenadas se aplicam: O processo de derivação para parâmetros de quantização como especificado na cláusula 8.7.1 é invocado com a localização (xCb, yCb) especificando a amostra superior esquerda do bloco atual em relação à amostra superior esquerda da imagem atual.
O parâmetro qP de quantização é derivado da seguinte forma: Se cIdx for igual a 0, qP = Max( 0, Qp′Y ) (8-73) Caso contrário, se cIdx for igual a 1, qP = Max( 0, Qp′Cb ) (8-74) Caso contrário, (cldx é igual a 2), qP = Max( 0, Qp′Cr ) (8-75) A variável bitDepth é derivada da seguinte forma: bitDepth = ( cIdx = = 0 ) ? BitDepthY : BitDepthC (8-76) [[A lista levelScale[ ] é especificado como levelScale[ k ] = { 40, 45, 51, 57, 64, 72 } com k = 0..5.]] O seguinte se aplica: [[tmpVal = ( PaletteEscapeVal[ cIdx ][ xCb + xL ][ yCb + yL ] * levelScale[ qP%6 ] ) << ( qP / 6 ) + 32 ) >> 6 (8-77)
recSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) − 1, tmpVal ) (8-78)]] recSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) − 1, PaletteEscapeVal[ cIdx ][ xCb + xL ][ yCb + yL ]) (8-78) Quando uma das seguintes condições for verdadeira: cIdx é igual a 0 e numComps é igual a 1; cIdx é igual a 3; a variável PredictorPaletteSize[startComp] e o arranjo PredictorPaletteEntries são derivadas ou modificadas da seguinte maneira: for( i = 0; i < CurrentPaletteSize[ startComp ]; i++ ) for( cIdx = startComp; cIdx < (startComp + numComps); cIdx++ ) newPredictorPaletteEntries[ cIdx ][ i ] = CurrentPaletteEntries[ cIdx ][ i ] newPredictorPaletteSize = CurrentPaletteSize[ startComp ] for( i = 0; i < PredictorPaletteSize && newPredictorPaletteSize < PaletteMaxPredictorSize; i++ ) if( !PalettePredictorEntryReuseFlags[ i ] ) { for( cIdx = startComp; cIdx < (startComp + numComps); cIdx++ ) (8-79) newPredictorPaletteEntries[ cIdx ][ newPredictorPaletteSize ] = PredictorPaletteEntries[ cIdx ][ i ] newPredictorPaletteSize++ } for( cIdx = startComp; cIdx < ( startComp + numComps ); cIdx++ ) for( i = 0; i < newPredictorPaletteSize; i++ ) PredictorPaletteEntries[ cIdx ][ i ] = newPredictorPaletteEntries[ cIdx ][ i ] PredictorPaletteSize[ startComp ] = newPredictorPaletteSize É um requisito de conformidade de bitstream que o valor de
PredictorPaletteSize[startComp] esteja na faixa de 0 a PaletteMaxPredictorSize, inclusive.
5.14 Modalidade nº14
[00243] Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
8.4.5.3 Processo de decodificação para modo de paleta
[00244] As entradas para este processo são: - uma localização ( xCb, yCb ) especificando a amostra de luma superior esquerda do bloco atual em relação à amostra de luma superior esquerda da imagem atual, - uma variável startComp especifica o primeiro componente de cor na tabela de paletas, - um cIdx variável especificando o componente de cor do bloco atual, - duas variáveis nCbW e nCbH especificando a largura e a altura do bloco atual, respectivamente.
[00245] A saída desse processo é um arranjo recSamples [ x ][ y ], com x = 0.. nCbW − 1, y = 0.. nCbH − 1 especificando valores de amostra reconstruídos para o bloco.
[00246] Dependendo do valor de cIdx, as variáveis nSubWidth e nSubHeight são derivadas da seguinte forma: - Se cIdx for igual a 0, nSubWidth é estabelecido como 1 e nSubHeight é estabelecido como 1. - Caso contrário, nSubWidth é estabelecido para SubWidthC e nSubHeight é estabelecido para SubHeightC.
[00247] O bloco ( nCbW x nCbH ) do arranjo de amostra reconstruída recSamples na localização ( xCb, yCb ) é representado por recSamples[ x ][ y ] com x = 0..nCTbW − 1 e y = 0..nCbH − 1, e o valor de recSamples[ x ][ y ] para cada x na faixa de 0 a nCbW − 1, inclusive, e cada y na faixa de 0 a nCbH − 1, inclusive, é derivado da seguinte forma: – As variáveis xL e yL são derivadas da seguinte forma: xL = palette_transpose_flag ? x * nSubHeight : x * nSubWidth(8-234) yL = palette_transpose_flag ? y * nSubWidth : y * nSubHeight(8-235) – A variável bIsEscapeSample é derivada da seguinte maneira: – Se PaletteIndexMap[ xCb + xL ][ yCb + yL ] for igual a MaxPaletteIndex e palette_escape_val_present_flag for igual a 1, bIsEscapeSample é estabelecido como igual 1. – Caso contrário, bIsEscapeSample é estabelecido como igual a 0. – Se bIsEscapeSample for igual a 0, o seguinte se aplica: recSamples[ x ][ y ] = CurrentPaletteEntries[ cIdx ][ PaletteIndexMap[ xCb + xL ][ yCb + yL ] ](8-236) – Caso contrário, se cu_transquant_bypass_flag for igual a 1, o seguinte se aplica: recSamples[ x ][ y ] = PaletteEscapeVal[ cIdx ][ xCb + xL ][ yCb + yL ] (8-237) – Caso contrário (bIsEscapeSample é igual a 1 e cu_transquant_bypass_flag é igual a 0), as seguintes etapas ordenadas se aplicam:
1. O processo de derivação para parâmetros de quantização como especificado na cláusula 8.7.1 é invocado com a localização ( xCb, yCb ) especificando a amostra superior esquerda do bloco atual em relação à amostra superior esquerda da imagem atual. [Ed. (BB): Os QPs já são derivados no início do processo de intradecodificação de CU, portanto, não há necessidade de derivá-los novamente dentro desta subcláusula. Embora seja assim no HEVC v4 SCC, acho que essa redundância pode ser removida. Por favor confirme. ]
2. O parâmetro qP de quantização é derivado da seguinte forma: – If cIdx is equal to 0, qP = Max( QpPrimeTsMin, Qp′Y ) (8-238) – Caso contrário, se cIdx for igual a 1, qP = Max( QpPrimeTsMin, Qp′Cb ) (8-239) – Caso contrário, (cldx é igual a 2), qP = Max( QpPrimeTsMin, Qp′Cr ) (8-240) Onde min_qp_prime_ts_minus4 especifica o parâmetro de quantização mínimo permitido para o modo de salto de transformada da seguinte forma: QpPrimeTsMin = 4 + min_qp_prime_ts_ minus4
3. A variável bitDepth é derivada da seguinte forma: bitDepth = ( cIdx = = 0 ) ? BitDepthY : BitDepthC (8-241)
4. A lista levelScale[] é especificada como levelScale[k] = {40, 45, 51, 57, 64, 72} com k = 0..5. [Ed. (BB): Para CUs que não são de paleta, levelScale depende de rectNonTsFlag, isso deve ser aplicado aqui também?]
5. O seguinte se aplica: tmpVal = ( PaletteEscapeVal[ cIdx ][ xCb + xL ][ yCb + yL ] * levelScale[ qP%6 ] ) << ( qP / 6 ) + 32 ) >> 6 (8-242) recSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) − 1, tmpVal )(8-243) Quando uma das seguintes condições for verdadeira: – cIdx é igual a 0 e numComps é igual a 1; – cIdx é igual a 3; a variável PredictorPaletteSize[startComp] e o arranjo PredictorPaletteEntries são derivadas ou modificadas da seguinte maneira: for( i = 0; i < CurrentPaletteSize[ startComp ]; i++ ) for( cIdx = startComp; cIdx < (startComp + numComps); cIdx++ )
newPredictorPaletteEntries[ cIdx ][ i ] = CurrentPaletteEntries[ cIdx ][ i ] newPredictorPaletteSize = CurrentPaletteSize[ startComp ] for( i = 0; i < PredictorPaletteSize && newPredictorPaletteSize < PaletteMaxPredictorSize; i++ ) if( !PalettePredictorEntryReuseFlags[ i ] ) { for( cIdx = startComp; cIdx < (startComp + numComps); cIdx++ ) (8-244) newPredictorPaletteEntries[ cIdx ][ newPredictorPaletteSize ] = PredictorPaletteEntries[ cIdx ][ i ] newPredictorPaletteSize++ } for( cIdx = startComp; cIdx < ( startComp + numComps ); cIdx++ ) for( i = 0; i < newPredictorPaletteSize; i++ ) PredictorPaletteEntries[ cIdx ][ i ] = newPredictorPaletteEntries[ cIdx ][ i ] PredictorPaletteSize[ startComp ] = newPredictorPaletteSize É um requisito de conformidade de bitstream que o valor de PredictorPaletteSize[startComp] esteja na faixa de 0 a PaletteMaxPredictorSize, inclusive.
5.15 Modalidade nº15
[00248] Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
8.4.2 Processo de derivação para o modo de intrapredição de luma … – Caso contrário (skip_intra_flag[xPb][yPb] e DimFlag[xPb[yPb] são ambos iguais a 0), IntraPredModeY[xPb][yPb] é derivado pelas seguintes etapas ordenadas:
1. As localizações vizinhas (xNbA, yNbA) e (xNbB, yNbB) são estabelecidas como iguais a (xPb - 1, yPb) e (xPb, yPb - 1), respectivamente.
2. Para X sendo substituído por A ou B, as variáveis candIntraPredModeX são derivadas da seguinte forma: ▪ - O processo de derivação de disponibilidade para um bloco na ordem varredura em z como especificado na cláusula 6.4.1 é invocado com a localização (xCurr, yCurr) estabelecida como igual a (xPb, yPb) e a localização vizinha (xNbY, yNbY) estabelecida como igual a (xNbX, yNbX) como entradas, e a saída é atribuída a availableX. ▪ - O modo de intrapredição de candidato candIntraPredModeX é derivado da seguinte forma: ▪ - Se availableX for igual a FALSE, candIntraPredModeX é estabelecido como igual a INTRA_DC. ▪ [[- Caso contrário, se CuPredMode[xNbX][yNbX] não for igual a MODE_INTRA ou pcm_flag[xNbX][yNbX] for igual a 1 ou, candIntraPredModeX é estabelecido como igual a INTRA_DC,]] ▪ - Caso contrário, se CuPredMode[xNbX][yNbX] não for igual a MODE_INTRA, pcm_flag[xNbX][yNbX] é igual a 1 ou palette_mode_flag é igual a 1, candIntraPredModeX é estabelecido como igual a INTRA_DC, ▪ - Caso contrário, se X for igual a B e yPb - 1 for menor que ((yPb >> CtbLog2SizeY) << CtbLog2SizeY), candIntraPredModeB é estabelecido como igual a INTRA_DC. ▪ - Caso contrário, se IntraPredModeY[xNbX][yNbX] for maior que 34, candIntraPredModeX é estabelecido como igual a INTRA_DC.
5.16 Modalidade nº16
[00249] Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
8.4.2 Processo de derivação para o modo de intrapredição de luma
[00250] As entradas para este processo são: – uma localização de luma ( xCb, yCb ) especificando a amostra superior esquerda do bloco de codificação de luma atual em relação à amostra de luma superior esquerda da imagem atual, – uma variável cbWidth especificando a largura do bloco de codificação atual em amostras de luma, – uma variável cbHeight especificando a altura do bloco de codificação atual em amostras de luma. Neste processo, o modo de intrapredição de luma IntraPredModeY[xCb][yCb] é derivado.
1. Para X sendo substituído por A ou B, as variáveis candIntraPredModeX são derivadas da seguinte forma: – O processo de derivação de disponibilidade para um bloco como especificado na cláusula 6.4.X [Ed. (BB): Processo de verificação de disponibilidade de blocos vizinhos a ser determinado] é invocado com a localização (xCurr, yCurr) estabelecida como igual a (xCb, yCb) e a localização vizinha (xNbY, yNbY) estabelecida como igual a (xNbX, yNbX) como entradas, e a saída é atribuída a availableX. – O modo de intrapredição de candidato candIntraPredModeX é derivado da seguinte forma: – Se uma ou mais das seguintes condições forem verdadeiras, candIntraPredModeX é estabelecido como igual a INTRA_PLANAR.
– A variável availableX é igual a FALSE. – CuPredMode[xNbX][yNbX] não é igual a MODE_INTRA. – pred_mode_plt_flag é igual a 1. – intra_mip_flag[ xNbX ][ yNbX ] é igual a 1. – X é igual a B e yCb - 1 é menor que ((yCb >> CtbLog2SizeY) << CtbLog2SizeY). – Caso contrário, candIntraPredModeX é estabelecido como igual a IntraPredModeY[xNbX][yNbX]. … A variável IntraPredModeY[ x ][ y ] com x = xCb..xCb + cbWidth − 1 e y = yCb..yCb + cbHeight − 1 é estabelecida para ser igual a IntraPredModeY [xCb] [yCb].
5.17 Modalidade nº17
[00251] Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
8.4.3 Processo de derivação para o modo de intrapredição de luma
[00252] As entradas para este processo são: – uma localização de luma ( xCb, yCb ) especificando a amostra superior esquerda do bloco de codificação de luma atual em relação à amostra de luma superior esquerda da imagem atual, – uma variável cbWidth especificando a largura do bloco de codificação atual em amostras de luma, – uma variável cbHeight especificando a altura do bloco de codificação atual em amostras de luma. Neste processo, o modo de intrapredição de luma IntraPredModeY[xCb][yCb] é derivado.
2. Para X sendo substituído por A ou B, as variáveis candIntraPredModeX são derivadas da seguinte forma: – O processo de derivação de disponibilidade para um bloco como especificado na cláusula 6.4.X [Ed. (BB): Processo de verificação de disponibilidade de blocos vizinhos a ser determinado] é invocado com a localização (xCurr, yCurr) estabelecida como igual a (xCb, yCb) e a localização vizinha (xNbY, yNbY) estabelecida como igual a (xNbX, yNbX) como entradas, e a saída é atribuída a availableX. – O modo de intrapredição de candidato candIntraPredModeX é derivado da seguinte forma: – Se uma ou mais das seguintes condições forem verdadeiras, candIntraPredModeX é estabelecido como igual [[a INTRA_PLANAR]] INTRA_DC. – A variável availableX é igual a FALSE. – CuPredMode[xNbX][yNbX] não é igual a MODE_INTRA. – intra_mip_flag[ xNbX ][ yNbX ] é igual a 1. – X é igual a B e yCb - 1 é menor que ((yCb >> CtbLog2SizeY) << CtbLog2SizeY). – Caso contrário, candIntraPredModeX é estabelecido como igual a IntraPredModeY[xNbX][yNbX]. … A variável IntraPredModeY[ x ][ y ] com x = xCb..xCb + cbWidth − 1 e y = yCb..yCb + cbHeight − 1 é estabelecida para ser igual a IntraPredModeY [xCb] [yCb].
5.18 Modalidade nº18
[00253] Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
8.4.3 Processo de derivação para o modo de intrapredição de luma
[00254] As entradas para este processo são: – uma localização de luma ( xCb, yCb ) especificando a amostra superior esquerda do bloco de codificação de luma atual em relação à amostra de luma superior esquerda da imagem atual, – uma variável cbWidth especificando a largura do bloco de codificação atual em amostras de luma, – uma variável cbHeight especificando a altura do bloco de codificação atual em amostras de luma. Neste processo, o modo de intrapredição de luma IntraPredModeY[xCb][yCb] é derivado.
3. Para X sendo substituído por A ou B, as variáveis candIntraPredModeX são derivadas da seguinte forma: – O processo de derivação de disponibilidade para um bloco como especificado na cláusula 6.4.X [Ed. (BB): Processo de verificação de disponibilidade de blocos vizinhos a ser determinado] é invocado com a localização (xCurr, yCurr) estabelecida como igual a (xCb, yCb) e a localização vizinha (xNbY, yNbY) estabelecida como igual a (xNbX, yNbX) como entradas, e a saída é atribuída a availableX. – O modo de intrapredição de candidato candIntraPredModeX é derivado da seguinte forma: – Se uma ou mais das seguintes condições forem verdadeiras, candIntraPredModeX é estabelecido como igual [[a INTRA_PLANAR]] INTRA_DC. – A variável availableX é igual a FALSE. – CuPredMode[xNbX][yNbX] não é igual a MODE_INTRA. – intra_mip_flag[ xNbX ][ yNbX ] é igual a 1. – pred_mode_plt_flag é igual a 1.
– X é igual a B e yCb - 1 é menor que ((yCb >> CtbLog2SizeY) << CtbLog2SizeY). – Caso contrário, candIntraPredModeX é estabelecido como igual a IntraPredModeY[xNbX][yNbX]. … A variável IntraPredModeY[ x ][ y ] com x = xCb..xCb + cbWidth − 1 e y = yCb..yCb + cbHeight − 1 é estabelecida para ser igual a IntraPredModeY [xCb] [yCb].
5.19 Modalidade nº19
[00255] Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”. Coding_unit( x0, y0, cbWidth, cbHeight, treeTypeCurr, Descritor isInSCIPURegion, SCIPUConsMode ) { if( slice_type != I || sps_ibc_enabled_flag || sps_plt_enabled_flag ) { if( treeTypeCurr != DUAL_TREE_CHROMA && !( ( (cbWidth = = 4 && cbHeight = = 4) || SCIPUConsMode == MODE_NON_INTER) && !sps_ibc_enabled_flag ) ) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && SCIPUConsMode == MODE_ALL) pred_mode_flag ae(v) if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ]
== 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) && SCIPUConsMode != MODE_INTER) pred_mode_ibc_flag ae(v) if( CuPredMode[ x0 ][ y0 ] == MODE_INTRA || (slice_type != I && !(cbWidth = = 4 && cbHeight = = 4 ) && !sps_ibc_enabled_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA )) && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && SCIPUConsMode!= MODE_INTER) pred_mode_plt_flag ae(v) } if(isInSCIPURegion && SCIPUConsMode == MODE_ALL && CuPredMode[ x0 ][ y0 ] != MODE_INTER){ treeType = DUAL_TREE_LUMA } else { treeType = treeTypeCurr } … }
5.20 Modalidade nº20
[00256] Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”. Coding_unit( x0, y0, cbWidth, cbHeight, treeTypeCurr, Descritor isInSCIPURegion, SCIPUConsMode ) { if( slice_type != I || sps_ibc_enabled_flag || sps_plt_enabled_flag ) { if( treeTypeCurr != DUAL_TREE_CHROMA && !( ( (cbWidth = = 4 && cbHeight = = 4) || SCIPUConsMode == MODE_NON_INTER) && !sps_ibc_enabled_flag ) ) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && SCIPUConsMode == MODE_ALL) pred_mode_flag ae(v) if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) && SCIPUConsMode != MODE_INTER) pred_mode_ibc_flag ae(v) if( CuPredMode[ x0 ][ y0 ] == MODE_INTRA && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && SCIPUConsMode!= MODE_INTER) pred_mode_plt_flag ae(v) }
if(isInSCIPURegion && SCIPUConsMode == MODE_ALL && CuPredMode[ x0 ][ y0 ] != MODE_INTER){ treeType = DUAL_TREE_LUMA } else { treeType = treeTypeCurr } … }
5.21 Modalidade nº21
[00257] Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”. Coding_unit( x0, y0, cbWidth, cbHeight, treeTypeCurr, Descritor isInSCIPURegion, SCIPUConsMode ) { if( slice_type != I || sps_ibc_enabled_flag || sps_plt_enabled_flag ) { if( treeTypeCurr != DUAL_TREE_CHROMA && !( ( (cbWidth = = 4 && cbHeight = = 4) || SCIPUConsMode == MODE_NON_INTER) && !sps_ibc_enabled_flag ) ) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && SCIPUConsMode == MODE_ALL) pred_mode_flag ae(v) if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA ||
( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) && SCIPUConsMode != MODE_INTER) pred_mode_ibc_flag ae(v) if( ( ( ( slice_type = = I || (cbWidth = = 4 && cbHeight = = 4 ) | | sps_ibc_enabled_flag ) && CuPredMode[ x0 ][ y0 ] == MODE_INTRA ) || (slice_type != I && !(cbWidth = = 4 && cbHeight = = 4 ) && !sps_ibc_enabled_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && cbWidth <= 64 && cbHeight <= 64 && sps_plt _enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && SCIPUConsMode != MODE_INTER) pred_mode_plt_flag ae(v) } if(isInSCIPURegion && SCIPUConsMode == MODE_ALL && CuPredMode[ x0 ][ y0 ] != MODE_INTER){ treeType = DUAL_TREE_LUMA } else { treeType = treeTypeCurr } … }
5.22 Modalidade nº22
[00258] Esta modalidade descreve a sintaxe da unidade de codificação.
Nesta modalidade, o pred_mode_plt_flag é sinalizado após o pred_mode_ibc_flag. Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, treeType, modeType ) { Descritor if( slice_type != I || sps_ibc_enabled_flag | | sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA && !( [[cbWidth == 4 && cbHeight == 4 && !sps_ibc_enabled_flag ) ]] ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag )) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL) pred_mode_flag ae(v) [[ if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) )]] if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA
|| ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 ) && modeType != MODE_TYPE_INTER ) { if( sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v) } if( ( ( ( slice_type = = I || (cbWidth = = 4 && cbHeight = = 4 ) | | sps_ibc_enabled_flag ) && CuPredMode[ x0 ][ y0 ] == MODE_INTRA ) || (slice_type != I && !(cbWidth = = 4 && cbHeight = = 4 ) && !sps_ibc_enabled_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && cbWidth <= 64 && cbHeight <= 64 && sps_plt _enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && modeType != MODE_INTER) pred_mode_plt_flag ae(v) } … }
5.23 Modalidade nº23
[00259] Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”. Coding_unit( x0, y0, cbWidth, cbHeight, treeTypeCurr, Descrito isInSCIPURegion, SCIPUConsMode ) { r if( slice_type != I || sps_ibc_enabled_flag || sps_plt_enabled_flag ) { if( treeTypeCurr != DUAL_TREE_CHROMA && !( ( (cbWidth = = 4 && cbHeight = = 4) || SCIPUConsMode == MODE_NON_INTER) && !sps_ibc_enabled_flag ) ) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && SCIPUConsMode == MODE_ALL) pred_mode_flag ae(v) if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) && SCIPUConsMode != MODE_INTER) pred_mode_ibc_flag ae(v) if( ( ( ( slice_type = = I || (cbWidth = = 4 && cbHeight = = 4 ) | | pred_mode_ibc_flag ) && CuPredMode[ x0 ][ y0 ] == MODE_INTRA ) || (slice_type != I && !(cbWidth = = 4 && cbHeight = = 4 ) && !pred_mode_ibc_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && cbWidth <= 64 && cbHeight <= 64 && sps_plt_enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && SCIPUConsMode != MODE_INTER)
pred_mode_plt_flag ae(v) } if(isInSCIPURegion && SCIPUConsMode == MODE_ALL && CuPredMode[ x0 ][ y0 ] != MODE_INTER){ treeType = DUAL_TREE_LUMA } else { treeType = treeTypeCurr } … }
5.24 Modalidade nº24
[00260] Esta modalidade descreve a sintaxe da unidade de codificação. Nesta modalidade, o pred_mode_plt_flag é sinalizado após o pred_mode_ibc_flag. Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, treeType, modeType ) { Descritor if( slice_type != I || sps_ibc_enabled_flag | | sps_plt_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA && !( [[cbWidth == 4 && cbHeight == 4 && !sps_ibc_enabled_flag ) ]] ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag )) cu_skip_flag[ x0 ][ y0 ] ae(v)
if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL) pred_mode_flag ae(v) [[ if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 | | cbHeight != 128 ) )]] if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA || ( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[ x0 ][ y0 ] == 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 ) && modeType != MODE_TYPE_INTER ) { if( sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v) }
if( ( ( ( slice_type = = I || (cbWidth = = 4 && cbHeight = = 4 ) | | pred_mode_ibc_flag) && CuPredMode[ x0 ][ y0 ] == MODE_INTRA ) || (slice_type != I && !(cbWidth = = 4 && cbHeight = = 4 ) && ! pred_mode_ibc_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && cbWidth <= 64 && cbHeight <= 64 && sps_plt _enabled_flag && cu_skip_flag[ x0 ][ y0 ] = = 0 && modeType != MODE_INTER) pred_mode_plt_flag ae(v) } … }
5.25 Modalidade nº25
[00261] Esta modalidade descreve a sintaxe da unidade de codificação. Nesta modalidade, a sintaxe da paleta é sinalizada se o modo de predição atual for MODE_PLT. Os textos recém-adicionados estão em negrito e itálico e os textos excluídos estão marcados por “[[]]”.
7.3.7.5 Sintaxe da unidade de codificação coding_unit( x0, y0, cbWidth, cbHeight, cqtDepth, treeType, modeTyp Descritor e){ chType = treeType = = DUAL_TREE_CHROMA? 1 : 0 if( slice_type != I || sps_ibc_enabled_flag | | sps_palette_enabled_flag) {
if( treeType != DUAL_TREE_CHROMA && !( ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !sps_ibc_enabled_flag ) ) cu_skip_flag[ x0 ][ y0 ] ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL ) pred_mode_flag ae(v) if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) || ( slice_type != I && ( CuPredMode[ chType ][ x0 ][ y0 ] != MODE_INTRA || ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] == 0)))) && cbWidth <= 64 && cbHeight <= 64 && modeType != MODE_TYPE_INTER && sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA ) pred_mode_ibc_flag ae(v)
if( ( ( ( slice_type = = I | | ( cbWidth = = 4 && cbHeight = = 4 ) | | sps_ibc_enabled_flag ) && CuPredMode[ x0 ][ y0 ] == MODE_INTRA ) || ( slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && !sps_ibc_enabled_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && sps_palette_enabled_flag && cbWidth <= 64 && cbHeight <= 64 && && cu_skip_flag[ x0 ][ y0 ] == 0 && modeType != MODE_INTER ) pred_mode_plt_flag ae(v) } } if([[CuPredMode[ chType ][ x0 ][ y0 ] == MODE_INTRA | |]] CuPredMode[ chType ][ x0 ][ y0 ] = = MODE_PLT ) { if( treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_LUMA ) { if( pred_mode_plt_flag ) { if( treeType = = DUAL_TREE_LUMA ) palette_coding( x0, y0, cbWidth, cbHeight, 0, 1 ) else /* SINGLE_TREE */ palette_coding( x0, y0, cbWidth, cbHeight, 0, 3 ) } else { … } …
}
5.26 Modalidade nº26
[00262] Esta modalidade descreve o processo de derivação do modo de intrapredição de croma. Os textos recém-adicionados estão em negrito e itálico. Processo de derivação para o modo de intrapredição de croma
[00263] As entradas para este processo são: - uma localização de luma ( xCb, yCb ) especificando a amostra superior esquerda do bloco de codificação de croma atual em relação à amostra de luma superior-esquerda da imagem atual, - uma variável cbWidth especificando a largura do bloco de codificação atual em amostras de luma, - uma variável cbHeight especificando a altura do bloco de codificação atual em amostras de luma.
[00264] Neste processo, o modo de intrapredição de croma IntraPredModeC[ xCb ][ yCb ] é derivado.
[00265] O modo de intrapredição de luma correspondente lumaIntraPredMode é derivado da seguinte forma: – Se intra_mip_flag [xCb] [yCb] for igual a 1, lumaIntraPredMode é estabelecido como igual a INTRA_PLANAR. – Caso contrário, se CuPredMode[ 0 ][ xCb ][ yCb ] for igual a MODE_IBC ou MODE_PLT, lumaIntraPredMode é estabelecido como igual a INTRA_DC. – Caso contrário, lumaIntraPredMode é estabelecido como igual a IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ]. …
5.27 Modalidade nº27
[00266] Esta modalidade descreve o processo de reconstrução de imagem com processo de mapeamento para amostras de luma. Os textos recém-
adicionados estão em negrito e itálico.
[00267] Reconstrução de imagem com processo de mapeamento para amostras de luma. As entradas para este processo são: - uma localização ( xCurr, yCurr ) da amostra superior esquerda do bloco atual em relação à amostra superior esquerda da imagem atual, - uma variável nCurrSw especificando a largura do bloco, - uma variável nCurrSh especificando a altura do bloco, - um arranjo (nCurrSw)x(nCurrSh) predSamples especificando as amostras preditas de luma do bloco atual, - um arranjo (nCurrSw)x(nCurrSh) resSamples especificando as amostras residuais de luma do bloco atual.
[00268] A saída deste processo é um arranjo de amostras recSamples de imagem de luma reconstruído.
[00269] O arranjo (nCurrSw)x(nCurrSh) de amostras de luma preditas mapeadas predMapSamples é derivada da seguinte forma: – Se uma das seguintes condições for verdadeira, predMapSamples [i] [j] é estabelecido como igual a predSamples [i] [j] para i = 0..nCurrSw - 1, j =
0..nCurrSh - 1: – CuPredMode[ 0 ][ xCurr ][ yCurr ] é igual a MODE_INTRA. – CuPredMode[ 0 ][ xCurr ][ yCurr ] é igual a MODE_IBC. – CuPredMode[ 0 ][ xCurr ][ yCurr ] é igual a MODE_PLT. – CuPredMode [0] [xCurr] [yCurr] é igual a MODE_INTER e ciip_flag [xCurr] [yCurr] é igual a 1. – Caso contrário (CuPredMode[ 0 ][ xCurr ][ yCurr ] é igual a MODE_INTER e ciip_flag[ xCurr ][ yCurr ] é igual a 0), o seguinte se aplica: …
5.28 Modalidade nº28
[00270] Esta modalidade descreve ordens de varredura de exemplo correspondentes ao Exemplo 24 na Seção 4.
[00271] A entrada para este processo é uma largura de bloco blkWidth e uma altura de bloco blkHeight.
[00272] A saída desse processo são os arranjos hReverScan[ sPos ][ sComp ] e vReverScan[ sPos ][ sComp ]. O arranjo hReverScan representa a ordem de varredura horizontal reversa e o arranjo vReverScan representa a ordem de varredura transversal vertical. O índice de arranjo sPos especifica a posição de varredura variando a partir de 0 a ( blkWidth * blkHeight ) - 1, inclusive. O índice do arranjo sComp igual a 0 especifica o componente horizontal e o índice do arranjo sComp igual a 1 especifica o componente vertical. Dependendo do valor de blkWidth e blkHeight, o arranjo hTravScan e vTravScan são derivados da seguinte forma: i=0 for(y = 0; y < blkHeight; y++ ) { if( y % 2 != 0 ) { for( x = 0; x < blkWidth; x++ ) { hReverScan[ i ][ 0 ] = x hReverScan [ i ][ 1 ] = y i++ } } else { for( x = blkWidth − 1; x >= 0; x− − ) { hReverScan [ i ][ 0 ] = x hReverScan [ i ][ 1 ] = y i++ } } } i=0 for( x = 0; x < blkWidth; x++ ) { if( x % 2 != 0 ) { for( y = 0; y < blkHeight; y++ ) { vReverScan[ i ][ 0 ] = x vReverScan [ i ][ 1 ] = y i++ } } else { for( y = blkHeight − 1; y >= 0; y− − ) { vReverScan [ i ][ 0 ] = x vReverScan [ i ][ 1 ] = y i++ } } }
[00273] A FIG. 6 é um diagrama de blocos de um aparelho de processamento de vídeo 600. O aparelho 600 pode ser usado para implementar um ou mais dos métodos descritos na presente invenção. O aparelho 600 pode ser incorporado em um smartphone, tablet, computador, receptor de Internet das Coisas (IoT) e assim por diante. O aparelho 600 pode incluir um ou mais processadores 602, uma ou mais memórias 604 e hardware de processamento de vídeo 606. O(s) processador(es) 602 podem ser configurados para implementar um ou mais métodos descritos no presente documento. A(s) memória(s) (memórias) 604 pode(m) ser usada(s) para armazenar dados e códigos usados para implementar os métodos e técnicas descritos na presente invenção. O hardware de processamento de vídeo 606 pode ser usado para implementar, em conjunto de circuitos de hardware, algumas técnicas descritas no presente documento.
[00274] A FIG. 8 é um fluxograma para um método 800 de processamento de um vídeo. O método 800 inclui determinar (805) que modo de paleta deve ser usado para processar uma unidade de transformada, um bloco de codificação ou uma região, uso do modo de paleta sendo codificado separadamente a partir de um modo de predição e desempenhar (810) processamento adicional da unidade de transformada, do bloco de codificação, ou da região usando o modo de paleta.
[00275] Com referência ao método 800, alguns exemplos de codificação por modo de paleta e seu uso são descritos na Seção 4 do presente documento.
[00276] Com referência ao método 800, um bloco de vídeo pode ser codificado no bitstream de vídeo em que a eficiência de bits pode ser alcançada usando uma regra de geração de bitstream relacionada à codificação por modo de paleta.
[00277] Os métodos podem incluir em que o modo de predição é codificado antes da indicação do uso do modo de paleta.
[00278] Os métodos podem incluir em que o uso do modo de paleta é sinalizado condicionalmente com base no modo de predição.
[00279] Os métodos podem incluir em que o modo de predição é o modo de cópia de bloco intra e a sinalização da indicação do uso do modo de paleta é saltada.
[00280] Os métodos podem incluir em que a indicação do uso do modo de paleta é determinada como falsa com base em um modo de predição atual sendo o modo de cópia de bloco intra.
[00281] Os métodos podem incluir em que o modo de predição é modo inter e a sinalização da indicação do uso do modo de paleta é saltada.
[00282] Os métodos podem incluir em que a indicação do uso do modo de paleta é determinada como falsa com base em um modo de predição atual sendo modo inter.
[00283] Os métodos podem incluir em que o modo de predição é modo intra e a sinalização da indicação do uso do modo de paleta é saltada.
[00284] Os métodos podem incluir em que a indicação do uso do modo de paleta é determinada como falsa com base em um modo de predição atual sendo modo intra.
[00285] Os métodos podem incluir em que o modo de predição é modo intra e a sinalização da indicação do uso do modo de paleta é saltada.
[00286] Os métodos podem incluir em que o modo de predição é o modo de cópia de bloco intra e a sinalização da indicação do uso do modo de paleta é desempenhada.
[00287] Os métodos podem incluir em que a indicação do uso do modo de paleta é sinalizada com base em uma imagem, uma fatia ou um tipo de grupo de ladrilhos.
[00288] Os métodos podem incluir em que o modo de paleta é adicionado como um candidato para o modo de predição.
[00289] Os métodos podem incluir em que o modo de predição inclui um ou mais dentre: modo intra, modo cópia de bloco intra ou modos de paleta para fatias intra, fatias inter, imagens I, imagens P, imagens B ou grupos de ladrilhos intra.
[00290] Os métodos podem incluir em que o modo de predição inclui dois ou mais dentre: modo intra, modo inter, modo de cópia de bloco intra ou modo de paleta.
[00291] Os métodos podem incluir em que o uso do modo de paleta é indicado via sinalização ou derivado com base em uma condição.
[00292] Os métodos podem incluir em que a condição inclui um ou mais dentre: uma dimensão de bloco de um bloco atual, um modo de predição do bloco atual, um parâmetro de quantização (QP) do bloco atual, um flag de paleta de blocos vizinhos, um flag de cópia de bloco intra de blocos vizinhos, uma indicação de um formato de cor, uma estrutura de árvore de codificação dupla ou separada, ou um tipo de fatia ou um tipo de grupo ou um tipo de imagem.
[00293] Os métodos podem incluir em que o uso do modo de paleta é sinalizado ou derivado com base em um flag de nível de fatia, um flag de nível de grupo de ladrilhos ou um flag de nível de imagem.
[00294] Os métodos podem incluir em que a indicação do uso do modo de cópia de bloco intra é sinalizado ou derivado com base em um flag de nível de fatia, um flag de nível de grupo de ladrilhos ou um flag de nível de imagem.
[00295] Com referência aos itens 6 a 9 divulgados na seção anterior, algumas modalidades podem preferencialmente usar as seguintes soluções.
[00296] Uma solução pode incluir um método de processamento de vídeo compreendendo desempenhar uma conversão entre um bloco de vídeo atual de uma imagem de um vídeo e uma representação de bitstream do vídeo, no qual informações sobre se um modo de cópia de bloco intra é usado ou não na conversão são sinalizadas na representação de bitstream ou derivadas com base em uma condição de codificação do bloco de vídeo atual; em que o modo de cópia de bloco intra compreende codificar o bloco de vídeo atual a partir de outro bloco de vídeo na imagem. Os seguintes recursos podem ser implementados em várias modalidades
[00297] - em que a condição de codificação inclui dimensões de bloco do bloco de vídeo atual.
[00298] - em que a condição de codificação inclui um modo de predição do bloco de vídeo atual ou um parâmetro de quantização usado na conversão para o bloco de vídeo atual.
[00299] Com referência aos itens 13 a 15 divulgados na seção anterior, algumas modalidades podem preferencialmente implementar as seguintes soluções.
[00300] Uma solução pode incluir um método para determinar se um filtro de deblocagem deve ou não ser aplicado durante uma conversão de um bloco de vídeo atual de uma imagem de vídeo, em que o bloco de vídeo atual é codificado usando uma codificação por modo de paleta em que o bloco de vídeo atual é representado usando valores de amostra representativos que são menos do que o total de pixels do bloco de vídeo atual e desempenhar a conversão tal que o filtro de deblocagem seja aplicado no caso da determinação ser que o filtro de deblocagem seja aplicado.
[00301] Outra solução pode incluir um método de processamento de vídeo compreendendo determinar uma quantização ou um processo de quantização inversa para uso durante uma conversão entre um bloco de vídeo atual de uma imagem de um vídeo e uma representação de bitstream do vídeo, em que o bloco de vídeo atual é codificado usando uma codificação por modo de paleta em que o bloco de vídeo atual é representado usando valores de amostra representativos que são menos do que o total de pixels do bloco de vídeo atual e desempenhar a conversão com base na determinação da quantização ou do processo de quantização inversa. Recursos adicionais podem incluir: - em que a quantização ou o processo de quantização inversa determinado para o bloco de vídeo atual é diferente de outra quantização ou outro processo de quantização inversa aplicado a outro bloco de vídeo que é codificado de forma diferente a partir do modo de codificação de paleta. - em que a conversão inclui codificar o primeiro bloco de vídeo atual na representação de bitstream. - em que a conversão inclui a decodificação da representação de bitstream para gerar o bloco de vídeo atual do vídeo. - em que a determinação usa um processo de decisão que é idêntico a outro processo de decisão usado para a conversão de outro bloco de vídeo que é intracodificado.
[00302] Será apreciado que as técnicas divulgadas podem ser incorporadas em codificadores ou decodificadores de vídeo para melhorar a eficiência de compressão usando estruturas de árvore de codificação aprimoradas.
[00303] Com referência aos itens 16 a 21 na seção anterior, algumas soluções podem ser as seguintes:
[00304] Um método de processamento de vídeo, compreendendo: determinar, para uma conversão entre um bloco de vídeo atual de um vídeo compreendendo múltiplos blocos de vídeo e uma representação de bitstream do vídeo, que o bloco de vídeo atual é um bloco codificado por paleta; com base na determinação, desempenhar um processo de construção de lista do modo mais provável ao considerar o bloco de vídeo atual como sendo um bloco intracodificado e desempenhar a conversão com base em um resultado do processo de construção de lista; em que o bloco codificado por paleta é codificado ou decodificado usando uma paleta ou valores de amostra de representação.
[00305] O método acima, em que o processo de construção de lista trata um bloco vizinho codificado por paleta como um bloco intra com um modo padrão.
[00306] Um método de processamento de vídeo, compreendendo: determinar, para uma conversão entre um bloco de vídeo atual de um vídeo compreendendo múltiplos blocos de vídeo e uma representação de bitstream do vídeo, que o bloco de vídeo atual é um bloco codificado por paleta; com base na determinação, desempenhar um processo de construção de lista do modo mais provável ao considerar o bloco de vídeo atual como sendo um bloco não intracodificado e desempenhar a conversão com base em um resultado do processo de construção de lista; em que o bloco codificado por paleta é codificado ou decodificado usando uma paleta ou valores de amostra de representação.
[00307] O método acima, em que o processo de construção de lista trata um bloco codificado por paleta vizinho como um bloco intercodificado ao coletar um modo intra do bloco codificado por paleta vizinho.
[00308] Um método de processamento de vídeo, compreendendo: determinar, para uma conversão entre um bloco de vídeo atual de um vídeo compreendendo múltiplos blocos de vídeo e uma representação de bitstream do vídeo, que o bloco de vídeo atual é um bloco codificado por paleta; com base na determinação, desempenhar um processo de construção de lista ao considerar o bloco de vídeo atual como sendo um bloco indisponível e desempenhar a conversão com base em um resultado do processo de construção de lista; em que o bloco codificado por paleta é codificado ou decodificado usando uma paleta ou valores de amostra de representação.
[00309] O método acima, em que o processo de construção de lista é para uma predição de vetor de movimento com base em histórico.
[00310] O método acima, em que o processo de construção de lista é para uma MESCLAGEM ou um modo de predição de vetor de movimento avançado.
[00311] Os métodos acima, em que a determinação inclui adicionalmente a determinação com base no conteúdo do vídeo.
[00312] Os métodos acima, em que a determinação corresponde a um campo na representação de bitstream.
[00313] Um método de processamento de vídeo, compreendendo: determinar, durante uma conversão entre um bloco de vídeo atual e uma representação de bitstream do bloco de vídeo atual, que o bloco de vídeo atual é um bloco codificado por paleta, determinar, com base no bloco de vídeo atual sendo o bloco codificado por paleta, uma faixa de bins codificados por contexto usados para a conversão; e desempenhar a conversão com base na faixa de bins codificados por contexto.
[00314] O método acima, em que bins do bloco de vídeo atual que caem fora da faixa são codificados usando a técnica de codificação de bypass ou decodificados usando uma técnica de decodificação de bypass durante a conversão.
[00315] Os métodos acima, em que a conversão compreende codificar o vídeo em representação de bitstream.
[00316] Os métodos acima, em que a conversão compreende a decodificação da representação de bitstream para gerar o vídeo.
[00317] A FIG. 24 é um diagrama de bloco mostrando um sistema de processamento de vídeo de exemplo 2400 no qual várias técnicas divulgadas na presente invenção podem ser implementadas. Várias implementações podem incluir alguns ou todos os componentes do sistema 2400. O sistema 2400 pode incluir entrada 2402 para receber conteúdo de vídeo. O conteúdo de vídeo pode ser recebido em um formato bruto ou não comprimido, por exemplo, valores de pixel multicomponente de 8 ou 10 bits, ou pode estar em um formato comprimido ou codificado. A entrada 1902 pode representar uma interface de rede, uma interface de barramento periférico ou uma interface de armazenamento. Os exemplos de interface de rede incluem interfaces com fio, tais como Ethernet, rede óptica passiva (PON), etc., e interfaces sem fio, tais como Wi-Fi ou interfaces de celular.
[00318] O sistema 2400 pode incluir um componente de codificação 2404 que pode implementar os vários métodos de codificação ou codificação descritos no presente documento. O componente de codificação 2404 pode reduzir a taxa de bits média de vídeo a partir da entrada 2402 para a saída do componente de codificação 2404 para produzir uma representação codificada do vídeo. As técnicas de codificação são, portanto, às vezes chamadas de compressão de vídeo ou técnicas de transcodificação de vídeo. A saída do componente de codificação 2404 pode ser armazenada ou transmitida via uma comunicação conectada, como representado pelo componente 2406. A representação de bitstream armazenada ou comunicada (ou codificada) do vídeo recebido na entrada 2402 pode ser usada pelo componente 2408 para gerar valores de pixel ou vídeo exibível que é enviado para uma interface de display 2410. O processo de geração de vídeo visualizável pelo usuário a partir da representação de bitstream às vezes é chamado de descompressão de vídeo. Além disso, embora certas operações de processamento de vídeo sejam referidas como operações ou ferramentas de “codificação”, será apreciado que as ferramentas ou operações de codificação são usadas em um codificador e as ferramentas de decodificação correspondentes ou operações que invertem os resultados da codificação serão desempenhadas por um decodificador.
[00319] Exemplos de uma interface de barramento periférico ou uma interface de display podem incluir barramento serial universal (USB) ou interface multimídia de alta definição (HDMI) ou Displayport e assim por diante. Exemplos de interfaces de armazenamento incluem SATA (conexão de tecnologia avançada serial), PCI, interface de IDE e semelhantes. As técnicas descritas no presente documento podem ser incorporadas em vários dispositivos eletrônicos, tais como telefones celulares, laptops, smartphones ou outros dispositivos que são capazes de desempenhar o processamento de dados digitais e/ou display de vídeo.
[00320] A Fig. 25 é uma representação de fluxograma de um método 2500 para processamento de vídeo de acordo com a presente tecnologia. O método 2500 inclui, na operação 2510, desempenhar uma conversão entre um bloco de uma região de vídeo de um vídeo e uma representação de bitstream do vídeo. A representação de bitstream é processada de acordo com uma primeira regra de formato que especifica se uma primeira indicação de uso de um modo de paleta é sinalizada para o bloco e uma segunda regra de formato que especifica uma posição da primeira indicação em relação a uma segunda indicação de uso de um modo de predição para o bloco.
[00321] Em algumas modalidades, a região de vídeo compreende uma unidade de transformada, uma unidade de codificação, uma unidade de predição ou uma região do vídeo. Em algumas modalidades, a segunda indicação de uso do modo de predição é posicionada antes da primeira indicação de uso do modo de paleta na representação de bitstream.
[00322] Em algumas modalidades, a primeira indicação de uso do modo de paleta é incluída condicionalmente na representação de bitstream com base na segunda indicação de uso do modo de predição. Em algumas modalidades, a primeira indicação de uso do modo de paleta é saltada na representação de bitstream no caso da segunda indicação de uso do modo de predição indicar um modo de predição de cópia de bloco intra (IBC). Em algumas modalidades, a primeira indicação de uso do modo de paleta é saltada na representação de bitstream no caso da segunda indicação de uso do modo de predição indicar um modo de interpredição. Em algumas modalidades, a primeira indicação de uso do modo de paleta é saltada na representação de bitstream no caso da segunda indicação de uso do modo de predição indicar um modo de intrapredição. Em algumas modalidades, a primeira indicação de uso do modo de paleta é saltada na representação de bitstream no caso da segunda indicação de uso do modo de predição indicar um modo de salto. Em algumas modalidades, saltar a primeira indicação de uso do modo de paleta na representação de bitstream indica que o modo de paleta não é usado.
[00323] Em algumas modalidades, a primeira indicação de uso do modo de paleta é codificada no bitstream no caso da segunda indicação de uso do modo de predição indicar um modo de IBC. Em algumas modalidades, a primeira indicação de uso do modo de paleta é codificada no bitstream no caso da segunda indicação de uso do modo de predição indicar um modo de intrapredição. Em algumas modalidades, o modo de predição não é um modo de Modulação por Código de Pulso (PCM). Em algumas modalidades, a primeira indicação de uso do modo de paleta é codificada antes de uma indicação de uso de um modo de PCM na representação de bitstream. Em algumas modalidades, uma indicação de uso de um modo de PCM é saltado na representação de bitstream. Em algumas modalidades, uma indicação do modo de IBC é codificada na representação de bitstream. Em algumas modalidades, no caso de um modo de intrapredição ser usado, um flag nas representações de bitstream indica se o modo de paleta ou o modo de IBC é sinalizado na representação de bitstream. Em algumas modalidades, o flag é saltado com base em uma condição do bloco,
a condição compreendendo uma dimensão do bloco, se o modo de IBC é habilitado para uma região associada ao bloco, ou se o modo de paleta é habilitado para a região associada ao bloco.
[00324] Em algumas modalidades, a primeira indicação de uso do modo de paleta é codificada no bitstream no caso da segunda indicação de uso do modo de predição indicar um modo de interpredição. Em algumas modalidades, a primeira indicação de uso do modo de paleta é codificada após pelo menos um dentre: uma indicação de um modo de salto, o modo de predição ou uma indicação de uso de um modo de PCM. Em algumas modalidades, a primeira indicação de uso do modo de paleta é codificada após uma indicação de um modo de salto ou do modo de predição e é codificada antes de uma indicação de uso de um modo de PCM.
[00325] Em algumas modalidades, a primeira indicação de uso do modo de paleta é posicionada antes da segunda indicação de uso do modo de predição na representação de bitstream. Em algumas modalidades, a primeira indicação de uso do modo de paleta é posicionada após a segunda indicação de uso do modo de predição, a segunda indicação de uso do modo de predição indica um modo de intra ou interpredição na representação de bitstream. Em algumas modalidades, a primeira indicação de uso do modo de paleta é sinalizada com base em uma imagem, uma fatia ou um tipo de grupo de ladrilhos. Em algumas modalidades, a primeira indicação de uso do modo de paleta compreende um primeiro flag indicando que o modo de paleta é habilitado para o bloco. Em algumas modalidades, a primeira indicação de uso do modo de paleta é condicionalmente incluída na representação de bitstream com base em um primeiro flag indicando que o modo de paleta é habilitado em um nível de sequência, um nível de imagem, um nível de grupo de ladrilhos ou um nível de ladrilho. Em algumas modalidades, outro flag indicando um modo de PCM do bloco é incluído na representação de bitstream no caso de o modo de paleta ser desabilitado para o bloco. Em algumas modalidades, o primeiro flag é codificado por contexto com base nas informações de um ou mais blocos vizinhos do bloco atual. Em algumas modalidades, o primeiro flag é codificado sem informações de contexto a partir de um ou mais blocos vizinhos do bloco atual.
[00326] Em algumas modalidades, a segunda indicação de uso do modo de paleta compreende um segundo flag indicando o modo de predição. Em algumas modalidades, no caso do segundo flag na representação de bitstream indicar que o modo de predição é um modo inter, a representação de bitstream compreende adicionalmente um terceiro flag indicando se um modo de cópia de bloco intra é habilitado. Em algumas modalidades, no caso do segundo flag na representação de bitstream indicar que o modo de predição é um modo intra, a representação de bitstream compreende adicionalmente um terceiro flag indicando se um modo de cópia de bloco intra é habilitado. Em algumas modalidades, o terceiro flag é condicionalmente incluído na representação de bitstream com base em uma dimensão do bloco.
[00327] Em algumas modalidades, o bloco é uma unidade de codificação e o segundo flag na representação de bitstream indica que o modo de predição é um modo intra. Em algumas modalidades, o primeiro flag é condicionalmente incluído na representação de bitstream com base em uma dimensão do bloco.
[00328] A Fig. 26 é uma representação de fluxograma de um método 2600 para processamento de vídeo de acordo com a presente tecnologia. O método 2600 inclui, na operação 2610, determinar, para uma conversão entre um bloco de uma região de vídeo em um vídeo e uma representação de bitstream do vídeo, um modo de predição com base em um ou mais modos de predição permitidos que incluem pelo menos um modo de paleta do bloco. Uma indicação de uso do modo de paleta é determinada de acordo com o modo de predição. O método 2600 inclui, na operação 2620, desempenhar a conversão com base na determinação.
[00329] Em algumas modalidades, um ou mais modos de predição permitidos compreendem um modo intra. Em algumas modalidades, os um ou mais modos de predição permitidos compreendem um modo de cópia de bloco intra (IBC). Em algumas modalidades, os um ou mais modos de predição permitidos compreendem um modo inter.
[00330] Em algumas modalidades, a região de vídeo inclui uma fatia intra, uma intraimagem ou um grupo de ladrilhos intra. Em algumas modalidades, o um ou mais modos de predição permitidos compreendem o modo intra, o modo de cópia de bloco intra e o modo de paleta.
[00331] Em algumas modalidades, a região de vídeo inclui um inter fatia, uma interimagem, um grupo de ladrilhos inter, uma fatia P, uma fatia B, uma imagem P ou uma imagem B. Em algumas modalidades, os um ou mais modos de predição permitidos compreendem o modo intra, o modo de cópia de bloco intra, o modo de paleta e o modo inter.
[00332] Em algumas modalidades, o bloco tem uma dimensão de 4x4. Em algumas modalidades, o um ou mais modos de predição permitidos excluem o modo inter no caso de o bloco ter uma dimensão de 4x4.
[00333] Em algumas modalidades, a representação de bitstream inclui pelo menos um índice de modo de predição que representa um ou mais modos de predição permitidos no caso de o bloco não ser codificado em um modo de salto, em que o índice de modo de predição é representado usando um ou mais bins binários.
[00334] Em algumas modalidades, o índice do modo de predição é representado usando três bins binários, em que um primeiro valor bin de '1' indica um modo intra, em que o primeiro valor bin de '0' e um segundo valor bin de '0' indicam um modo inter, em que o primeiro valor bin de '0', o segundo valor bin de '1' e um terceiro valor bin de '0' indicam um modo de IBC, e em que o primeiro valor bin de '0', o segundo valor de '1' e o terceiro valor bin de '1' indicam um modo de paleta.
[00335] Em algumas modalidades, o índice do modo de predição é representado usando dois bins binários, em que um primeiro valor bin de '1' e um segundo valor bin de '0' indicam um modo intra, em que o primeiro valor bin de '0' e o segundo valor bin de '0' indicam um modo inter, em que o primeiro valor bin de '0' e o segundo valor bin de '1' indicam um modo de IBC, e em que o primeiro valor bin de '1' e o segundo valor bin de '1' indicam um modo de paleta.
[00336] Em algumas modalidades, o índice do modo de predição é representado usando um bin binário no caso de uma fatia atual do vídeo ser uma fatia intra e um modo de IBC estiver desabilitado, um primeiro valor bin de '0' indicando um modo intra e um segundo valor bin de '1' indicando um modo de paleta.
[00337] Em algumas modalidades, o índice do modo de predição é representado usando dois bins binários no caso de uma fatia atual do vídeo não ser fatia intra e um modo de IBC estar desabilitado, em que um primeiro valor bin de '1' indica um modo intra, em que o primeiro valor bin de '0' e um segundo valor bin de '0' indicam um modo inter, e em que o primeiro valor bin de '0' e o segundo valor bin de '1' indicam um modo de paleta. Em algumas modalidades, o índice do modo de predição é representado usando dois bins binários no caso de uma fatia atual do vídeo ser uma fatia intra e um modo de IBC é habilitado, em que um primeiro valor bin de '1' indica o modo de IBC, em que o primeiro valor bin de '0' e um segundo valor bin de '1' indicam um modo de paleta, e em que o primeiro valor bin de '0' e o segundo valor bin de '0' indicam um modo intra. Em algumas modalidades, a indicação do uso do modo de IBC sinalizado em um Conjunto de Parâmetros de Sequência (SPS) da representação de bitstream.
[00338] Em algumas modalidades, o índice do modo de predição é representado usando três bins binários, em que um primeiro valor bin de '1' indica um modo inter, em que o primeiro valor bin de '0' e um segundo valor bin de '1' indicam um modo intra, em que o primeiro valor bin de '0', o segundo valor bin de '0' e um terceiro valor bin de '1' indicam um modo de IBC, e em que o primeiro valor bin de '0', o segundo valor bin de '0' e o terceiro valor bin de '0' indicam um modo de paleta.
[00339] Em algumas modalidades, o índice do modo de predição é representado usando três bins binários, em que um primeiro valor bin de '1' indica um modo intra, em que o primeiro valor bin de '0' e um segundo valor bin de '1' indicam um modo inter, em que o primeiro valor bin de '0', o segundo valor bin de '0' e um terceiro valor bin de '1' indicam um modo de IBC, e em que o primeiro valor bin de '0', o segundo valor bin de '0' e o terceiro valor bin de '0' indicam um modo de paleta.
[00340] Em algumas modalidades, o índice do modo de predição é representado usando três bins binários, em que um primeiro valor bin de '0' indica um modo inter, em que o primeiro valor bin de '1' e um segundo valor bin de '0' indicam um modo intra, em que o primeiro valor bin de '1', o segundo valor bin de '1' e um terceiro valor bin de '1' indicam um modo de IBC, e em que o primeiro valor bin de '1', o segundo valor bin de '1' e o terceiro valor bin de '0' indicam um modo de paleta.
[00341] Em algumas modalidades, a sinalização de um dos um ou mais bins binários é saltada na representação de bitstream no caso de uma condição ser satisfeita. Em algumas modalidades, a condição compreende uma dimensão do bloco. Em algumas modalidades, a condição compreende um modo de predição sendo desabilitado e em que um bin binário correspondente ao modo de predição é saltado na representação de bitstream.
[00342] A Fig. 27 é uma representação de fluxograma de um método 2700 para processamento de vídeo de acordo com a presente tecnologia. O método 2700 inclui, na operação 2710, desempenhar uma conversão entre um bloco de vídeo e uma representação de bitstream do vídeo. A representação de bitstream é processada de acordo com uma regra de formato que especifica uma primeira indicação de uso de um modo de paleta e uma segunda indicação de uso de um modo de cópia de bloco intra (IBC) sinalizados dependentes um do outro.
[00343] Em algumas modalidades, a regra de formato especifica que a primeira indicação é sinalizada na representação de bitstream no caso de um modo de predição do bloco ser igual a um primeiro modo de predição que não é o modo de IBC. Em algumas modalidades, a regra de formato especifica que a segunda indicação é sinalizada na representação de bitstream no caso de um modo de predição do bloco ser igual a um primeiro modo de predição que não é o modo de paleta. Em algumas modalidades, o primeiro modo de predição é um modo intra.
[00344] A Fig. 28 é uma representação de fluxograma de um método 2800 para processamento de vídeo de acordo com a presente tecnologia. O método 2800 inclui, na operação 2810, determinar, para uma conversão entre um bloco de um vídeo e uma representação de bitstream do vídeo, a presença de uma indicação de uso de um modo de paleta na representação de bitstream com base em uma dimensão do bloco. O método 2800 inclui, na operação 2820, desempenhar a conversão com base na determinação.
[00345] A Fig. 29 é uma representação de fluxograma de um método 2900 para processamento de vídeo de acordo com a presente tecnologia. O método
2900 inclui, na operação 2910, determinar, para uma conversão entre um bloco de um vídeo e uma representação de bitstream do vídeo, a presença de uma indicação de uso de um modo de cópia de bloco intra (IBC) na representação de bitstream com base em uma dimensão do bloco. O método 2900 inclui, na operação 2920, desempenhar a conversão com base na determinação. Em algumas modalidades, a dimensão do bloco compreende pelo menos um de: um número de amostras no bloco, uma largura do bloco ou uma altura do bloco.
[00346] Em algumas modalidades, a indicação é sinalizada na representação de bitstream no caso da largura do bloco ser igual ou menor que um limite. Em algumas modalidades, a indicação é sinalizada na representação de bitstream no caso da altura do bloco ser igual ou menor que um limite. Em algumas modalidades, o limite é 64.
[00347] Em algumas modalidades, a indicação é sinalizada na representação de bitstream no caso da largura e a altura do bloco ser maior do que um limite. Em algumas modalidades, o limite é 4. Em algumas modalidades, a indicação é sinalizada na representação de bitstream no caso do número de amostras no bloco ser maior do que um limite. Em algumas modalidades, o limite é 16. Em algumas modalidades, a indicação é sinalizada na representação de bitstream no caso de uma largura do bloco ser igual a uma altura do bloco.
[00348] Em algumas modalidades, a indicação não está presente na representação de bitstream no caso (1) a largura do bloco é maior que um primeiro limite, (2) a altura do bloco é maior que um segundo limite, ou (3) o número de amostras no bloco é igual ou menor que um terceiro limite. Em algumas modalidades, o primeiro limite e o segundo limite são 64. Em algumas modalidades, o terceiro limite é 16.
[00349] Em algumas modalidades, a determinação se baseia adicionalmente em uma característica associada ao bloco. Em algumas modalidades, a característica compreende um modo de predição do bloco. Em algumas modalidades, a característica compreende um parâmetro de quantização do bloco. Em algumas modalidades, a característica compreende um flag de paleta de um bloco vizinho do bloco. Em algumas modalidades, a característica compreende um flag de IBC de um bloco vizinho do bloco. Em algumas modalidades, a característica compreende uma indicação de um formato de cor do bloco. Em algumas modalidades, a característica compreende uma estrutura de árvore de codificação do bloco. Em algumas modalidades, a característica compreende um tipo de grupo de fatias, um tipo de grupo de ladrilhos ou um tipo de imagem do bloco.
[00350] A Fig. 30 é uma representação de fluxograma de um método 3000 para processamento de vídeo de acordo com a presente tecnologia. O método 3000 inclui, na operação 3010, determinar, para uma conversão entre um bloco de um vídeo e uma representação de bitstream do vídeo, se um modo de paleta é permitido para o bloco com base em uma segunda indicação de uma região de vídeo contendo o bloco. O método 3000 também inclui, na operação 3020, desempenhar a conversão com base na determinação.
[00351] Em algumas modalidades, a região de vídeo compreende uma fatia, um grupo de ladrilhos ou uma imagem. Em algumas modalidades, a representação de bitstream exclui uma indicação explícita de se o modo de paleta é permitido no caso da segunda indicação indicar que uma diferença de vetor de movimento fracionário está habilitada. Em algumas modalidades, a segunda indicação é representada como um flag que está presente na representação de bitstream. Em algumas modalidades, a segunda indicação indica se o modo de paleta é habilitado para a região de vídeo. Em algumas modalidades, a representação de bitstream exclui uma indicação explícita de se o modo de paleta é permitido no caso da segunda indicação indicar que o modo de paleta está desabilitado para a região de vídeo. Em algumas modalidades, o modo de paleta não é permitido para o bloco no caso da representação de bitstream excluir uma indicação explícita de se o modo de paleta é permitido.
[00352] A Fig. 31 é uma representação de fluxograma de um método 3100 para processamento de vídeo de acordo com a presente tecnologia. O método 3100 inclui, na operação 3110, determinar, para uma conversão entre um bloco de um vídeo e uma representação de bitstream do vídeo, se um modo de cópia de bloco intra (IBC) é permitido para o bloco com base em uma segunda indicação de uma região de vídeo contendo o bloco. O método 3100 também inclui, na operação 3120, desempenhar a conversão com base na determinação.
[00353] Em algumas modalidades, a região de vídeo compreende uma fatia, um grupo de ladrilhos ou uma imagem. Em algumas modalidades, a representação de bitstream exclui uma indicação explícita de se o modo de IBC é permitido no caso da segunda indicação indicar que uma diferença de vetor de movimento fracionário está habilitada. Em algumas modalidades, a segunda indicação é representada como um flag que está presente na representação de bitstream. Em algumas modalidades, a segunda indicação indica se o modo de IBC é habilitado para a região de vídeo. Em algumas modalidades, a representação de bitstream exclui uma indicação explícita de se o modo de IBC é permitido no caso da segunda indicação indicar que o modo de IBC está desabilitado para a região de vídeo. Em algumas modalidades, o modo de IBC não é permitido para o bloco no caso da representação de bitstream excluir uma indicação explícita de se o modo de IBC é permitido.
[00354] Em algumas modalidades, a conversão gera o bloco atual a partir da representação de bitstream. Em algumas modalidades, a conversão gera a representação de bitstream a partir do bloco atual.
[00355] Algumas modalidades da tecnologia divulgada incluem tomar uma decisão ou determinação para habilitar uma ferramenta ou modo de processamento de vídeo. Em um exemplo, quando a ferramenta ou modo de processamento de vídeo é habilitada, o codificador usará ou implementará a ferramenta ou modo no processamento de um bloco de vídeo, mas pode não necessariamente modificar o bitstream resultante com base no uso da ferramenta ou modo. Ou seja, uma conversão a partir do bloco de vídeo para a representação de bitstream do vídeo usará a ferramenta ou modo de processamento de vídeo quando é habilitada com base na decisão ou determinação. Em outro exemplo, quando a ferramenta ou modo de processamento de vídeo é habilitada, o decodificador irá processar o bitstream com o conhecimento de que o bitstream foi modificado com base na ferramenta ou modo de processamento de vídeo. Ou seja, uma conversão a partir da representação de bitstream do vídeo para o bloco de vídeo será desempenhada usando a ferramenta ou modo de processamento de vídeo que foi habilitado com base na decisão ou determinação.
[00356] Algumas modalidades da tecnologia divulgada incluem tomar uma decisão ou determinação para desabilitar uma ferramenta ou modo de processamento de vídeo. Em um exemplo, quando a ferramenta ou modo de processamento de vídeo é desabilitada, o codificador não usará a ferramenta ou modo na conversão do bloco de vídeo para a representação de bitstream do vídeo. Em outro exemplo, quando a ferramenta ou modo de processamento de vídeo é desabilitada, o decodificador processará o bitstream com o conhecimento de que o bitstream não foi modificado usando a ferramenta ou modo de processamento de vídeo que foi habilitado com base na decisão ou determinação.
[00357] As soluções divulgadas e outras, exemplos, modalidades, módulos e as operações funcionais descritas neste documento podem ser implementadas em conjuntos de circuitos eletrônicos digitais, ou em software, firmware ou hardware de computador, incluindo as estruturas divulgadas neste documento e seus equivalentes estruturais, ou em combinações de um ou mais deles. As modalidades divulgadas e outras modalidades podem ser implementadas como um ou mais produtos de programa de computador, ou seja, um ou mais módulos de instruções de programa de computador codificados em um meio legível por computador para execução por, ou para controlar a operação de, aparelho de processamento de dados. O meio legível por computador pode ser um dispositivo de armazenamento legível por máquina, um substrato de armazenamento legível por máquina, um dispositivo de memória, uma composição de matéria efetuando um sinal propagado legível por máquina ou uma combinação de um ou mais deles. O termo “aparelho de processamento de dados” abrange todos os aparelhos, dispositivos e máquinas para processamento de dados, incluindo, a título de exemplo, um processador programável, um computador ou múltiplos processadores ou computadores. O aparelho pode incluir, além do hardware, o código que cria um ambiente de execução para o programa de computador em questão, por exemplo, o código que constitui o firmware do processador, uma pilha de protocolo, um sistema de gerenciamento de banco de dados, um sistema operacional ou uma combinação de um ou mais deles. Um sinal propagado é um sinal gerado artificialmente, por exemplo, um sinal elétrico, óptico ou eletromagnético gerado por máquina, que é gerado para codificar informações para transmissão para um aparelho receptor adequado.
[00358] Um programa de computador (também conhecido como programa, software, aplicação de software, script ou código) pode ser escrito em qualquer forma de linguagem de programação, incluindo linguagens compiladas ou interpretadas, e pode ser implantado em qualquer forma, incluindo como um programa autônomo ou como um módulo, componente, sub-rotina ou outra unidade adequada para uso em um ambiente de computação. Um programa de computador não corresponde necessariamente a um arquivo em um sistema de arquivos. Um programa pode ser armazenado em uma porção de um arquivo que contém outros programas ou dados (por exemplo, um ou mais scripts armazenados em um documento de linguagem de marcação), em um único arquivo dedicado ao programa em questão ou em múltiplos arquivos coordenados (por exemplo, arquivos que armazenam um ou mais módulos, subprogramas ou porções de código). Um programa de computador pode ser implantado para ser executado em um computador ou em múltiplos computadores que são localizados em um local ou distribuídos em múltiplos locais e interconectados por uma rede de comunicação.
[00359] Os processos e fluxos lógicos descritos neste documento podem ser desempenhados por um ou mais processadores programáveis executando um ou mais programas de computador para desempenhar funções operando em dados de entrada e gerando saída. Os processos e fluxos lógicos também podem ser desempenhados por, e os aparelhos também podem ser implementados como, conjuntos de circuitos lógicos de propósito especial, por exemplo, um FPGA (arranjo de porta programável em campo) ou um ASIC (circuito integrado de aplicação específica).
[00360] Os processadores adequados para a execução de um programa de computador incluem, a título de exemplo, ambos microprocessadores de uso geral e de propósito especial e qualquer um ou mais processadores de qualquer tipo de computador digital. Geralmente, um processador receberá instruções e dados a partir de uma memória somente de leitura ou de uma memória de acesso aleatório ou de ambas. Os elementos essenciais de um computador são um processador para desempenhar instruções e um ou mais dispositivos de memória para armazenar instruções e dados. Geralmente, um computador também incluirá, ou será operativamente acoplado para receber dados a partir de ou transferir dados para, ou ambos, um ou mais dispositivos de armazenamento em massa para armazenar dados, por exemplo, discos magnéticos, magneto-ópticos ou discos ópticos. No entanto, um computador não precisa ter tais dispositivos. A mídia legível por computador adequada para armazenar instruções e dados de programa de computador inclui todas as formas de memória não volátil, dispositivos de mídia e memória, incluindo a título de exemplo, dispositivos de memória semicondutores, por exemplo, EPROM, EEPROM e dispositivos de memória flash; discos magnéticos, por exemplo, discos rígidos internos ou discos removíveis; discos magneto-ópticos; e discos de CD-ROM e DVD-ROM. O processador e a memória podem ser complementados por, ou incorporados em, conjuntos de circuitos lógicos de propósito especial.
[00361] Embora este documento de patente contenha muitas especificidades, estas não devem ser interpretadas como limitações no escopo de qualquer matéria ou do que pode ser reivindicado, mas sim como descrições de recursos que podem ser específicos para modalidades particulares de técnicas particulares. Certos recursos que são descritos neste documento de patente no contexto de modalidades separadas também podem ser implementados em combinação em uma única modalidade. Por outro lado, vários recursos que são descritos no contexto de uma única modalidade também podem ser implementados em múltiplas modalidades separadamente ou em qualquer subcombinação adequada. Além disso, embora os recursos possam ser descritos acima como agindo em certas combinações e mesmo inicialmente reivindicadas como tal, um ou mais recursos a partir de uma combinação reivindicada podem, em alguns casos, ser excisados a partir da combinação e a combinação reivindicada pode ser direcionada a uma subcombinação ou variação de uma subcombinação.
[00362] De maneira similar, embora as operações sejam representadas nas figuras em uma ordem particular, isso não deve ser entendido como exigindo que tais operações sejam desempenhadas na ordem particular mostrada ou em ordem sequencial, ou que todas as operações ilustradas sejam desempenhadas, para atingir os resultados desejáveis. Além disso, a separação de vários componentes de sistema nas modalidades descritas neste documento de patente não deve ser entendida como requerendo tal separação em todas as modalidades.
[00363] Apenas algumas implementações e exemplos são descritos e outras implementações, aprimoramentos e variações podem ser feitas com base no que é descrito e ilustrado neste documento de patente.

Claims (15)

REIVINDICAÇÕES
1. Método de processamento de dados de vídeo caracterizado pelo fato de que compreende: determinar, para uma conversão entre um bloco de vídeo atual de um vídeo e um bitstream do vídeo, se uma primeira indicação de uso de um primeiro modo de predição está incluída no bitstream de acordo com uma regra; e desempenhar a conversão entre o bloco de vídeo atual e o bitstream; em que no primeiro modo de predição, as amostras reconstruídas são representadas por um conjunto de valores de cor representativos e o conjunto de valores de cor representativos compreende pelo menos um de 1) preditores de paleta, 2) amostras de escape ou 3) informações de paleta incluídas no bitstream, e em que a regra especifica que a primeira indicação não está incluída no bitstream e a primeira indicação inferida como falsa em resposta a um modo não intra sendo aplicado para o bloco de vídeo atual.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a regra especifica adicionalmente se incluir a primeira indicação no bitstream com base em uma estrutura de árvore de codificação do bloco de vídeo atual, e em que a estrutura de árvore de codificação inclui uma única estrutura de árvore de codificação e uma estrutura de árvore de codificação dupla.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que a regra especifica adicionalmente se incluir a primeira indicação no bitstream com base em uma dimensão do bloco de vídeo atual.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que a regra especifica adicionalmente se incluir a primeira indicação no bitstream com base em um formato de cor do bloco de vídeo atual.
5. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o modo não intra é um segundo modo de predição, e em que, no segundo modo de predição, amostras de predição são derivadas de valores de amostra reconstruídos da mesma imagem contendo o bloco de vídeo atual.
6. Método, de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que o modo não intra é um modo de interpredição.
7. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o modo não intra é um modo de salto.
8. Método, de acordo com qualquer uma das reivindicações 1 a 7, caracterizado pelo fato de que em resposta a uma fatia de vídeo incluindo o bloco de vídeo atual é uma fatia em I, apenas um dentre o primeiro modo de predição, o segundo modo de predição e um modo de codificação intra é usado para gerar amostras de predição do bloco de vídeo atual.
9. Método, de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de que o primeiro modo de codificação é independente do modo de codificação intra.
10. Método, de acordo com qualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que a conversão inclui codificar o bloco de vídeo atual para dentro do bitstream.
11. Método, de acordo com qualquer uma das reivindicações 1 a 10, caracterizado pelo fato de que a conversão inclui decodificar o bloco de vídeo atual a partir do bitstream.
12. Aparelho para processar dados de vídeo caracterizado pelo fato de que compreende um processador e uma memória não transitória com instruções no mesmo, em que as instruções após a execução pelo processador, fazem com que o processador: determine, para uma conversão entre um bloco de vídeo atual de um vídeo e um bitstream do vídeo, se uma primeira indicação de uso de um primeiro modo de predição está incluída no bitstream de acordo com uma regra; e desempenhe a conversão entre o bloco de vídeo atual e o bitstream; em que no primeiro modo de predição, as amostras reconstruídas são representadas por um conjunto de valores de cor representativos e o conjunto de valores de cor representativos compreende pelo menos um de 1) preditores de paleta, 2) amostras de escape ou 3) informações de paleta incluídas no bitstream, e em que a regra especifica que a primeira indicação não está incluída no bitstream e a primeira indicação inferida como falsa em resposta a um modo não intra sendo aplicado para o bloco de vídeo atual.
13. Meio de armazenamento não transitório legível por computador caracterizado pelo fato de que armazena instruções que fazem com que um processador: determine, para uma conversão entre um bloco de vídeo atual de um vídeo e um bitstream do vídeo, se uma primeira indicação de uso de um primeiro modo de predição está incluída no bitstream de acordo com uma regra; e desempenhe a conversão entre o bloco de vídeo atual e o bitstream; em que no primeiro modo de predição, as amostras reconstruídas são representadas por um conjunto de valores de cor representativos e o conjunto de valores de cor representativos compreende pelo menos um de 1) preditores de paleta, 2) amostras de escape ou 3) informações de paleta incluídas no bitstream, e em que a regra especifica que a primeira indicação não está incluída no bitstream e a primeira indicação inferida como falsa em resposta a um modo não intra sendo aplicado para o bloco de vídeo atual.
14. Meio de gravação não transitório legível por computador caracterizado pelo fato de que armazena um bitstream de um vídeo que é gerado por um método desempenhado por um aparelho de processamento de vídeo, em que o método compreende: determinar, para um bloco de vídeo atual do vídeo, se uma primeira indicação de uso de um primeiro modo de predição está incluída no bitstream de acordo com uma regra; e gerar o bitstream com base na determinação; em que no primeiro modo de predição, as amostras reconstruídas são representadas por um conjunto de valores de cor representativos e o conjunto de valores de cor representativos compreende pelo menos um de 1) preditores de paleta, 2) amostras de escape ou 3) informações de paleta incluídas no bitstream, e em que a regra especifica que a primeira indicação não está incluída no bitstream e a primeira indicação inferida como falsa em resposta a um modo não intra sendo aplicado para o bloco de vídeo atual.
15. Método para armazenar um bitstream de um vídeo caracterizado pelo fato de que compreende: determinar, para um bloco de vídeo atual de um vídeo, se uma primeira indicação de uso de um primeiro modo de predição está incluída no bitstream de acordo com uma regra; e gerar o bitstream com base na determinação; e armazenar o bitstream em um meio de gravação legível por computador não transitório em que no primeiro modo de predição, as amostras reconstruídas são representadas por um conjunto de valores de cor representativos e o conjunto de valores de cor representativos compreende pelo menos um de 1) preditores de paleta, 2) amostras de escape ou 3) informações de paleta incluídas no bitstream, e em que a regra especifica que a primeira indicação não está incluída no bitstream e a primeira indicação inferida como falsa em resposta a um modo não intra sendo aplicado para o bloco de vídeo atual.
BR112021016235-6A 2019-02-24 2020-02-24 Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador, meio de gravação não transitório legível por computador e método para armazenar um bitstream de um vídeo BR112021016235A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/075994 2019-02-24
CN2019075994 2019-02-24
PCT/CN2020/076367 WO2020169103A1 (en) 2019-02-24 2020-02-24 Independent coding of palette mode usage indication

Publications (1)

Publication Number Publication Date
BR112021016235A2 true BR112021016235A2 (pt) 2021-10-13

Family

ID=77868499

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021016235-6A BR112021016235A2 (pt) 2019-02-24 2020-02-24 Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador, meio de gravação não transitório legível por computador e método para armazenar um bitstream de um vídeo

Country Status (8)

Country Link
US (1) US20240048710A1 (pt)
EP (1) EP3912351A4 (pt)
KR (1) KR20210129647A (pt)
CN (2) CN113475077B (pt)
BR (1) BR112021016235A2 (pt)
MX (1) MX2021009943A (pt)
SG (1) SG11202108938TA (pt)
ZA (1) ZA202105840B (pt)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020169105A1 (en) 2019-02-24 2020-08-27 Beijing Bytedance Network Technology Co., Ltd. Condition dependent coding of palette mode usage indication
BR112021017428A2 (pt) * 2019-03-08 2021-11-16 Beijing Bytedance Network Tech Co Ltd Método de processamento de dados de vídeo, aparelho para processamento de dados de vídeo e meios de armazenamento e de gravação não transitórios legíveis por computador
EP3987806A4 (en) 2019-07-20 2022-08-31 Beijing Bytedance Network Technology Co., Ltd. CONDITIONAL CODING OF PALETTE MODE USE INDICATION
CN114145013B (zh) 2019-07-23 2023-11-14 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
EP3991411A4 (en) 2019-07-29 2022-08-24 Beijing Bytedance Network Technology Co., Ltd. CODING IN PALETTE MODE IN A PREDICTION PROCESS

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4901772B2 (ja) * 2007-02-09 2012-03-21 パナソニック株式会社 動画像符号化方法及び動画像符号化装置
US9948933B2 (en) * 2014-03-14 2018-04-17 Qualcomm Incorporated Block adaptive color-space conversion coding
US20150373327A1 (en) * 2014-06-20 2015-12-24 Qualcomm Incorporated Block adaptive color-space conversion coding
US9596479B2 (en) * 2014-10-07 2017-03-14 Hfi Innovation Inc. Method of pulse-code modulation and palette coding for video coding
CN114630131B (zh) * 2014-11-12 2023-11-07 寰发股份有限公司 索引映射编解码中的跳出像素编解码方法
TW201637448A (zh) * 2015-01-14 2016-10-16 Vid衡器股份有限公司 非4:4:4螢幕內容視訊調色盤編碼
JP2018050091A (ja) * 2015-02-02 2018-03-29 シャープ株式会社 画像復号装置、画像符号化装置および予測ベクトル導出装置
US11146788B2 (en) * 2015-06-12 2021-10-12 Qualcomm Incorporated Grouping palette bypass bins for video coding

Also Published As

Publication number Publication date
EP3912351A1 (en) 2021-11-24
KR20210129647A (ko) 2021-10-28
CN117336514A (zh) 2024-01-02
CN113475077A (zh) 2021-10-01
SG11202108938TA (en) 2021-09-29
ZA202105840B (en) 2023-05-31
MX2021009943A (es) 2021-09-21
EP3912351A4 (en) 2022-07-06
CN113475077B (zh) 2023-11-17
US20240048710A1 (en) 2024-02-08

Similar Documents

Publication Publication Date Title
US20230127932A1 (en) Palette mode coding in prediction process
US11683503B2 (en) Mode determining for palette mode in prediction process
US11677953B2 (en) Independent coding of palette mode usage indication
AU2020316506B2 (en) Quantization process for palette mode
BR112021016235A2 (pt) Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador, meio de gravação não transitório legível por computador e método para armazenar um bitstream de um vídeo
US20230217024A1 (en) Size Restriction Based for Chroma Intra Mode
KR20220039721A (ko) 색상 포맷에 기초한 크기 제한
WO2021013120A1 (en) Quantization process for palette mode
EP3915258A1 (en) Joint coding of palette mode usage indication
WO2020207421A1 (en) Entry construction for palette mode coding
RU2810950C2 (ru) Совместное кодирование индикации использования режима палитры
RU2816845C2 (ru) Независимое кодирование индикации использования режима палитры
WO2021013210A1 (en) Mode determining for palette mode in prediction process
JP7442673B2 (ja) ビデオコーディングにおけるスキップブロックの変換のための最小許容量子化
CN114747217A (zh) 调色板编解码模式