BR122022009445A2 - Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem - Google Patents

Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem Download PDF

Info

Publication number
BR122022009445A2
BR122022009445A2 BR122022009445-7A BR122022009445A BR122022009445A2 BR 122022009445 A2 BR122022009445 A2 BR 122022009445A2 BR 122022009445 A BR122022009445 A BR 122022009445A BR 122022009445 A2 BR122022009445 A2 BR 122022009445A2
Authority
BR
Brazil
Prior art keywords
slice
inter
pic
image
max
Prior art date
Application number
BR122022009445-7A
Other languages
English (en)
Inventor
Biao Wang
Semih ESENLIK
Han Gao
Anand Meher Kotra
Elena Alexandrovna Alshina
Original Assignee
Huawei Technologies Co., Ltd.
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 Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR122022009445A2 publication Critical patent/BR122022009445A2/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • 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

Landscapes

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

Abstract

CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA SIMPLIFICAR SINALIZAÇÃO DE CABEÇALHO DE IMAGEM. Um método de codificação implementado por um dispositivo de decodificação é fornecido. O método inclui analisar um fluxo de bits para obter uma flag a partir de um cabeçalho de imagem do fluxo de bits, em que a flag indica se uma imagem atual é uma imagem I. Quando a flag indicar que a imagem atual é uma imagem I, um elemento de sintaxe designado para predição inter é inferido a um valor padrão; ou quando a flag indicar que a imagem atual é uma imagem P ou B, obter um elemento de sintaxe designado para predição inter a partir do cabeçalho de imagem.

Description

CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA SIMPLIFICAR SINALIZAÇÃO DE CABEÇALHO DE IMAGEM Dividido do BR 112022006694-5, de 10/10/2020. REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[0001] Este pedido de patente reivindica a prioridade ao Pedido de Patente Provisório U.S No 62/913,730, depositado em 10 de outubro de 2019, o qual é incorporado no presente documento a título de referência em sua totalidade.
CAMPO DA TÉCNICA
[0002] As modalidades do presente pedido (revelação) se referem, de modo geral, ao campo de processamento de imagem e mais particularmente à sinalização de cabeçalho de imagem.
FUNDAMENTOS
[0003] A codificação de vídeo (codificação e decodificação de vídeo) é usada em uma ampla gama de aplicativos de vídeo digital, por exemplo, broadcast de TV digital, transmissão de vídeo pela Internet e redes móveis, aplicativos de conversação em tempo real, como bate-papo por vídeo, videoconferência, DVD e discos Bluray, sistemas de aquisição e edição de conteúdo de vídeo e camcorders de aplicações de segurança.
[0004] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transmitidos por streaming ou caso contrário comunicados através de uma rede de comunicações com capacidade de largura de banda limitada. Portanto, os dados de vídeo geralmente são comprimidos antes de serem comunicados pelas redes de telecomunicações modernas. O tamanho de um vídeo também pode ser um problema quando o vídeo for armazenado em um dispositivo de armazenamento devido ao fato de que os recursos de memória podem ser limitados. Os dispositivos de compressão de vídeo geralmente usam software e/ou hardware na fonte para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo assim a quantidade de dados necessários para representar imagens de vídeo digital. Os dados comprimidos são, então, recebidos no destino por um dispositivo de descomprimidos de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas cada vez maiores de maior qualidade de vídeo, é desejável simplificar a sinalização de cabeçalho de imagem.
SUMÁRIO
[0005] As modalidades do presente pedido fornecem aparelhos e métodos para codificação e decodificação de acordo com as reivindicações independentes
[0006] Os objetivos anteriores e outros objetivos são alcançados pela matéria das reivindicações independentes. Outras formas de implementação são evidentes nas reivindicações dependentes, na descrição e nas figuras.
[0007] De acordo com um primeiro aspecto, a invenção se refere a um método de codificação implementado por um dispositivo de decodificação. O método inclui analisar um fluxo de bits para obter uma flag a partir de um cabeçalho de imagem do fluxo de bits, em que a flag indica se uma imagem atual é uma imagem I.
[0008] Quando a flag indicar que a imagem atual é imagem I, um elemento de sintaxe designado para predição inter é inferido a um valor padrão; ou quando a flag indicar que a imagem atual é imagem P ou B, obter um elemento de sintaxe designado para predição inter a partir do cabeçalho de imagem.
[0009] O elemento de sintaxe designado para predição inter inclui um ou mais dentre os seguintes elementos: pic_log2_diff_min_qt_min_cb_inter_slice, pic_max_mtt_hierarchy_depth_inter_slice, pic_log2_diff_max_bt_min_qt_inter_slice, pic_log2_diff_max_tt_min_qt_inter_slice, pic_cu_qp_delta_subdiv_inter_slice, pic_cu_chroma_qp_offset_subdiv_inter_slice, pic_temporal_mvp_enabled_flag, mvd_l1_zero_flag, pic_fpel_mmvd_enabled_flag, ou pic_disable_bdof_dmvr_flag.
[0010] De acordo com um segundo aspecto, a invenção se refere a um método de codificação implementado por um dispositivo de codificação. O método inclui determinar se uma imagem atual é imagem I; e enviar um fluxo de bits para um dispositivo de decodificação, em que um cabeçalho de imagem do fluxo de bits inclui uma flag que indica se a imagem atual é imagem I; e em que quando a imagem atual for uma imagem I, um elemento de sintaxe designado para predição inter não é sinalizado no cabeçalho de imagem; ou quando a imagem atual for uma imagem P ou B, um elemento de sintaxe designado para predição inter é sinalizado no cabeçalho de imagem.
[0011] O método de acordo com o primeiro aspecto da invenção pode ser realizado pelo aparelho de acordo com o terceiro aspecto da invenção. Outras características e formas de implementação do método de acordo com o terceiro aspecto da invenção correspondem às características e formas de implementação do aparelho de acordo com o primeiro aspecto da invenção.
[0012] O método de acordo com o segundo aspecto da invenção pode ser realizado pelo aparelho de acordo com o quarto aspecto da invenção. Outras características e formas de implementação do método de acordo com o quarto aspecto da invenção correspondem às características e formas de implementação do aparelho de acordo com o segundo aspecto da invenção.
[0013] De acordo com um quinto aspecto, a invenção se refere a um aparelho para decodificar um fluxo de vídeo que inclui um processador e uma memória. A memória está armazenando instruções que fazem com que o processador realize o método de acordo com o primeiro aspecto.
[0014] De acordo com um sexto aspecto, a invenção se refere a um aparelho para codificar um fluxo de vídeo que inclui um processador e uma memória. A memória está armazenando instruções que fazem com que o processador realize o método de acordo com o segundo aspecto.
[0015] De acordo com um sétimo aspecto, propõe-se uma mídia de armazenamento legível por computador tendo instruções armazenadas que, quando executadas, fazem com que um ou mais processadores configurados codifiquem dados de vídeo. As instruções fazem com que o um ou mais processadores realizem um método de acordo com o primeiro ou segundo aspecto ou qualquer modalidade possível do primeiro ou segundo aspecto.
[0016] De acordo com um oitavo aspecto, a invenção se refere a um programa de computador que compreende código de programa para realizar o método de acordo com o primeiro ou segundo aspecto ou qualquer modalidade possível do primeiro ou segundo aspecto quando executado em um computador.
[0017] Conforme discutido acima, ao indicar se a imagem atual é uma imagem I no cabeçalho de imagem do fluxo de bits, o elemento de sintaxe designado para predição inter não é sinalizado no cabeçalho de imagem quando a imagem atual for uma imagem I. Assim, as modalidades podem simplificar sinalização de cabeçalho de imagem para todas as imagens intra, isto é, imagem I. Correspondentemente, a sobrecarga de sinalização é reduzida.
[0018] Detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outras características, objetivos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0019] Nas modalidades a seguir da invenção são descritas em maiores detalhes com referência às figuras e desenhos anexos, em que:
[0020] A Figura 1A é um diagrama de blocos que mostra um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção;
[0021] A Figura 1B é um diagrama de blocos que mostra outro exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção;
[0022] A Figura 2 é um diagrama de blocos que mostra um exemplo de um codificador de vídeo configurado para implementar modalidades da invenção;
[0023] A Figura 3 é um diagrama de blocos que mostra uma estrutura de exemplo de um decodificador de vídeo configurado para implementar modalidades da invenção;
[0024] A Figura 4 é um diagrama de blocos que ilustra um exemplo de um aparelho de codificação ou um aparelho de decodificação.
[0025] A Figura 5 é um diagrama de blocos que ilustra outro exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0026] A Figura 6 é um exemplo de sintaxe de RBSP de conjunto de parâmetros de imagem;
[0027] A Figura 7 é um exemplo de sintaxe de RBSP de conjunto de parâmetros de imagem;
[0028] A Figura 8 é um exemplo de uma sintaxe de conjunto de parâmetros de adaptação;
[0029] A Figura 9 é um exemplo de sintaxe de cabeçalho de fatia geral;
[0030] A Figura 10a é um exemplo da estrutura de sintaxe de unidade de árvore de codificação;
[0031] A Figura 10b é um exemplo da sintaxe de cabeçalho de imagem;
[0032] A Figura 11 é outro exemplo de sintaxe de cabeçalho de fatia geral;
[0033] A Figura 12 mostra um fluxograma 1200 que ilustra um método implementado por um dispositivo de codificação;
[0034] A Figura 13 mostra um fluxograma 1300 que ilustra um método implementado por um dispositivo de decodificação;
[0035] A Figura 14 ilustra uma configuração de um dispositivo de codificação;
[0036] A Figura 15 ilustra uma configuração de um dispositivo de decodificação;
[0037] A Figura 16 é um diagrama de blocos que mostra uma estrutura exemplificativa de um sistema de fornecimento de conteúdo 3100 que realiza um serviço de entrega de conteúdo; e
[0038] A Figura 17 é um diagrama de blocos que mostra uma estrutura de um exemplo de um dispositivo terminal.
[0039] Nos seguintes sinais de referência idênticos se referem a características idênticas ou pelo menos funcionalmente equivalentes, se não for especificado caso contrário
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0040] Na descrição a seguir, é feita referência às figuras anexas, que fazem parte da revelação e que mostram, a título de ilustração, aspectos específicos das modalidades da invenção ou aspectos específicos nos quais as modalidades da presente invenção podem ser usadas. Entende-se que as modalidades da invenção podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não representadas nas figuras. A seguinte descrição detalhada, portanto, não deve ser tomada em um sentido limitante, e o escopo da presente invenção é definido pelas reivindicações anexas.
[0041] Por exemplo, entende-se que uma revelação em conexão com um método descrito também pode ser verdadeira para um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas de método específicas forem descritas, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar uma ou pluralidade de etapas de método descritas (por exemplo, uma unidade realizando uma ou pluralidade de etapas, ou uma pluralidade de unidades, cada uma realizando uma ou mais dentre a pluralidade de etapas), mesmo que essas uma ou mais unidades não sejam explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico é descrito com base em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir uma etapa para realizar a funcionalidade da uma ou pluralidade de unidades (por exemplo, uma etapa realizando a funcionalidade de uma ou pluralidade de unidades, ou uma pluralidade de etapas, cada uma realizando a funcionalidade de uma ou mais dentre a pluralidade de unidades), mesmo que tal uma ou pluralidade de etapas não esteja explicitamente descrita ou ilustrada nas figuras. Além disso, entende-se que as características das várias modalidades exemplares e/ou aspectos descritos no presente documento podem ser combinados entre si, a menos que especificamente indicado de outra forma.
[0042] A codificação de vídeo normalmente se refere ao processamento de uma sequência de imagens, que formam o vídeo ou a sequência de vídeo. Em vez do termo “imagem”, o termo “quadro” ou “imagem” pode ser usado como sinônimo no campo da codificação de vídeo. A codificação de vídeo (ou codificação em geral) compreende duas partes de codificação de vídeo e decodificação de vídeo. A codificação de vídeo é realizada no lado da fonte, tipicamente que compreende o processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados necessários para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficientes). A decodificação de vídeo é realizada no lado de destino e normalmente compreende o processamento inverso comparado ao codificador para reconstruir as imagens de vídeo. As modalidades referentes à “codificação” de imagens de vídeo (ou imagens em geral) devem ser entendidas como relacionadas à “codificação” ou “decodificação” de imagens de vídeo ou respectivas sequências de vídeo. A combinação da parte de codificação e da parte de decodificação também é chamada de CODEC (Codificação e Decodificação).
[0043] No caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, isto é, as imagens de vídeo reconstruídas têm a mesma qualidade que as imagens de vídeo originais (assumindo que não há perda de transmissão ou outra perda de dados durante o armazenamento ou transmissão). No caso de codificação de vídeo com perdas, é realizada compressão adicional, por exemplo, por quantização, para reduzir a quantidade de dados que representam as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, isto é, a qualidade das imagens de vídeo reconstruídas é menor ou pior comparada à qualidade das imagens de vídeo originais.
[0044] Vários padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbridos com perdas” (isto é, combinam predição espacial e temporal no domínio de amostra e codificação de transformada 2D para aplicar quantização no domínio de transformada). Cada imagem de uma sequência de vídeo é normalmente particionada em um conjunto de blocos não sobrepostos e a codificação é normalmente realizada em um nível de bloco. Em outras palavras, no codificador, o vídeo é tipicamente processado, isto é, codificado, em um nível de bloco (bloco de vídeo), por exemplo, usando-se predição espacial (imagem intra) e/ou predição temporal (imagem inter) para gerar um bloco de predição, subtraindo o bloco de predição do bloco atual (bloco atualmente processado/a ser processado) para obter um bloco residual, transformando o bloco residual e quantizando o bloco residual no domínio de transformada para reduzir a quantidade de dados a serem transmitidos (compressão), enquanto que no decodificador o processamento inverso comparado ao codificador é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o loop de processamento de decodificador de modo que ambos gerem predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para processamento, isto é, codificação, dos blocos subsequentes.
[0045] Nas seguintes modalidades de um sistema de codificação de vídeo 10, um codificador de vídeo 20 e um decodificador de vídeo 30 são descritos com base nas Figuras 1 a 3.
[0046] A Figura 1A é um diagrama de blocos esquemático que ilustra um sistema de codificação de exemplo 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação 10 abreviado) que pode utilizar técnicas deste presente pedido. O codificador de vídeo 20 (ou codificador 20 abreviado) e o decodificador de vídeo 30 (ou decodificador 30 abreviado) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas de acordo com vários exemplos descritos no presente pedido.
[0047] Como mostrado na Figura 1A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer dados de imagem codificados 21, por exemplo, para um dispositivo de destino 14 para decodificar os dados de imagem codificados 13.
[0048] O dispositivo de fonte 12 compreende um codificador 20 e pode adicionalmente, isto é, opcionalmente, compreender uma fonte de imagem 16, um pré-processador (ou unidade de pré-processamento) 18, por exemplo, um pré-processador de imagem 18 e uma interface de comunicação ou unidade de comunicação 22.
[0049] A fonte de imagem 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, uma câmera para capturar uma imagem do mundo real e/ou qualquer tipo de dispositivo de geração de imagem, por exemplo, um processador gráfico de computador para gerar uma imagem animada por computador, ou qualquer outro tipo de dispositivo para obter e/ou fornecer uma imagem do mundo real, uma imagem gerada por computador (por exemplo, um conteúdo de tela, uma imagem de realidade virtual (VR)) e/ou qualquer combinação destes (por exemplo, uma imagem de realidade aumentada (AR)). A fonte de imagem pode ser qualquer tipo de memória ou armazenamento armazenando qualquer uma das imagens acima mencionadas.
[0050] Em distinção ao pré-processador 18 e ao processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também podem ser referidos como imagem bruta ou dados de imagem brutos 17.
[0051] O pré-processador 18 é configurado para receber os dados de imagem (brutos) 17 e para realizar o pré-processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem préprocessados 19. O pré-processamento realizado pelo pré-processador 18 pode, por exemplo, compreender recorte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor ou redução de ruído. Pode ser entendido que a unidade de pré-processamento 18 pode ser um componente opcional.
[0052] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 2).
[0053] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir os dados de imagem codificados 21 (ou qualquer outra versão processada dos mesmos) pelo canal de comunicação 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[0054] O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30), e pode adicionalmente, isto é, opcionalmente, compreender uma interface de comunicação ou unidade de comunicação 28, um pós-processador 32 (ou unidade de pós-processamento 32) e um dispositivo de exibição 34.
[0055] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer outra versão processada dos mesmos), por exemplo, diretamente do dispositivo de origem 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados e fornecer os dados de imagem codificados 21 ao decodificador 30.
[0056] A interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas para transmitir ou receber os dados de imagem codificados 21 ou dados codificados 13 por meio de um enlace de comunicação direta entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão direta com fio ou sem fio, ou através de qualquer tipo de rede, por exemplo, uma rede com ou sem fio ou qualquer combinação destas, ou qualquer tipo de rede pública e privada, ou qualquer tipo de combinação das mesmas.
[0057] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, pacotes, e/ou processar os dados de imagem codificados usando qualquer tipo de codificação de transmissão ou processamento para transmissão através de um enlace de comunicação ou rede de comunicação.
[0058] A interface de comunicação 28, formando a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de decodificação ou processamento de transmissão correspondente e/ou desempacotamento para obter os dados de imagem codificados 21.
[0059] Tanto a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecional conforme indicado pela seta para o canal de comunicação 13 na Figura 1A apontando a partir do dispositivo de origem 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecionais e pode ser configurado, por exemplo, para enviar e receber mensagens, por exemplo, para estabelecer uma conexão, para reconhecer e trocar quaisquer outras informações relacionadas ao enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificados.
[0060] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 3 ou Figura 5).
[0061] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também chamados de dados de imagem reconstruídos), por exemplo, a imagem decodificada 31, para obter dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, recorte ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[0062] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processados 33 para exibir a imagem, por exemplo, para um usuário ou espectador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de display para representar a imagem reconstruída, por exemplo, um display ou monitor integrado ou externo. Os displays podem, por exemplo, compreender displays de cristal líquido (LCD), displays de diodos emissores de luz orgânicos (OLED), displays de plasma, projetores, displays de micro LED, cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer outro tipo de display.
[0063] Embora a Figura 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades de dispositivos também podem compreender ambas ou ambas as funcionalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente. Em tais modalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente podem ser implementados usando o mesmo hardware e/ou software ou por hardware e/ou software separado ou qualquer combinação dos mesmos.
[0064] Como será evidente para o técnico no assunto com base no relatório descritivo, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou dispositivo de destino 14 como mostrado na Figura 1A pode variar dependendo do dispositivo e aplicação reais.
[0065] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou ambos o codificador 20 e o decodificador 30 podem ser implementados através de circuitos de processamento como mostrado na Figura 1B, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou qualquer combinação dos mesmos. O codificador 20 pode ser implementado através de circuitos de processamento 46 para incorporar os vários módulos conforme discutidos em relação ao codificador 20 da Figura 2 e/ou qualquer outro sistema ou subsistema codificador aqui descrito. O decodificador 30 pode ser implementado através de circuitos de processamento 46 para incorporar os vários módulos conforme discutidos em relação ao decodificador 30 da Figura 3 e/ou qualquer outro sistema ou subsistema decodificador aqui descrito. Os circuitos de processamento podem ser configurados para realizar as várias operações conforme discutido mais adiante. Conforme mostrado na Figura 5, se as técnicas forem implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um mídia de armazenamento legível por computador não transitória adequada e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta revelação. Tanto o codificador de vídeo 20 quanto o decodificador de vídeo 30 podem ser integrados como parte de um codificador/decodificador combinado (CODEC) em um único dispositivo, por exemplo, como mostrado na Figura 1B.
[0066] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla variedade de dispositivos, incluindo qualquer tipo de dispositivo portátil ou estacionário, por exemplo, computadores notebooks ou laptops, telefones celulares, smartphones, tablets ou computadores tablets, câmeras, computadores desktop, set-top boxes, televisores, dispositivos de exibição, players de mídia digital, consoles de videogame, dispositivos de streaming de vídeo (como servidores de serviços de conteúdo ou servidores de entrega de conteúdo), dispositivo receptor de broadcast, dispositivo transmissor de broadcast ou similares e pode usar nenhum ou qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem estar equipados para comunicação sem fio. Portanto, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0067] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na Figura 1A é meramente um exemplo e as técnicas do presente pedido podem ser aplicadas a definições de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e de decodificação. Em outros exemplos, os dados são recuperados de uma memória local, transmitidos por streaming através de uma rede, ou similares. Um dispositivo de codificação de vídeo pode codificar e armazenar dados para a memória e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados a partir da memória. Em alguns exemplos, a codificação e a decodificação são realizadas por dispositivos que não se comunicam entre si, mas simplesmente codificam dados para a memória e/ou recuperam e decodificam dados a partir da memória.
[0068] Por conveniência de descrição, as modalidades da invenção são descritas no presente documento, por exemplo, por referência à codificação de vídeo de alta eficiência (HEVC) ou ao software de referência de codificação de vídeo versátil (VVC), o padrão de codificação de vídeo de próxima geração desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) de ITU-T e Grupo de Especialistas em Imagem em Movimento (MPEG) de ISO/IEC. Um indivíduo de habilidade comum na técnica entenderá que as modalidades da invenção não estão limitadas a HEVC ou VVC.
Codificador e Método de Codificação
[0069] A Figura 2 mostra um diagrama de blocos esquemático de um codificador de vídeo exemplificativo 20 que é configurado para implementar as técnicas do presente pedido. No exemplo da Figura 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), uma unidade de cálculo residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210 e unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214, uma unidade de filtro loop 220, um buffer de imagem decodificada (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação de entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de predição inter 244, uma unidade de predição intra 254 e uma unidade de particionamento 262. A unidade de predição inter 244 pode incluir uma unidade de estimação de movimento e uma unidade de compensação de movimento (não mostrada). Um codificador de vídeo 20 como mostrado na Figura 2 também pode ser referido como codificador de vídeo híbrido ou um codificador de vídeo de acordo com um codec de vídeo híbrido.
[0070] A unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de seleção de modo 260 podem ser referidas como formando um percurso de sinal de avanço do codificador 20, enquanto a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212 , a unidade de reconstrução 214, o buffer 216, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 podem ser referidos como formando um percurso de sinal de regressão do codificador de vídeo 20, em que o percurso de sinal de regressão do codificador de vídeo 20 corresponde ao percurso de sinal do decodificador (ver decodificador de vídeo 30 na Figura 3). A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 também são referidas para formar a “decodificador interno” do codificador de vídeo 20.
Imagens e Particionamento de Imagens (Imagens e Blocos)
[0071] O codificador 20 pode ser configurado para receber, por exemplo, através da entrada 201, uma imagem 17 (ou dados de imagem 17), por exemplo, imagem de uma sequência de imagens formando um vídeo ou sequência de vídeo. A imagem ou dados de imagem recebidos também podem consistir em uma imagem pré-processada 19 (ou dados de imagem préprocessados 19). Para simplificar, a descrição a seguir se refere à figura 17. A imagem 17 também pode ser referida como imagem atual ou imagem a ser codificada (em particular na codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagens previamente codificadas e/ou decodificadas da mesma sequência de vídeo, isto é, a sequência de vídeo que também compreende a imagem atual).
[0072] Uma imagem (digital) é ou pode ser considerada como uma matriz ou arranjo bidimensional de amostras com valores de intensidade. Uma amostra no arranjo também pode ser chamada de pixel (forma abreviada de elemento de imagem) ou pel. O número de amostras na direção horizontal e vertical (ou eixo) do arranjo ou imagem define o tamanho e/ou resolução da imagem. Para a representação da cor, normalmente são empregados três componentes de cor, isto é, a imagem pode ser representada ou incluir três arranjos de amostra. No formato RBG ou espaço de cores, uma imagem compreende um arranjo de amostra de vermelho, verde e azul correspondente. No entanto, na codificação de vídeo, cada pixel é tipicamente representado em um formato de luminância e crominância ou espaço de cor, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (às vezes também L é usado) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou luma, abreviado) Y representa o brilho ou intensidade do nível de cinza (por exemplo, como em uma imagem em escala de cinza), enquanto os dois componentes de crominância (ou croma, abreviado) Cb e Cr representam os componentes de cromaticidade ou informações de cor. Assim, uma imagem no formato YCbCr compreende um arranjo de amostra de luminância de valores de amostra de luminância (Y) e dois arranjos de amostra de crominância de valores de crominância (Cb e Cr). As imagens no formato RGB podem ser convertidas ou transformadas no formato YCbCr e vice-versa, o processo também é conhecido como transformação ou conversão de cores. Se uma imagem for monocromática, a imagem pode compreender apenas um arranjo de amostra de luminância. Assim, uma imagem pode ser, por exemplo, um arranjo de amostras de luma em formato monocromático ou um arranjo de amostras de luma e dois arranjos correspondentes de amostras de croma em formato de cor 4:2:0, 4:2:2 e 4:4:4.
[0073] As modalidades do codificador de vídeo 20 podem compreender uma unidade de particionamento de imagem (não representada na Figura 2) configurada para particionar a imagem 17 em uma pluralidade de blocos de imagem (tipicamente não sobrepostos) 203. Esses blocos também podem ser chamados de blocos raiz, macroblocos (H.264/AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265/HEVC e VVC). A unidade de particionamento de imagem pode ser configurada para usar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeo e a grade correspondente que define o tamanho do bloco, ou para alterar o tamanho do bloco entre imagens ou subconjuntos ou grupos de imagens e particionar cada imagem nos blocos correspondentes.
[0074] Em outras modalidades, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos os blocos que formam a imagem 17. O bloco de imagem 203 também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado.
[0075] Como a imagem 17, o bloco de imagem 203 novamente é ou pode ser considerado como uma matriz ou arranjo bidimensional de amostras com valores de intensidade (valores de amostra), embora de dimensão menor que a imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, um arranjo de amostra (por exemplo, um arranjo de luma no caso de uma imagem monocromática 17, ou um arranjo de luma ou croma no caso de uma imagem colorida) ou três arranjos de amostra (por exemplo, um arranjo de luma e dois de croma no caso de uma imagem colorida 17) ou qualquer outro número e/ou tipo de arranjos dependendo do formato de cor aplicado. O número de amostras na direção horizontal e vertical (ou eixo) do bloco 203 define o tamanho do bloco 203. Consequentemente, um bloco pode ser, por exemplo, um arranjo de amostras MxN (M colunas por N linhas) ou um arranjo de coeficientes de transformada MxN.
[0076] As modalidades do codificador de vídeo 20 como mostrado na Figura 2 podem ser configuradas para codificar a imagem 17 bloco por bloco, por exemplo, a codificação e a predição são realizadas por bloco 203.
[0077] As modalidades do codificador de vídeo 20, como mostrado na Figura 2, podem ser ainda configuradas para particionar e/ou codificar a imagem usando-se fatias (também chamadas de fatias de vídeo), em que uma imagem pode ser particionada ou codificada usando uma ou mais fatias (tipicamente sem sobreposição), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs).
[0078] As modalidades do codificador de vídeo 20 como mostrado na Figura 2 podem ser adicionalmente configuradas para particionar e/ou codificar a imagem usando-se grupos de tiles (também referidos como grupos de tiles de vídeo) e/ou tiles (também referidos como tiles de vídeo), em que uma imagem pode ser particionada ou codificada usando um ou mais grupos de tiles (tipicamente não sobrepostos), e cada grupo de tiles pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou um ou mais tiles, em que cada tile, por exemplo, pode ser de forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionados.
Cálculo Residual
[0079] A unidade de cálculo residual 204 pode ser configurada para calcular um bloco residual 205 (também referido como residual 205) com base no bloco de imagem 203 e em um bloco de predição 265 (mais detalhes sobre o bloco de predição 265 são fornecidos posteriormente), por exemplo, ao subtrair valores de amostra do bloco de predição 265 a partir de valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio de amostra.
Transformada
[0080] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma transformada, por exemplo, uma transformada de cosseno discreta (DCT) ou transformada de seno discreta (DST), nos valores de amostra do bloco residual 205 para obter coeficientes de transformada 207 em um domínio de transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio de transformada.
[0081] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações inteiras de DCT/DST, como as transformadas especificadas para H.265/HEVC. Em comparação a uma transformada DCT ortogonal, essas aproximações inteiras são tipicamente escaladas por um determinado fator. Para preservar a norma do bloco residual que é processado por transformadas diretas e inversas, fatores de escala adicionais são aplicados como parte do processo de transformada. Os fatores de escala são tipicamente escolhidos com base em certas restrições, como fatores de escala sendo uma potência de dois para operações de deslocamento, profundidade de bits dos coeficientes de transformada, compensação entre precisão e custos de implementação, etc. Fatores de escala específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 (e a correspondente transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e os fatores de escala correspondentes para a transformada direta, por exemplo, pela unidade de processamento de transformada 206, em um codificador 20 podem ser especificado em conformidade
[0082] As modalidades do codificador de vídeo 20 (respectivamente unidade de processamento de transformada 206) podem ser configuradas para emitir parâmetros de transformada, por exemplo, um tipo de transformada ou transformadas, por exemplo, diretamente ou codificados ou comprimidos através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de transformada para decodificação.
Quantização
[0083] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter coeficientes quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial. Os coeficientes quantizados 209 também podem ser referidos como coeficientes de transformada quantizados 209 ou coeficientes residuais quantizados 209.
[0084] O processo de quantização pode reduzir a profundidade de bits associada a alguns ou a todos os coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante a quantização, em que n é maior que m. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização (QP). Por exemplo, para quantização escalar, diferentes escalas podem ser aplicadas para obter uma quantização mais fina ou mais grosseira. Tamanhos de etapas de quantização menores correspondem a quantização mais fina, enquanto tamanhos de etapas de quantização maiores correspondem a quantização mais grosseira. O tamanho da etapa de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização pode, por exemplo, ser um índice para um conjunto predefinido de tamanhos de etapa de quantização aplicáveis. Por exemplo, parâmetros de quantização pequenos podem corresponder a quantização fina (tamanhos de etapas de quantização pequenos) e parâmetros de quantização grandes podem corresponder a quantização grosseira (tamanhos de etapas de quantização grandes) ou vice-versa. A quantização pode incluir a divisão por um tamanho de etapa de quantização e uma desquantização correspondente e/ou inversa, por exemplo, por unidade de quantização inversa 210, pode incluir a multiplicação pelo tamanho da etapa de quantização. Modalidades de acordo com alguns padrões, por exemplo, HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho da etapa de quantização. De modo geral, o tamanho da etapa de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão. Fatores de escala adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode ser modificado por causa da escala usada na aproximação de ponto fixo da equação para tamanho de etapa de quantização e parâmetro de quantização. Em um exemplo de implementação, a escala da transformada inversa e a desquantização podem ser combinadas. Alternativamente, tabelas de quantização personalizadas podem ser usadas e sinalizadas a partir de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com o aumento dos tamanhos das etapas de quantização.
[0085] As modalidades do codificador de vídeo 20 (respectivamente unidade de quantização 208) podem ser configuradas para emitir parâmetros de quantização (QP), por exemplo, diretamente ou codificados através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e aplicar os parâmetros de quantização para decodificação.
Quantização Inversa
[0086] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 nos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base ou usando o mesmo tamanho de etapa de quantização como a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora tipicamente não sejam idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada 207.
Transformada Inversa
[0087] A unidade de processamento de transformada inversa 212 é configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada de cosseno discreta (DCT) inversa ou transformada de seno discreta (DST) inversa ou outras transformadas inversas, para obter um bloco residual reconstruído 213 (ou coeficientes desquantizados 213 correspondentes) no domínio da amostra. O bloco residual reconstruído 213 também pode ser referido como bloco de transformada 213.
Reconstrução
[0088] A unidade de reconstrução 214 (por exemplo, adicionador ou somador 214) é configurada para adicionar o bloco de transformada 213 (isto é, bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, adicionando-se - amostra por amostra - os valores de amostra do bloco residual reconstruído 213 e os valores de amostra do bloco de predição 265.
Filtragem
[0089] A unidade de filtro loop 220 (ou abreviado "filtro loop" 220), é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221 ou, em geral, para filtrar amostras reconstruídas para obter amostras filtradas. A unidade de filtro loop é, por exemplo, configurada para suavizar as transições de pixel, ou melhorar a qualidade do vídeo caso contrário. A unidade de filtro loop 220 pode compreender um ou mais filtros loop, tais como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro loop adaptativo (ALF), filtros de suavização, nitidez, ou filtros colaborativos, ou qualquer combinação dos mesmos. Embora a unidade de filtro loop 220 seja mostrada na Figura 2 como sendo um filtro in-loop, em outras configurações, a unidade de filtro 220 pode ser implementada como um filtro post-loop. O bloco filtrado 221 também pode ser referido como bloco reconstruído filtrado 221.
[0090] As modalidades do codificador de vídeo 20 (respectivamente unidade de filtro loop 220) podem ser configuradas para emitir parâmetros de filtro loop (tais como informações de deslocamento adaptativo de amostra), por exemplo, diretamente ou codificado através da unidade de codificação de entropia 270, de modo que, por exemplo, um decodificador 30 possa receber e aplicar os mesmos parâmetros de filtro loop ou respectivos filtros loop para decodificação.
Buffer de Imagem Decodificada
[0091] O buffer de imagem decodificada (DPB) 230 pode ser uma memória que armazena imagens de referência ou, em geral, dados de imagem de referência, para codificar dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um dentre uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O buffer de imagem decodificada (DPB) 230 pode ser configurado para armazenar um ou mais blocos filtrados 221. O buffer de imagem decodificada 230 pode adicionalmente ser configurado para armazenar outros blocos previamente filtrados, por exemplo, blocos previamente reconstruídos e filtrados 221, da mesma imagem atual ou de imagens diferentes, por exemplo, imagens previamente reconstruídas, e pode fornecer imagens completas previamente reconstruídas, isto é, decodificadas (e blocos e amostras de referência correspondentes) e/ou uma imagem atual parcialmente reconstruída (e blocos e amostras de referência correspondentes), por exemplo, para predição inter. O buffer de imagem decodificada (DPB) 230 também pode ser configurado para armazenar um ou mais blocos reconstruídos não filtrados 215 ou, em geral, amostras reconstruídas não filtradas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro loop 220 ou qualquer outra versão processada dos blocos ou amostras reconstruídas.
Seleção de Modo (Particionamento e Predição)
[0092] A unidade de seleção de modo 260 compreende unidade de particionamento 262, unidade de predição inter 244 e unidade de predição intra 254 e é configurada para receber ou obter dados de imagem originais, por exemplo, um bloco original 203 (bloco atual 203 da imagem atual 17), e dados de imagem reconstruídos, por exemplo, amostras reconstruídas filtradas e/ou não filtradas ou blocos da mesma imagem (atual) e/ou de uma ou uma pluralidade de imagens previamente decodificadas, por exemplo, do buffer de imagem decodificada 230 ou outros buffers (por exemplo, buffer de linha, não mostrado).. Os dados de imagem reconstruídos são usados como dados de imagem de referência para predição, por exemplo, predição inter ou predição intra, para obter um bloco de predição 265 ou preditor 265.
[0093] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição de bloco atual (incluindo sem particionamento) e um modo de predição (por exemplo, um modo de predição intra ou inter) e gerar um bloco de predição correspondente 265, que é usado para a cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído 215.
[0094] As modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o particionamento e o modo de predição (por exemplo, daqueles suportados ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor correspondência ou, em outras palavras, o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (a sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambas. A unidade de seleção de modo 260 pode ser configurada para determinar o modo de particionamento e predição com base na otimização de distorção de taxa (RDO), isto é, selecionar o modo de predição que fornece uma distorção de taxa mínima. Termos como "melhor", "mínimo", "ótimo" etc. neste contexto não se referem necessariamente a um "melhor", "mínimo", "ótimo", etc., mas também podem se referir ao cumprimento de uma rescisão ou critério de seleção, como um valor superior ou inferior a um limite ou outras restrições que levem potencialmente a uma “seleção sub-ótima”, mas reduzindo a complexidade e o tempo de processamento.
[0095] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar o bloco 203 em partições de blocos menores ou sub-blocos (que formam novamente blocos), por exemplo, usando iterativamente particionamento de quadtree (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação dos mesmos, e para realizar, por exemplo, a predição para cada uma das partições ou subblocos de blocos, em que a seleção de modo compreende a seleção da estrutura em árvore do bloco particionado 203 e o os modos de predição são aplicados a cada uma das partições de bloco ou sub-blocos.
[0096] A seguir, o particionamento (por exemplo, pela unidade de particionamento 260) e o processamento de predição (pela unidade de predição inter 244 e unidade de predição intra 254) realizado por um codificador de vídeo de exemplo 20 serão explicados em mais detalhes.
Particionamento
[0097] A unidade de particionamento 262 pode particionar (ou dividir) um bloco atual 203 em partições menores, por exemplo, blocos menores de tamanho quadrado ou retangular. Esses blocos menores (que também podem ser chamados de sub-blocos) podem ser particionados em partições ainda menores. Isso também é referido como particionamento de árvore ou particionamento de árvore hierárquico, em que um bloco raiz, por exemplo, no nível de árvore raiz 0 (nível de hierarquia 0, profundidade 0), pode ser particionado recursivamente, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível de hierarquia 1, profundidade 1), em que esses blocos podem ser novamente particionados em dois ou mais blocos de um nível inferior seguinte, por exemplo, nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc. até que o particionamento seja finalizado, por exemplo, porque um critério de finalização é atendido, por exemplo, uma profundidade máxima de árvore ou tamanho mínimo de bloco é atingido. Os blocos que não são adicionalmente particionados também são chamados de blocos-folha ou nós-folha da árvore. Uma árvore que usa particionamento em duas partições é chamada de árvore binária (BT), uma árvore que usa particionamento em três partições é chamada de árvore ternária (TT) e uma árvore que usa particionamento em quatro partições é chamada de quadtree (QT).
[0098] Conforme mencionado anteriormente, o termo "bloco", conforme usado no presente documento, pode ser uma porção, em particular uma porção quadrada ou retangular, de uma imagem I. Com referência, por exemplo, a HEVC e VVC, o bloco pode ser ou corresponder a uma unidade de árvore de codificação (CTU), uma unidade de codificação (CU), unidade de predição (PU) e unidade de transformada (TU) e/ou ao blocos correspondentes, por exemplo, um bloco de árvore de codificação (CTB), um bloco de codificação (CB), um bloco de transformada (TB) ou bloco de predição (PB).
[0099] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N, tal que a divisão de um componente em CTBs seja um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três arranjos de amostras ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores e estruturas de sintaxe separados usados para codificar as amostras. Correspondentemente, um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N, de modo que a divisão de um CTB em blocos de codificação seja um particionamento.
[0100] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs usando-se uma estrutura de quadtree denotada como árvore de codificação. A decisão de codificar uma área de imagem usando a predição de imagem inter (temporal) ou imagem intra (espacial) é feita no nível da CU. Cada CU pode ser dividida em uma, duas ou quatro PUs de acordo com o tipo de divisão de PU. Dentro de uma PU, o mesmo processo de predição é aplicado e as informações relevantes são transmitidas ao decodificador por PU. Após obter o bloco residual aplicando o processo de predição baseado no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs) de acordo com outra estrutura quadtree semelhante à árvore de codificação para a CU.
[0101] Em modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, que é referido como Codificação de Vídeo Versátil (VVC), um particionamento combinado de quadtree e árvore binária (QTBT) é, por exemplo, usado para particionar um bloco de codificação. Na estrutura de bloco QTBT, uma CU pode ter uma forma quadrada ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é primeiro particionada por uma estrutura quadtree. Os nós folha de quadtree são ainda particionados por uma estrutura de árvore binária ou árvore ternária (ou tripla). Os nós de folha de árvore de particionamento são chamados de unidades de codificação (CUs), e essa segmentação é usada para predição e processamento de transformada sem qualquer particionamento adicional. Isso significa que CU, PU e TU têm o mesmo tamanho de bloco na estrutura de bloco de codificação QTBT. Em paralelo, partição múltipla, por exemplo, partição de árvore tripla, pode ser usada junto com a estrutura de bloco QTBT
[0102] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas no presente documento.
[0103] Conforme descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ótimo a partir de um conjunto de modos de predição (por exemplo, predeterminados). O conjunto de modos de predição pode compreender, por exemplo, modos de predição intra e/ou modos de predição inter.
Predição Intra
[0104] O conjunto de modos de predição intra pode compreender 35 modos de predição intra diferentes, por exemplo, modos não direcionais, como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido em HEVC, ou pode compreender 67 modos de predição intra diferentes, por exemplo, modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido para VVC.
[0105] A unidade de predição intra 254 é configurada para usar amostras reconstruídas de blocos vizinhos da mesma imagem atual para gerar um bloco de predição intra 265 de acordo com um modo de predição intra do conjunto de modos de predição intra.
[0106] A unidade de predição intra 254 (ou em geral a unidade de seleção de modo 260) é ainda configurada para emitir parâmetros de predição intra (ou em geral, informações indicativas do modo de predição intra selecionado para o bloco) para a unidade de codificação de entropia 270 na forma de elementos de sintaxe 266 para inclusão nos dados de imagem codificados 21, tal que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de predição para decodificação.
Predição Inter
[0107] O conjunto de (ou possíveis) modos de predição inter depende das imagens de referência disponíveis (isto é, imagens anteriores pelo menos parcialmente decodificadas, por exemplo, armazenadas em DBP 230) e outros parâmetros de predição inter, por exemplo, se a imagem de referência inteira ou apenas uma parte, por exemplo, uma área de janela de busca ao redor da área do bloco atual, da imagem de referência é usada para buscar um bloco de referência de melhor correspondência e/ou, por exemplo, se a interpolação de pixel é aplicada, por exemplo, interpolação de metade/semipel e/ou quarto-pel, ou não.
[0108] Além dos modos de predição acima, o modo de salto e/ou o modo direto podem ser aplicados.
[0109] A unidade de predição inter 244 pode incluir uma unidade de estimação de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na Figura 2). A unidade de estimação de movimento pode ser configurada para receber ou obter o bloco de imagem 203 (bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um ou uma pluralidade de blocos reconstruídos anteriormente, por exemplo, blocos reconstruídos de um ou uma pluralidade de outras/diferentes imagens decodificadas 231 previamente, para estimação de movimento. Por exemplo, uma sequência de vídeo pode compreender a imagem atual e as imagens decodificadas 231 previamente, ou em outras palavras, a imagem atual e as imagens decodificadas 231 previamente podem ser parte ou formar uma sequência de imagens formando uma sequência de vídeo.
[0110] O codificador 20 pode, por exemplo, ser configurado para selecionar um bloco de referência a partir de uma pluralidade de blocos de referência das mesmas ou diferentes imagens da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de predição inter para a unidade de estimação de movimento. Esse deslocamento também é chamado de vetor de movimento (MV).
[0111] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de predição inter e para realizar predição inter com base ou usando o parâmetro de predição inter para obter um bloco de predição inter 265. A compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento/bloco determinado por estimação de movimento 42, possivelmente realizando interpolações para precisão subpixel. A filtragem de interpolação pode gerar amostras de pixel adicionais a partir de amostras de pixel conhecidas, aumentando assim potencialmente o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Mediante o recebimento do vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência.
[0112] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados aos blocos e fatias de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo. Em adição ou como alternativa às fatias e respectivos elementos de sintaxe, podem ser gerados ou usados grupos de tile e/ou tiles e respectivos elementos de sintaxe.
Codificação de Entropia
[0113] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema VLC adaptável ao contexto (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto com base em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia) ou bypass (sem compressão) nos coeficientes quantizados 209, parâmetros de predição inter, parâmetros de predição intra, parâmetros de filtro loop e/ou outros elementos de sintaxe para obter dados de imagem codificados 21 que podem ser emitidos através da saída 272, por exemplo, na forma de um fluxo de bits codificado 21, tal que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros para decodificação. O fluxo de bits codificado 21 pode ser transmitido para o decodificador de vídeo 30 ou armazenado em uma memória para transmissão ou recuperação posterior pelo decodificador de vídeo 30.
[0114] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador baseado em não transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para certos blocos ou quadros. Em outra implementação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade.
Decodificador e Método de Decodificação
[0115] A Figura 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implementar as técnicas deste presente pedido. O decodificador de vídeo 30 é configurado para receber dados de imagem codificados 21 (por exemplo, fluxo de bits codificado 21), por exemplo, codificado pelo codificador 20, para obter uma imagem decodificada 331. Os dados de imagem codificados ou fluxo de bits compreende informações para decodificar os dados de imagem codificados, por exemplo, dados que representam blocos de imagem de uma fatia de vídeo codificado (e/ou tiles ou grupo de tiles) e elementos de sintaxe associados.
[0116] No exemplo da Figura 3, o decodificador 30 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um filtro loop 320, um buffer de imagem decodificada (DBP) 330, uma unidade de aplicação de modo 360, uma unidade de predição inter 344 e uma unidade de predição intra 354. A unidade de predição inter 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30 pode, em alguns exemplos, realizar um passo de decodificação geralmente recíproco ao passo de codificação descrito em relação ao codificador de vídeo 100 da Figura 2.
[0117] Conforme explicado em relação ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 344 e a unidade de predição intra 354 também são referidos como formando o "decodificador interno" do codificador de vídeo 20. Por conseguinte, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro loop 320 pode ser idêntico em função ao filtro loop 220 e o buffer de imagem decodificada 330 pode ser idêntico em função ao buffer de imagem decodificada 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 se aplicam correspondentemente às respectivas unidades e funções do decodificador de vídeo 30.
Decodificação de Entropia
[0118] A unidade de decodificação de entropia 304 é configurada para analisar o fluxo de bits 21 (ou, em geral, dados de imagem codificados 21) e realizar, por exemplo, decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrado na Figura 3), por exemplo, qualquer ou todos os parâmetros de predição inter (por exemplo, índice de imagem de referência e vetor de movimento), parâmetros de predição intra (por exemplo, modo ou índice de predição intra), parâmetros de transformada, parâmetros de quantização, parâmetros de filtro loop e/ ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 pode ser configurada para aplicar os algoritmos ou esquemas de decodificação correspondentes aos esquemas de codificação conforme descrito em relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode ser adicionalmente configurada para fornecer parâmetros de predição inter, parâmetro de predição intra e/ou outros elementos de sintaxe para a unidade de aplicação de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo. Em adição ou como alternativa às fatias e respectivos elementos de sintaxe, podem ser recebidos e/ou usados grupos de tile e/ou tiles e respectivos elementos de sintaxe.
Quantização Inversa
[0119] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou, em geral, informações relacionadas à quantização inversa) e coeficientes quantizados a partir dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação de entropia 304) e aplicar com base nos parâmetros de quantização uma quantização inversa nos coeficientes quantizados decodificados 309 para obter coeficientes desquantizados 311, que também podem ser referidos como coeficientes de transformada 311. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização determinado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo (ou tile ou grupo de tiles) para determinar um grau de quantização e, de modo similar, um grau de quantização inversa que deve ser aplicado.
Transformada Inversa
[0120] A unidade de processamento de transformada inversa 312 pode ser configurada para receber coeficientes desquantizados 311, também referidos como coeficientes de transformada 311, e para aplicar uma transformada aos coeficientes desquantizados 311 para obter blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser referidos como blocos de transformada 313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada inteira inversa ou um processo de transformada inversa conceitualmente semelhante. A unidade de processamento de transformada inversa 312 pode ainda ser configurada para receber parâmetros de transformada ou informações correspondentes dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada aos coeficientes desquantizados 311.
Reconstrução
[0121] A unidade de reconstrução 314 (por exemplo, adicionador ou somador 314) pode ser configurada para adicionar o bloco residual reconstruído 313 ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio de amostra, por exemplo, adicionando-se os valores de amostra do bloco residual reconstruído 313 e os valores de amostra do bloco de predição 365.
Filtragem
[0122] A unidade de filtro loop 320 (seja no loop de codificação ou após o loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar as transições de pixel, ou melhorar a qualidade de vídeo caso contrário. A unidade de filtro loop 320 pode compreender um ou mais filtros loop, tal como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro loop adaptativo (ALF), uma nitidez, filtros de suavização ou filtros colaborativos, ou qualquer combinação dos mesmos. Embora a unidade de filtro loop 320 seja mostrada na Figura 3 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 320 pode ser implementada como um filtro post-loop.
Buffer de Imagem Decodificada
[0123] Os blocos de vídeo decodificados 321 de uma imagem são então armazenados no buffer de imagem decodificada 330, que armazena as imagens decodificadas 331 como imagens de referência para compensação de movimento subsequente para outras imagens e/ou para exibição de saída respectivamente.
[0124] O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, através da saída 312, para apresentação ou visualização a um usuário.
Predição
[0125] A unidade de predição inter 344 pode ser idêntica à unidade de predição inter 244 (em particular à unidade de compensação de movimento) e a unidade de predição intra 354 pode ser idêntica à unidade de predição inter 254 em função e realiza decisões de divisão ou particionamento e predição com base nos parâmetros de particionamento e/ou predição ou respectivas informações recebidas a partir dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304). A unidade de aplicação de modo 360 pode ser configurada para realizar a predição (predição intra ou inter) por bloco com base em imagens reconstruídas, blocos ou respectivas amostras (filtradas ou não filtradas) para obter o bloco de predição 365.
[0126] Quando a fatia de vídeo for codificada como uma fatia codificada de modo intra (I), a unidade de predição intra 354 da unidade de aplicação de modo 360 é configurada para gerar bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e dados a partir de blocos decodificados anteriormente da imagem atual. Quando a imagem de vídeo for codificada como uma fatia codificada de modo inter (isto é, B, ou P), a unidade de predição inter 344 (por exemplo, unidade de compensação de movimento) da unidade de aplicação de modo 360 é configurada para produzir blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e em outros elementos de sintaxe recebidos a partir da unidade de decodificação de entropia 304. Para predição inter, os blocos de predição podem ser produzidos a partir de uma dentre as imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, a Lista 0 e a Lista 1, usando técnicas de construção padrão com base nas imagens de referência armazenadas em DPB 330. O mesmo ou semelhante pode ser aplicado para ou por modalidades usando grupos de tiles (por exemplo, grupos de tiles de vídeo) e/ou tiles (por exemplo, tiles de vídeo) em adição ou alternativamente a fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de tiles I, P ou B e/ou tiles.
[0127] A unidade de aplicação de modo 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual analisando-se os vetores de movimento ou informações relacionadas e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de aplicação de modo 360 usa uma parte dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, fatia B, fatia P ou fatia GPB), informações de construção para uma ou mais dentre as listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, status de predição inter para cada bloco de vídeo codificado de modo inter da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. O mesmo ou semelhante pode ser aplicado para ou por modalidades usando grupos de tiles (por exemplo, grupos de tiles de vídeo) e/ou tiles (por exemplo, tiles de vídeo) em adição ou alternativamente a fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de tiles I, P ou B e/ou tiles.
[0128] As modalidades do decodificador de vídeo 30 como mostrado na Figura 3 podem ser configuradas para particionar e/ou decodificar a imagem usando-se fatias (também chamadas de fatias de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias (tipicamente sem sobreposição), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs).
[0129] As modalidades do decodificador de vídeo 30 como mostrado na Figura 3 podem ser configuradas para particionar e/ou decodificar a imagem usando-se grupos de tiles (também chamados de grupos de tiles de vídeo) e/ou tiles (também chamados de tiles de vídeo), em que uma imagem pode ser particionada ou decodificada usando um ou mais grupos de tiles (tipicamente não sobrepostos), e cada grupo de tiles pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou um ou mais tiles, em que cada tile, por exemplo, pode ser de forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionados.
[0130] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem loop 320. Por exemplo, um decodificador 30 baseado em não transformada pode quantizar inversamente o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para certos blocos ou quadros. Em outra implementação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[0131] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de uma etapa atual pode ser processado e então enviado para a próxima etapa. Por exemplo, após filtragem de interpolação, derivação de vetor de movimento ou filtragem loop, uma operação adicional, tal como Clip ou deslocamento, pode ser realizada no resultado do processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem loop.
[0132] Deve-se notar que outras operações podem ser aplicadas aos vetores de movimento derivados do bloco atual (incluindo, mas não se limitando a, vetores de movimento de ponto de controle do modo afim, vetores de movimento de sub-bloco nos modos afim, planar, ATMVP, vetores de movimento temporal e assim por diante). Por exemplo, o valor do vetor de movimento é restringido a uma faixa predefinida de acordo com seu bit de representação. Se o bit de representação do vetor de movimento for bitDepth, a faixa é -2^(bitDepth1) ~ 2^(bitDepth-1)-1, em que “^” significa exponenciação. Por exemplo, se bitDepth for definido como igual a 16, a faixa é -32768 ~ 32767; se bitDepth for definido como igual a 18, a faixa é -131072~131071. Por exemplo, o valor do vetor de movimento derivado (por exemplo, os MVs de quatro sub-blocos 4x4 dentro de um bloco 8x8) é restringido de tal forma que a diferença max entre partes inteiras dos quatro MVs do subbloco 4x4 não seja superior a N pixels, como não mais de 1 pixel. Aqui fornece dois métodos para restringir o vetor de movimento de acordo com o bitDepth.
[0133] Método 1: remover o msb (bit mais significativo) de sobrefluxo por operações de fluxo
Figure img0001
em que mvx é um componente horizontal de um vetor de movimento de um bloco de imagem ou sub-bloco, mvy é um componente vertical de um vetor de movimento de um bloco de imagem ou sub-bloco, e ux e uy indicam um valor intermediário;
[0134] Por exemplo, se o valor de mvx for -32769, após aplicar as fórmulas (1) e (2), o valor resultante é 32767. No sistema de computador, os números decimais são armazenados como complemento de dois. O complemento de dois de -32769 é 1,0111,1111,1111,1111 (17 bits), então o MSB é descartado, então o complemento de dois resultante é 0111,1111,1111,1111 (o número decimal é 32767), que é o mesmo como a saída aplicando-se as fórmulas (1) e (2).
Figure img0002
[0135] As operações podem ser aplicadas durante a soma de mvp e mvd, conforme mostrado nas fórmulas (5) a (8).
[0136] Método 2: remover o MSB de sobrefluxo recortando-se o valor
Figure img0003
em que vx é um componente horizontal de um vetor de movimento de um bloco de imagem ou um sub-bloco, vy é um componente vertical de um vetor de movimento de um bloco de imagem ou um sub-bloco; x, y e z, respectivamente, correspondem a três valores de entrada do processo de clipping de MV, e a definição da função Clip3 é a seguinte:
Figure img0004
[0137] A Figura 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400 de acordo com uma modalidade da revelação. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades reveladas conforme descrito no presente documento. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador tal como o decodificador de vídeo 30 da Figura 1A ou um codificador tal como codificador de vídeo 20 da Figura 1A.
[0138] O dispositivo de codificação de vídeo 400 compreende portas de ingresso 410 (ou portas de entrada 410) e unidades receptoras (Rx) 420 para receber dados; um processador, unidade lógica ou unidade de processamento central (CPU) 430 para processar os dados; unidades transmissoras (Tx) 440 e portas de egresso 450 (ou portas de saída 450) para transmissão dos dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo 400 também pode compreender componentes óptico-elétrico (OE) e componentes elétrico-óptico (EO) acoplados às portas de ingresso 410, às unidades receptoras 420, às unidades transmissoras 440 e às portas de egresso 450 para egresso ou ingresso de sinais ópticos ou elétricos.
[0139] O processador 430 é implementado por hardware e software. O processador 430 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de multinúcleos), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de ingresso 410, unidades receptoras 420, unidades transmissoras 440, portas de egresso 450 e memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 470 implementa, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470 fornece, portanto, uma melhoria substancial na funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0140] A memória 460 pode compreender um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de sobrefluxo, para armazenar programas quando tais programas são selecionados para execução e para armazenar instruções e dados que são lidos durante a execução do programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma memória somente leitura (ROM), memória de acesso aleatório (RAM), memória endereçável de conteúdo ternária (TCAM) e/ou memória estática aleatória memória de acesso (SRAM).
[0141] A Figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou ambos o dispositivo de origem 12 e o dispositivo de destino 14 da Figura 1 de acordo com uma modalidade exemplar.
[0142] Um processador 502 no aparelho 500 pode ser uma unidade de processamento central. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo, ou vários dispositivos, capazes de manipular ou processar informações agora existentes ou desenvolvidas no futuro. Embora as implementações reveladas possam ser praticadas com um único processador como mostrado, por exemplo, o processador 502, vantagens em velocidade e eficiência podem ser alcançadas usando mais de um processador.
[0143] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo adequado de dispositivo de armazenamento pode ser usado como memória 504. A memória 504 pode incluir código e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir adicionalmente um sistema operacional 508 e programas de aplicativo 510, os programas de aplicativo 510 incluindo pelo menos um programa que permite ao processador 502 realizar os métodos descritos aqui. Por exemplo, os programas de aplicativos 510 podem incluir aplicativos de 1 a N, que incluem adicionalmente um aplicativo de codificação de vídeo que realiza os métodos descritos aqui.
[0144] O aparelho 500 também pode incluir um ou mais dispositivos de saída, como um display 518. O display 518 pode ser, em um exemplo, um display sensível ao toque que combina um display com um elemento sensível ao toque que é operável para detectar entradas de toque. O display 518 pode ser acoplado ao processador 502 por meio do barramento 512.
[0145] Embora representado aqui como um único barramento, o barramento 512 do aparelho 500 pode ser composto de múltiplos barramentos. Além disso, o armazenamento secundário 514 pode ser acoplado diretamente aos outros componentes do aparelho 500 ou pode ser acessado através de uma rede e pode compreender uma única unidade integrada, como um cartão de memória ou múltiplas unidades, como múltiplos cartões de memória. O aparelho 500 pode assim ser implementado em uma ampla variedade de configurações.
Conjuntos de Parâmetros
[0146] Os conjuntos de parâmetros em codecs do estado da técnica são fundamentalmente semelhantes e compartilham os mesmos objetivos básicos de projeto - a saber, eficiência de taxa de bits, resiliência a erros e fornecimento de interfaces de camada de sistemas. Existe uma hierarquia de conjuntos de parâmetros em HEVC (H.265), incluindo o Conjunto de Parâmetros de Vídeo (VPS), Conjunto de Parâmetros de Sequência (SPS) e Conjunto de Parâmetros de Imagem (PPS) que são semelhantes aos seus equivalentes em AVC e VVC. Cada fatia faz referência a um único PPS, SPS e VPS ativo para acessar as informações usadas para decodificar a fatia. O PPS contém informações que se aplicam a todos as fatias em uma imagem e, portanto, todas as fatias em uma imagem devem se referir ao mesmo PPS. As fatias em imagens diferentes também são permitidas a se referirem ao mesmo PPS. Da mesma forma, o SPS contém informações que se aplicam a todas as imagens na mesma sequência de vídeo codificada.
[0147] Embora o PPS possa diferir para imagens separadas, é comum que muitas ou todas as imagens em uma sequência de vídeo codificada se refiram ao mesmo PPS. O reuso de conjuntos de parâmetros é eficiente na taxa de bits porque evita a necessidade de enviar informações compartilhadas múltiplas vezes. Também é robusto contra perdas porque permite que o conteúdo de conjunto de parâmetros seja portado por algum enlace de comunicação externo mais confiável ou é repetido com frequência dentro do fluxo de bits para garantir que não seja perdido.
[0148] Na HEVC, para identificar para uma determinada fatia o conjunto de parâmetros ativo em cada nível da hierarquia de tipo de conjunto de parâmetros, cada cabeçalho de fatia contém um identificador PPS que faz referência a um PPS específico. Dentro do PPS há um identificador que faz referência a um SPS particular. Por sua vez, dentro do SPS há um identificador que faz referência a um VPS particular
[0149] Um conjunto de parâmetros é ativado quando a fatia codificada atual a ser decodificada faz referência a esse conjunto de parâmetros. Todos os conjuntos de parâmetros ativos devem estar disponíveis para o decodificador quando forem referenciados pela primeira vez. Os conjuntos de parâmetros podem ser enviados dentro de banda ou fora de banda e podem ser enviados repetidamente.
[0150] Os conjuntos de parâmetros podem ser recebidos em qualquer ordem
[0151] Esses recursos de conjunto de parâmetros fornecem resiliência a erro aprimorada, superando algumas perdas de rede de conjuntos de parâmetros. Além disso, o uso de conjuntos de parâmetros permite que uma fatia individual seja decodificada mesmo se outra fatia na mesma imagem sofrer perda de rede, em comparação com se um cabeçalho de imagem contendo as mesmas informações estivesse presente em um subconjunto de fatias de uma imagem I.
O Conjunto de Parâmetros de Imagem (PPS)
[0152] O PPS contém parâmetros que podem mudar para imagens diferentes dentro da mesma sequência de vídeo codificada. No entanto, múltiplas imagens podem se referir ao mesmo PPS, mesmo aquelas com diferentes tipos de codificação de fatia (I, P e B). Incluir esses parâmetros dentro de conjuntos de parâmetros de imagem em vez de dentro do cabeçalho de fatia pode melhorar a eficiência de taxa de bits e fornecer resiliência a erros quando o PPS é transmitido de forma mais confiável.
[0153] O PPS contém um identificador PPS, bem como um índice para um SPS de referência. Os parâmetros restantes descrevem as ferramentas de codificação usadas nas fatias que se referem ao PPS. As ferramentas de codificação podem ser habilitadas ou desabilitadas, incluindo tiles, predição ponderada, ocultação de dados de sinal, predição de vetor de movimento temporal etc. Os parâmetros da ferramenta de codificação sinalizados no PPS incluem o número de índices de referência, parâmetro de quantização (QP) inicial e deslocamentos de QP de croma. Os parâmetros da ferramenta de codificação também podem ser sinalizados em um PPS, por exemplo, controles de filtro de desblocagem, configurações de tiles e dados de lista de escalonamento. Um exemplo de PPS está representado nas Figuras 6 e 7, de acordo com o documento Versatile Video Coding (Draft 6) de Equipe Conjunta de Especialistas em Vídeo (JVET) do ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11 (disponível em http:// phenix.it-sudparis.eu/jvet/, documento nº: Document: JVET-O2001-vE).
[0154] Na Figura 7 está representada uma secção do PPS. Nesta figura, o elemento de sintaxe constant_slice_header_params_enabled_flag (constant_slice_header_params_enabled_flag) indica se existem parâmetros constantes no PPS. Quando o valor de constant_slice_header_params_enabled_flag for igual a 1, elementos de sintaxe adicionais tais como pps_temporal_mvp_enabled_idc (730) são incluídos no PPS. O pps_temporal_mvp_enabled_idc é um elemento de sintaxe que pode estar presente em um PPS e controla a aplicação de predição de vetor de movimento temporal e indica o seguinte:
[0155] Se o valor do elemento de sintaxe for 1, então a predição de MV temporal é desabilitada nas fatias que se referem ao referido PPS.
[0156] Se o valor do elemento de sintaxe for 2, a predição de MV temporal é habilitada em fatias que se referem ao referido PPS.
[0157] Se o valor do elemento de sintaxe for 0, então um segundo elemento de sintaxe será incluído no cabeçalho de fatia para controlar a aplicação de predição de MV temporal da fatia. De acordo com o estado da técnica (JVET-O2001-vE), pps_temporal_mvp_enabled_idc igual a 0 especifica que o elemento de sintaxe slice_temporal_mvp_enabled_flag está presente no cabeçalho de fatia de fatias com slice_type não igual a I de fatias referentes ao PPS. pps_temporal_mvp_enabled_idc igual a 1 ou 2 especifica que slice_temporal_mvp_enabled_flag não está presente no cabeçalho de fatia de fatias referentes ao PPS. pps_temporal_mvp_enabled_idc igual a 3 é reservado para uso futuro pelo ITU-T | ISO/IEC.
[0158] Na Figura 7, outro exemplo é representado que é dep_quant_enabled_flag (720). pps_dep_quant_enabled_idc igual a 0 especifica que o elemento de sintaxe dep_quant_enabled_flag está presente no cabeçalho de fatia de fatias referentes ao PPS. pps_dep_quant_enabled_idc igual a 1 ou 2 especifica que o elemento de sintaxe dep_quant_enabled_flag não está presente no cabeçalho de fatia de fatias referentes ao PPS. pps_dep_quant_enabled_idc igual a 3 é reservado para uso futuro pelo ITU-T | ISO/IEC. Quando o dep_quant_enabled_flag controlar a aplicação da quantização dependente da fatia, um valor zero corresponde à desabilitação da quantização dependente e um valor 1 corresponde à habilitação da quantização dependente. Quando pps_dep_quant_enabled_idc não for igual a zero, dep_quant_enabled_flag não é incluída no cabeçalho de fatia, em vez disso, seu valor é inferido a ser igual a pps_dep_quant_enabled_idc – 1.
[0159] Os elementos de sintaxe que são incluídos no PPS quando constant_slice_header_params_enabled_flag é true são mostrados na Figura 7. Os elementos de sintaxe especificam o padrão que é incluído no PPS quando constant_slice_header_params_enabled_flag é true tem a seguinte propriedade comum:
[0160] Cada elemento de sintaxe no PPS tem um elemento de sintaxe correspondente no cabeçalho de fatia. Exemplo, pps_dep_quant_enabled_idc é o elemento de sintaxe no PPS, enquanto dep_quant_enabled_flag é o elemento de sintaxe correspondente no cabeçalho de fatia.
[0161] Se o elemento de sintaxe no PPS tiver um valor igual a zero, então a contraparte do cabeçalho de fatia está presente (está incluída em) no cabeçalho de fatia. Caso contrário, o elemento de sintaxe de cabeçalho de fatia está ausente no cabeçalho de fatia.
[0162] Se o elemento de sintaxe no PPS tiver um valor diferente de zero, então o valor do elemento de sintaxe de cabeçalho de fatia correspondente será inferido de acordo com o valor do elemento de sintaxe no PPS. Por exemplo, se o valor de pps_dep_quant_enabled_idc for igual a 1, o valor de dep_quant_enabled_idc será inferido a ser pps_dep_quant_enabled_idc – 1 = 0.
[0163] Em VVC e HEVC, as partições de uma mesma imagem de vídeo (fatias, tiles, subimagens, bricks etc) devem se referir ao mesmo conjunto de parâmetros de imagem. É o requisito do padrão de codificação, uma vez que um PPS pode incluir parâmetros que se aplicam à totalidade de uma imagem I. Por exemplo, os elementos de sintaxe que estão incluídos no colchete (610) descrevem como uma imagem é particionada em múltiplas partições de tile da seguinte forma:
• tile_cols_width_minus1 especifica a largura de cada tile em unidade de CTBs quando uma imagem é dividida uniformemente em tiles
• tile_rows_height_minus1 especifica a altura de cada tile em unidade de CTBs quando uma imagem é dividida uniformemente em tiles.
• num_tile_columns_minus1 especifica o número de colunas de tile a lado em uma imagem
• num_tile_rows_minus1 especifica o número de linhas de tile em uma imagem
[0164] Uma imagem que se refere a um PPS é dividida em múltiplas partições de tile que são especificadas de acordo com os elementos de sintaxe acima. Se duas fatias de uma mesma imagem se referirem a 2 PPS diferentes, isso pode causar uma situação conflitante, pois cada PPS pode indicar diferentes tipos de particionamento de tile da imagem. Portanto, é proibido que 2 fatias (ou em geral 2 partições de uma imagem) se refiram a 2 PPSs diferentes.
[0165] Na VVC vários mecanismos de particionamento de imagem são definidos, eles são chamados de fatias, tiles, bricks e subimagens. No presente pedido, uma partição de imagem é um termo geral para se referir a qualquer fatia, tiles, bricks ou sub-imagens. Uma partição de imagem geralmente se refere a uma parte do quadro que é codificada independentemente das outras partes da mesma imagem.
Conjunto de Parâmetros de Adaptação
[0166] Nos codecs de vídeo do estado da técnica, o fluxo de bits consiste em uma sequência de unidades de dados chamadas unidades de camada de abstração de rede (NAL). Algumas unidades NAL contêm conjuntos de parâmetros que portam informações de alto nível sobre toda a sequência de vídeo codificada ou um subconjunto de imagens dentro dela. Outras unidades NAL portam amostras codificadas na forma de fatias que pertencem a um dentre os vários tipos de imagem. O conjunto de parâmetros de adaptação (APS) é um conjunto de parâmetros que é usado para encapsular os dados de controle de filtro ALF (por exemplo, coeficientes de filtro).
[0167] A Figura 8 exemplifica um conjunto de parâmetros de adaptação de acordo com o documento Versatile Video Coding (Draft 6) da Equipe Conjunta de Especialistas em Vídeo (JVET) do ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11 (disponível em http ://phenix.it-sudparis.eu/jvet/, documento nº: Documento: JVET-O2001-vE).
O Cabeçalho de Fatia
[0168] O cabeçalho de segmento de fatia contém um índice para um PPS de referência. O cabeçalho de segmento de fatia contém dados que identificam o endereço inicial da fatia. Alguns parâmetros são incluídos apenas no primeiro segmento de fatia de uma fatia, incluindo o tipo de fatia (I, P ou B), flag de emissão de imagem, etc. A presença de alguns parâmetros da ferramenta de codificação estão presentes no cabeçalho de fatia se as ferramentas forem habilitadas no SPS ou PPS, incluindo a habilitação de SAO separadamente para luma e croma, habilitação de operação de filtro de desblocagem de fatias, e um valor de parâmetro de quantização (QP) de fatia inicial. Os parâmetros de filtro de desblocagem podem estar presentes no cabeçalho de segmento de fatia ou no PPS.
Fatia Codificada
[0169] Cada fatia codificada tipicamente consiste em um cabeçalho de fatia seguido por dados de fatia. O cabeçalho da fatia porta informações de controle para a fatia e os dados da fatia portam as amostras codificadas. As Figura 9 e 11 exemplificam um cabeçalho de fatia de acordo com o documento JVET-O2001-vE. Além disso, a Figura 10a exemplifica a estrutura de sintaxe de unidade de árvore de codificação que faz parte dos dados de fatia.
[0170] Cada fatia é independente de outras fatias no sentido de que as informações portadas na fatia são codificadas sem qualquer dependência de dados de outras fatias dentro da mesma imagem.
Cabeçalho de Imagem
[0171] O cabeçalho de imagem (PH) é uma estrutura de sintaxe que contém elementos de sintaxe que se aplicam a todas as fatias de uma imagem codificada. A Figura10b exemplifica um cabeçalho de imagem de acordo com o documento JVET-P1006 (http://phenix.itsudparis.eu/jvet/doc_end_user/documents/16_Geneva/wg11/JVET-P1006- v2.zip ). Por exemplo, pic_temporal_mvp_enabled_flag especifica se os preditores de vetor de movimento temporal podem ser usados para predição inter para todas as fatias associadas ao cabeçalho de imagem. Se pic_temporal_mvp_enabled_flag for igual a 0, os elementos de sintaxe das fatias associadas ao cabeçalho de imagem devem ser restringidos de modo que nenhum preditor de vetor de movimento temporal seja usado na decodificação das fatias. Caso contrário (pic_temporal_mvp_enabled_flag é igual a 1), os preditores de vetor de movimento temporal podem ser usados na decodificação das fatias associadas ao cabeçalho de imagem.
[0172] O cabeçalho de imagem é designado para todos os tipos de imagem, isto é, imagem I, imagem P e imagem B. Uma imagem I contém apenas blocos preditos de modo intra, enquanto uma imagem P ou B contém blocos preditos de modo inter. A diferença entre as imagens P e B é que uma imagem B pode conter um bloco predito de modo inter com predição bidirecional, enquanto nas imagens P apenas predição unidirecional é permitida. Observe que nas imagens P ou B, também pode haver blocos preditos de modo intra.
[0173] No cabeçalho de imagem, existem alguns elementos de sintaxe que são aplicáveis apenas para predição inter, isto é, apenas para imagem P e B. Esses elementos não são necessários para as imagens I.
[0174] As modalidades desta invenção propõem a introdução de uma flag indicando se uma imagem atual é uma imagem I ou não. Quando a imagem atual for uma imagem I, todos os elementos de sintaxe designados para predição inter não são sinalizados no cabeçalho de imagem, mas são inferidos a um valor padrão
[0175] Em um exemplo, a flag proposta é nomeada como ph_all_intra_flag. O uso dessa flag é ilustrado a seguir.
Figure img0005
Figure img0006
Figure img0007
[0176] partition_constraints_override_flag igual a 1 especifica que os parâmetros de restrição de partição estão presentes no cabeçalho de imagem. partition_constraints_override_flag igual a 0 especifica que os parâmetros de restrição de partição não estão presentes no cabeçalho de imagem. Quando não estiver presente, o valor de partition_constraints_override_flag é inferido a ser igual a 0.
[0177] pic_log2_diff_min_qt_min_cb_intra_slice_luma especifica a diferença entre o logaritmo de base 2 do tamanho mínimo em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma CTU e o logaritmo de base 2 do tamanho mínimo de bloco de codificação em amostras de luma para CUs de luma nas fatias com slice_type igual a 2 (I) associado ao cabeçalho de imagem. O valor de pic_log2_diff_min_qt_min_cb_intra_slice_luma deve estar na faixa de 0 a CtbLog2SizeY − MinCbLog2SizeY, inclusive. Quando não estiver presente, o valor de pic_log2_diff_min_qt_min_cb_luma é inferido a ser igual a sps_log2_diff_min_qt_min_cb_intra_slice_luma.
[0178] pic_log2_diff_min_qt_min_cb_inter_slice especifica a diferença entre o logaritmo de base 2 do tamanho mínimo em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma CTU e o logaritmo de base 2 do tamanho mínimo do bloco de codificação de luma em amostras de luma para CUs de luma nas fatias com slice_type igual a 0 (B) ou 1 (P) associado ao cabeçalho de imagem. O valor de pic_log2_diff_min_qt_min_cb_inter_slice deve estar na faixa de 0 a CtbLog2SizeY − MinCbLog2SizeY, inclusive. Quando não estiver presente, o valor de pic_log2_diff_min_qt_min_cb_luma é inferido a ser igual a sps_log2_diff_min_qt_min_cb_inter_slice.
[0179] pic_max_mtt_hierarchy_depth_inter_slice especifica a profundidade máxima de hierarquia para unidades de codificação resultantes de divisão de árvore de múltiplos tipos de uma folha de quadtree em fatias com slice_type igual a 0 (B) ou 1 (P) associado ao cabeçalho de imagem. O valor de pic_max_mtt_hierarchy_depth_inter_slice deve estar na faixa de 0 a CtbLog2SizeY − MinCbLog2SizeY, inclusive. Quando não estiver presente, o valor de pic_max_mtt_hierarchy_depth_inter_slice é inferido a ser igual a sps_max_mtt_hierarchy_depth_inter_slice.
[0180] pic_max_mtt_hierarchy_depth_intra_slice_luma especifica a profundidade de hierarquia máxima para unidades de codificação resultantes de divisão de árvore de múltiplos tipos de uma folha de quadtree em fatias com slice_type igual a 2 (I) associado ao cabeçalho de imagem. O valor de pic_max_mtt_hierarchy_depth_intra_slice_luma deve estar na faixa de 0 a CtbLog2SizeY − MinCbLog2SizeY, inclusive. Quando não estiver presente, o valor de pic_max_mtt_hierarchy_depth_intra_slice_luma é inferido a ser igual a sps_max_mtt_hierarchy_depth_intra_slice_luma.
[0181] pic_log2_diff_max_bt_min_qt_intra_slice_luma especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de luma que pode ser dividido usando uma divisão binária e o tamanho mínimo (largura ou altura) em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma CTU em fatias com slice_type igual a 2 (I) associado ao cabeçalho de imagem. O valor de pic_log2_diff_max_bt_min_qt_intra_slice_luma deve estar na faixa de 0 a CtbLog2SizeY −MinQtLog2SizeIntraY, inclusive. Quando não estiver presente, o valor de pic_log2_diff_max_bt_min_qt_intra_slice_luma é inferido a ser igual a sps_log2_diff_max_bt_min_qt_intra_slice_luma.
[0182] pic_log2_diff_max_tt_min_qt_intra_slice_luma especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de luma que pode ser dividido usando uma divisão ternária e o tamanho mínimo (largura ou altura) em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma CTU em fatias com slice_type igual a 2 (I) associado ao cabeçalho de imagem. O valor de pic_log2_diff_max_tt_min_qt_intra_slice_luma deve estar na faixa de 0 a CtbLog2SizeY −MinQtLog2SizeIntraY, inclusive. Quando não estiver presente, o valor de pic_log2_diff_max_tt_min_qt_intra_slice_luma é inferido a ser igual a sps_log2_diff_max_tt_min_qt_intra_slice_luma.
[0183] pic_log2_diff_max_bt_min_qt_inter_slice especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de luma que pode ser dividido usando uma divisão binária e o tamanho mínimo (largura ou altura) em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma CTU nos slices com slice_type igual a 0 (B) ou 1 (P) associado ao cabeçalho de imagem. O valor de pic_log2_diff_max_bt_min_qt_inter_slice deve estar na faixa de 0 a CtbLog2SizeY − MinQtLog2SizeInterY, inclusive. Quando não estiver presente, o valor de pic_log2_diff_max_bt_min_qt_inter_slice é inferido a ser igual a sps_log2_diff_max_bt_min_qt_inter_slice.
[0184] pic_log2_diff_max_tt_min_qt_inter_slice especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de luma que pode ser dividido usando uma divisão ternária e o tamanho mínimo (largura ou altura) em amostras de luma de um blodo de folha de luma resultante de divisão de quadtree de uma CTU em fatias com slice_type igual a 0 (B) ou 1 (P) associado ao cabeçalho de imagem. O valor de pic_log2_diff_max_tt_min_qt_inter_slice deve estar na faixa de 0 a CtbLog2SizeY − MinQtLog2SizeInterY, inclusive. Quando não estiver presente, o valor de pic_log2_diff_max_tt_min_qt_inter_slice é inferido a ser igual a sps_log2_diff_max_tt_min_qt_inter_slice.
[0185] pic_log2_diff_min_qt_min_cb_intra_slice_chroma especifica a diferença entre o logaritmo de base 2 do tamanho mínimo em amostras de luma de um bloco de folha de croma resultante de divisão de quadtree de uma CTU de croma com treeType igual a DUAL_TREE_CHROMA e o logaritmo de base 2 do tamanho mínimo de bloco de codificação em amostras de luma para CUs de croma com treeType igual a DUAL_TREE_CHROMA em fatias com slice_type igual a 2 (I) associado ao cabeçalho de imagem. O valor de pic_log2_diff_min_qt_min_cb_intra_slice_chroma deve estar na faixa de 0 a CtbLog2SizeY − MinCbLog2SizeY, inclusive. Quando não estiver presente, o valor de pic_log2_diff_min_qt_min_cb_intra_slice_chroma é inferido a ser igual a sps_log2_diff_min_tt_min_qt_intra_slice_chroma
[0186] pic_max_mtt_hierarchy_depth_intra_slice_chroma especifica a profundidade de hierarquia máxima para unidades de codificação de croma resultantes de divisão de árvore de múltiplos tipos de uma folha de quadtree de croma com treeType igual a DUAL_TREE_CHROMA em fatias com slice_type igual a 2 (I) associado ao cabeçalho de imagem. O valor de pic_max_mtt_hierarchy_depth_intra_slice_chroma deve estar na faixa de 0 a CtbLog2SizeY − MinCbLog2SizeY, inclusive. Quando não estiver presente, o valor de pic_max_mtt_hierarchy_depth_intra_slice_chroma é inferido a ser igual a sps_max_mtt_hierarchy_depth_intra_slice_chroma.
[0187] pic_log2_diff_max_bt_min_qt_intra_slice_chroma especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de croma que pode ser dividido usando uma divisão binária e o tamanho mínimo (largura ou altura) em amostras de luma de um bloco de folha de croma resultante de divisão de quadtree de uma CTU de croma com treeType igual a DUAL_TREE_CHROMA em fatias com slice_type igual a 2 (I) associado ao cabeçalho de imagem. O valor de pic_log2_diff_max_bt_min_qt_intra_slice_chroma deve estar na faixa de 0 a CtbLog2SizeY − MinQtLog2SizeIntraC, inclusive. Quando não estiver presente, o valor de pic_log2_diff_max_bt_min_qt_intra_slice_chroma é inferido a ser igual a sps_log2_diff_max_bt_min_qt_intra_slice_chroma.
[0188] pic_log2_diff_max_tt_min_qt_intra_slice_chroma especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de croma que pode ser dividido usando uma divisão ternária e o tamanho mínimo (largura ou altura) em amostras de luma de um bloco de folha de croma resultante de divisão de quadtree de uma CTU de croma com treeType igual a DUAL_TREE_CHROMA em fatias com slice_type igual a 2 (I) associado ao cabeçalho de imagem. O valor de pic_log2_diff_max_tt_min_qt_intra_slice_chroma deve estar na faixa de 0 a CtbLog2SizeY − MinQtLog2SizeIntraC, inclusive. Quando não estiver presente, o valor de pic_log2_diff_max_tt_min_qt_intra_slice_chroma é inferido a ser igual a sps_log2_diff_max_tt_min_qt_intra_slice_chroma
[0189] pic_cu_qp_delta_subdiv_intra_slice especifica o valor de cbSubdiv máximo das unidades de codificação em fatia intra que transmitem cu_qp_delta_abs e cu_qp_delta_sign_flag. O valor de pic_cu_qp_delta_subdiv_intra_slice deve estar na faixa de 0 a 2*(CtbLog2SizeY −MinQtLog2SizeIntraY+ pic_max_mtt_hierarchy_depth_intra_slice_luma), inclusive.
[0190] Quando não estiver presente, o valor de pic_cu_qp_delta_subdiv_intra_slice é inferido a ser igual a 0.
[0191] pic_cu_qp_delta_subdiv_inter_slice especifica o valor de cbSubdiv máximo das unidades de codificação que em fatia inter transmitem cu_qp_delta_abs e cu_qp_delta_sign_flag. O valor de pic_cu_qp_delta_subdiv_inter_slice deve estar na faixa de 0 a 2*(CtbLog2SizeY − MinQtLog2SizeInterY + pic_max_mtt_hierarchy_depth_inter_slice), inclusive.
[0192] Quando não estiver presente, o valor de pic_cu_qp_delta_subdiv_inter_slice é inferido a ser igual a 0.
[0193] pic_cu_chroma_qp_offset_subdiv_intra_slice especifica o valor de cbSubdiv máximo das unidades de codificação em fatia intra que transmitem cu_chroma_qp_offset_flag. O valor de pic_cu_chroma_qp_offset_subdiv_intra_slice deve estar na faixa de 0 a 2*(CtbLog2SizeY −MinQtLog2SizeIntraY+ pic_max_mtt_hierarchy_depth_intra_slice_luma), inclusive.
[0194] Quando não estiver presente, o valor de pic_cu_chroma_qp_offset_subdiv_intra_slice é inferido a ser igual a 0.
[0195] pic_cu_chroma_qp_offset_subdiv_inter_slice especifica o valor de cbSubdiv máximo das unidades de codificação em fatia inter que transmitem cu_chroma_qp_offset_flag. O valor de pic_cu_chroma_qp_offset_subdiv_inter_slice deve estar no intervalo de 0 a 2 * (CtbLog2SizeY − MinQtLog2SizeInterY + pic_max_mtt_hierarchy_depth_inter_slice), inclusive.
[0196] Quando não estiver presente, o valor de pic_cu_chroma_qp_offset_subdiv_inter_slice é inferido a ser igual a 0.
[0197] pic_temporal_mvp_enabled_flag especifica se os preditores de vetor de movimento temporal podem ser usados para predição inter para fatias associadas ao cabeçalho de imagem. Se pic_temporal_mvp_enabled_flag for igual a 0, os elementos de sintaxe das fatias associadas ao cabeçalho de imagem devem ser restringidos de modo que nenhum preditor de vetor de movimento temporal seja usado na decodificação das fatias. Caso contrário (pic_temporal_mvp_enabled_flag é igual a 1), os preditores de vetor de movimento temporal podem ser usados na decodificação das fatias associadas ao cabeçalho de imagem.
[0198] Quando pic_temporal_mvp_enabled_flag não estiver presente, o seguinte se aplica:
[0199] - Se sps_temporal_mvp_enabled_flag for igual a 0, o valor de pic_temporal_mvp_enabled_flag é inferido a ser igual a 0.
[0200] - Caso contrário (sps_temporal_mvp_enabled_flag é igual a 1), o valor de pic_temporal_mvp_enabled_flag é inferido igual a pps_temporal_mvp_enabled_idc − 1.
[0201] mvd_l1_zero_flag igual a 1 indica que a estrutura de sintaxe mvd_coding(x0, y0, 1) não é analisada e MvdL1[ x0 ] [ y0 ] [ compIdx ] e MvdL1[ x0 ] [ y0 ] [ cpIdx ] [ compIdx ] são definidos como 0 para compIdx = 0..1 e cpIdx = 0..2. mvd_l1_zero_flag igual a 0 indica que a estrutura de sintaxe mvd_coding(x0, y0, 1) é analisada. Quando não estiver presente, o valor de mvd_l1_zero_flag é inferido igual a pps_mvd_l1_zero_idc − 1.
[0202] pic_six_minus_max_num_merge_cand especifica o número máximo de candidatos de predição de vetor de movimento (MVP) de fusão suportados nas fatias associadas ao cabeçalho de imagem subtraído de 6. O número máximo de candidatos a MVP de fusão, MaxNumMergeCand, é derivado da seguinte forma: MaxNumMergeCand = 6 − picsix_minus_max_num_merge_cand (7- 111)
[0203] O valor de MaxNumMergeCand deve estar na faixa de 1 a 6, inclusive. Quando não estiver presente, o valor de pic_six_minus_max_num_merge_cand é inferido igual a pps_six_minus_max_num_merge_cand_plus1 − 1.
[0204] pic_five_minus_max_num_subblock_merge_cand especifica o número máximo de candidatos de predição de vetor de movimento (MVP) de fusão baseados em subbloco suportados na fatia subtraída de 5.
[0205] Quando pic_five_minus_max_num_subblock_merge_cand não estiver presente, o seguinte se aplica:
[0206] - Se sps_affine_enabled_flag for igual a 0, o valor de pic_five_minus_max_num_subblock_merge_cand será inferido igual a 5 − (sps_sbtmvp_enabled_flag && pic_temporal_mvp_enabled_flag).
[0207] - Caso contrário (sps_affine_enabled_flag é igual a 1), o valor de pic_five_minus_max_num_subblock_merge_cand é inferido igual a pps_five_minus_max_num_subblock_merge_cand_plus1 − 1.
[0208] O número máximo de candidatos a MVP de fusão baseados em subblocos, MaxNumSubblockMergeCand, é derivado da seguinte forma: MaxNumSubblockMergeCand = 5 − pic_five_minus_max_num_subblock_merge_cand (7- 112)
[0209] O valor de MaxNumSubblockMergeCand deve estar na faixa de 0 a 5, inclusive.
[0210] pic_fpel_mmvd_enabled_flag igual a 1 especifica que o modo de fusão com diferença de vetor de movimento usa precisão de amostra inteira nas fatias associadas ao cabeçalho de imagem. pic_fpel_mmvd_enabled_flag igual a 0 especifica que o modo de fusão com diferença de vetor de movimento pode usar precisão de amostra fracionária nas fatias associadas ao cabeçalho de imagem. Quando não estiver presente, o valor de pic_fpel_mmvd_enabled_flag é inferido a ser 0.
[0211] pic_disable_bdof_dmvr_flag igual a 1 especifica que nenhuma das predições inter de fluxo óptico bidirecional e refinamento de vetor de movimento do decodificador com base na bipredição está habilitada nas fatias associadas ao cabeçalho de imagem. pic_disable_bdof_dmvr_flag igual a 0 especifica que a predição inter de fluxo óptico bidirecional ou refinamento de vetor de movimento de decodificador com base em bipredição inter pode ou não ser habilitado nas fatias associadas ao cabeçalho de imagem. Quando não estiver presente, o valor de pic_disable_bdof_dmvr_flag é inferido a ser 0.
[0212] pic_max_num_merge_cand_minus_max_num_triangle_c and especifica o número máximo de candidatos ao modo de fusão triangular suportados nas fatias associadas ao cabeçalho de imagem subtraído de MaxNumMergeCand.
[0213] Quando pic_max_num_merge_cand_minus_max_num_triangle_cand não está presente e sps_triangle_enabled_flag é igual a 1 e MaxNumMergeCand maior que ou igual a 2, pic_max_num_merge_cand_minus_max_num_triangle_cand é inferido a ser igual a pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 − 1.
[0214] O número máximo de candidatos ao modo de fusão triangular, MaxNumTriangleMergeCand, é derivado da seguinte forma: MaxNumTriangleMergeCand = MaxNumMergeCand − pic_max_num_merge_cand_minus_max_num_triangle_cand (7- 113)
[0215] Quando pic_max_num_merge_cand_minus_max_num_triangle_cand estiver presente, o valor de MaxNumTriangleMergeCand deve estar no intervalo de 2 a MaxNumMergeCand, inclusive.
[0216] Quando pic_max_num_merge_cand_minus_max_num_triangle_cand não estiver presente e (sps_triangle_enabled_flag for igual a 0 ou MaxNumMergeCand for menor que 2), MaxNumTriangleMergeCand será definido como 0.
[0217] Quando MaxNumTriangleMergeCand é igual a 0, o modo de fusão de triângulo não é permitido para as fatias associadas ao cabeçalho de imagem.
[0218] pic_six_minus_max_num_ibc_merge_cand especifica o número máximo de candidatos de predição de vetor de bloco (BVP) de fusão IBC suportados nas fatias associadas ao cabeçalho de imagem subtraído de 6. O número máximo de candidatos BVP de fusão de IBC, MaxNumIbcMergeCand, é derivado da seguinte forma: MaxNumIbcMergeCand = 6 − pic_six_minus_max_num_ibc_merge_cand (7- 114)
[0219] O valor de MaxNumIbcMergeCand deve estar na faixa de 1 a 6, inclusive.
[0220] Deve-se notar que a flag ph_all_intra_flag pode ser sinalizada em qualquer lugar antes do primeiro lugar, controlando o elemento de sintaxe relacionado à predição inter, isto é, pic_log2_diff_min_qt_min_cb_inter_slice. Deve-se notar que um ou mais locais em que ph_all_intra_flag pode ser removida (isto é, controlar apenas um subconjunto de elementos de sintaxe das modalidades da presente invenção). Como outro exemplo, o uso dessa flag é ilustrado como a seguir
Figure img0008
Figure img0009
[0221] Em particular, são fornecidos os seguintes métodos e modalidades implementados por um dispositivo de codificação. O dispositivo de codificação pode ser o codificador de vídeo 20 da Figura 1A ou o codificador 20 da Figura 2.
[0222] De acordo com uma modalidade 1200 (ver Figura 12), o dispositivo determina se uma imagem atual é uma imagem I na etapa 1201.
[0223] Uma vez que a imagem I contém apenas um bloco predito de modo intra, não é necessário sinalizar um elemento de sintaxe designado para predição inter em um cabeçalho de imagem de um fluxo de bits. Assim, quando a imagem atual for uma imagem I, um elemento de sintaxe designado para predição inter não é sinalizado no cabeçalho de imagem. Na etapa 1203, o dispositivo envia o fluxo de bits para um dispositivo de decodificação, em que o cabeçalho de imagem do fluxo de bits inclui uma flag que é usada para indicar se a imagem atual é uma imagem I. Nesta situação, a flag indica que a imagem atual é imagem I. O elemento de sintaxe designado para predição inter não é sinalizado no cabeçalho de imagem. Quando a imagem atual é uma imagem I, o elemento de sintaxe designado para predição inter é inferido a um valor padrão
[0224] Quando a imagem atual não é uma imagem I, isto é, a imagem atual é uma imagem P ou B, o dispositivo obtém um elemento de sintaxe designado para predição inter na etapa 1205. Como descrito acima, o elemento de sintaxe designado para predição inter inclui um ou mais dentre os seguintes elementos: pic_log2_diff_min_qt_min_cb_inter_slice, pic_max_mtt_hierarchy_depth_inter_slice, pic_log2_diff_max_bt_min_qt_inter_slice, pic_log2_diff_max_tt_min_qt_inter_slice, pic_cu_qp_delta_subdiv_inter_slice, pic_cu_chroma_qp_offset_subdiv_inter_slice, pic_temporal_mvp_enabled_flag, mvd_l1_zero_flag, pic_fpel_mmvd_enabled_flag, ou pic_disable_bdof_dmvr_flag.
[0225] Na etapa 1207, o dispositivo envia o fluxo de bits para um dispositivo de decodificação. O cabeçalho de imagem do fluxo de bits inclui não apenas uma flag que é usada para indicar se a imagem atual é uma imagem I, mas também o elemento de sintaxe designado para predição inter. Nesta situação, a flag indica que a imagem atual não é imagem I.
[0226] Por exemplo, a flag é nomeada como ph_all_intra_flag. A flag ph_all_intra_flag é sinalizada de forma elegível em qualquer lugar antes do primeiro lugar que controla o elemento de sintaxe designado para predição inter. O uso dessa flag é ilustrado conforme descrito acima.
[0227] Os seguintes métodos e modalidades implementados por um dispositivo de decodificação são fornecidos. O dispositivo de decodificação pode ser o decodificador de vídeo 30 da Figura 1A ou o decodificador 30 da Figura 3. De acordo com a modalidade 1300 (ver Figura 13), o dispositivo recebe um fluxo de bits e analisa o fluxo de bits para obter uma flag de um cabeçalho de imagem do fluxo de bits na etapa 1301, em que a flag indica se uma imagem atual é uma imagem I.
[0228] Por exemplo, a flag é nomeada como ph_all_intra_flag. A flag ph_all_intra_flag é sinalizada de forma elegível em qualquer lugar antes do primeiro lugar que controla o elemento de sintaxe designado para predição inter. O uso dessa flag é ilustrado conforme descrito acima.
[0229] O dispositivo determina se a imagem atual é uma imagem I com base na flag na etapa 1303.
[0230] Quando a imagem atual é I imagem, um elemento de sintaxe designado para predição inter não é sinalizado no cabeçalho de imagem, o elemento de sintaxe designado para predição inter é inferido a um valor padrão na etapa 1305.
[0231] Quando a imagem atual não é uma imagem I, isto é, a imagem atual é uma imagem P ou B, o dispositivo obtém um elemento de sintaxe designado para predição inter a partir do cabeçalho de imagem do fluxo de bits na etapa 1307. Como descrito acima, o elemento de sintaxe designado para predição inter inclui um ou mais dentre os seguintes elementos: pic_log2_diff_min_qt_min_cb_inter_slice, pic_max_mtt_hierarchy_depth_inter_slice, pic_log2_diff_max_bt_min_qt_inter_slice, pic_log2_diff_max_tt_min_qt_inter_slice, pic_cu_qp_delta_subdiv_inter_slice, pic_cu_chroma_qp_offset_subdiv_inter_slice, pic_temporal_mvp_enabled_flag, mvd_l1_zero_flag, pic_fpel_mmvd_enabled_flag, ou pic_disable_bdof_dmvr_flag.
[0232] A Figura 14 ilustra modalidades de um dispositivo 1400. O dispositivo 1400 pode ser o codificador de vídeo 20 da Figura 1A ou o codificador 20 da Figura 2. O dispositivo 1400 pode ser usado para implementar a modalidade 1200 e as outras modalidades descritas acima.
[0233] O dispositivo 1400 de acordo com a presente revelação inclui uma unidade de determinação 1401, uma unidade de obtenção 1402 e uma unidade de sinalização 1403. A unidade de determinação 1401, configurada para determinar se uma imagem atual é uma imagem I.
[0234] A unidade de obtenção 1402, configurada para obter um elemento de sintaxe designado para predição inter quando a imagem atual não é uma imagem I, isto é, uma imagem P ou B. Como descrito acima, o elemento de sintaxe designado para predição inter inclui um ou mais dentre os seguintes elementos: pic_log2_diff_min_qt_min_cb_inter_slice, pic_max_mtt_hierarchy_depth_inter_slice, pic_log2_diff_max_bt_min_qt_inter_slice, pic_log2_diff_max_tt_min_qt_inter_slice, pic_cu_qp_delta_subdiv_inter_slice, pic_cu_chroma_qp_offset_subdiv_inter_slice, pic_temporal_mvp_enabled_flag, mvd_l1_zero_flag, pic_fpel_mmvd_enabled_flag, ou pic_disable_bdof_dmvr_flag.
[0235] Quando a imagem atual é uma imagem I, o elemento de sintaxe designado para predição inter é inferido a um valor padrão.
[0236] A unidade de sinalização 1403, configurada para enviar um fluxo de bits para um dispositivo de decodificação, em que o cabeçalho de imagem do fluxo de bits inclui uma flag que é usada para indicar se a imagem atual é uma imagem I.
[0237] O cabeçalho de imagem do fluxo de bits inclui adicionalmente um elemento de sintaxe designado para predição inter quando a imagem atual não é uma imagem I. Uma vez que a imagem I contém apenas um bloco predito de modo intra, não é necessário sinalizar um elemento de sintaxe designado para predição inter em um cabeçalho de imagem de um fluxo de bits.
[0238] Por exemplo, a flag é nomeada como ph_all_intra_flag. A flag ph_all_intra_flag é sinalizada de forma elegível em qualquer lugar antes do primeiro lugar que controla o elemento de sintaxe designado para predição inter. O uso dessa flag é ilustrado conforme descrito acima.
[0239] A Figura 15 ilustra modalidades de um dispositivo 1500. O dispositivo 1500 pode ser decodificador de vídeo 30 da Figura 1A ou decodificador 30 da Figura 3. O dispositivo 1500 pode ser usado para implementar a modalidade 1300 e as outras modalidades descritas acima.
[0240] O dispositivo 1500 inclui uma unidade de obtenção 1501 e uma unidade de determinação 1502. A unidade de obtenção 1501, configurada para analisar um fluxo de bits para obter uma flag de um cabeçalho de imagem do fluxo de bits, em que a flag indica se uma imagem atual é uma imagem I. Por exemplo, a flag é nomeada como ph_all_intra_flag.
[0241] A unidade de determinação 1502, configurada para determinar se a imagem atual é uma imagem I com base na flag.
[0242] A unidade de obtenção 1501, configurada adicionalmente para obter um elemento de sintaxe designado para predição inter a partir do cabeçalho de imagem, quando a flag indica que a imagem atual não é uma imagem I, isto é, uma imagem P ou B. Quando a imagem atual é uma imagem I, um elemento de sintaxe designado para predição inter não é sinalizado no cabeçalho de imagem, o elemento de sintaxe designado para predição inter é inferido a um valor padrão.
[0243] Além disso, as seguintes modalidades são fornecidas no presente documento.
[0244] Modalidade 1. Método de codificação implementado por um dispositivo de decodificação que compreende: analisar um fluxo de bits; e obter uma flag a partir de um cabeçalho de imagem do fluxo de bits, em que a flag indica se uma imagem atual é uma imagem I.
[0245] Modalidade 2. O método da modalidade 1, em que quando a imagem atual for uma imagem I, o elemento de sintaxe designado para predição inter é inferido a um valor padrão.
[0246] Modalidade 3. O método da modalidade 1 ou 2, em que a flag é portada na sintaxe PBSP de cabeçalho de imagem.
[0247] Modalidade 4. O método de qualquer uma das modalidades 1 a 3, em que a flag é nomeada como ph_all_intra_flag.
[0248] Modalidade 5. O método da modalidade 4, em que o uso da flag é conforme a seguir:
Figure img0010
Figure img0011
[0249] Modalidade 6. O método da modalidade 4 ou 5, em que o uso da flag é conforme a seguir:
Figure img0012
[0250] Modalidade 7. O método de qualquer uma das modalidades 4 a 6, em que o uso da flag é conforme a seguir:
Figure img0013
[0251] Modalidade 8. O método de qualquer uma das modalidades 4 a 7, em que o uso da flag é conforme a seguir:
Figure img0014
Figure img0015
[0252] Modalidade 9. O método de qualquer uma das modalidades 1 a 8, em que a imagem I contém apenas o bloco predito de modo intra, enquanto uma imagem P ou B contém o bloco predito de modo inter.
[0253] Modalidade 10. Um método de codificação implementado por um dispositivo de codificação que compreende: sinalizar uma flag para um cabeçalho de imagem de um fluxo de bits, em que a flag indica se uma imagem atual é uma imagem I; e enviar o fluxo de bits.
[0254] Modalidade 11. O método da modalidade 10, em que quando a imagem atual for uma imagem I, todos os elementos de sintaxe designados para predição inter não são sinalizados no cabeçalho de imagem.
[0255] Modalidade 12. O método da modalidade 10 ou 11, em que quando a imagem atual for uma imagem I, o elemento de sintaxe designado para predição inter é inferido a um valor padrão.
[0256] Modalidade 13. O método de qualquer uma das modalidades 10 a 12, em que a flag é sinalizada na sintaxe PBSP de cabeçalho de imagem.
[0257] Modalidade 14. O método de qualquer uma das modalidades 10 a 13, em que a flag é nomeada como ph_all_intra_flag.
[0258] Modalidade 15. O método da modalidade 14, em que a flag ph_all_intra_flag é sinalizada de forma elegível em qualquer lugar antes do primeiro lugar que controla o elemento de sintaxe relacionado a predição inter.
[0259] Modalidade 16. O método da modalidade 14 ou 15, em que o uso da flag é conforme a seguir:
Figure img0016
Figure img0017
[0260] Modalidade 17. O método de qualquer uma das modalidades 14-16, em que o uso da flag é conforme a seguir:
Figure img0018
Figure img0019
[0261] Modalidade 18. O método de qualquer uma das modalidades 14 a 17, em que o uso da flag é conforme a seguir:
Figure img0020
[0262] Modalidade 19. O método de qualquer uma das modalidades 14 a 18, em que o uso da flag é conforme a seguir:
Figure img0021
Figure img0022
[0263] Conforme discutido acima, ao indicar se a imagem atual é uma imagem I no cabeçalho de imagem do fluxo de bits, o elemento de sintaxe designado para predição inter não é sinalizado no cabeçalho de imagem quando a imagem atual for uma imagem I. Assim, as modalidades podem simplificar a sinalização de cabeçalho de imagem para todas as imagens intra, isto é, imagem I. Correspondentemente, a sobrecarga de sinalização é reduzida.
[0264] O termo "obtenção" pode se referir a receber (por exemplo, explicitamente, como um respectivo parâmetro de outra entidade/dispositivo ou módulo dentro do mesmo dispositivo, por exemplo, para o decodificador analisando um fluxo de bits) e/ou derivar (por exemplo, que também pode ser referido como recebendo implicitamente, por exemplo, para o decodificador analisando outras informações/parâmetros de um fluxo de bits e derivando as respectivas informações ou parâmetro de tais outras informações/parâmetros).
[0265] A seguir está uma explicação das aplicações do método de codificação, bem como do método de decodificação, conforme mostrado nas modalidades acima mencionadas, e um sistema que os usa.
[0266] A Figura 16 é um diagrama de blocos que mostra um sistema de fornecimento de conteúdo 3100 para realizar o serviço de distribuição de conteúdo. Este sistema de fornecimento de conteúdo 3100 inclui dispositivo de captura 3102, dispositivo terminal 3106 e opcionalmente inclui display 3126. O dispositivo de captura 3102 se comunica com o dispositivo terminal 3106 pelo enlace de comunicação 3104. O enlace de comunicação pode incluir o canal de comunicação 13 descrito acima. O enlace de comunicação 3104 inclui, mas não se limita a WIFI, Ethernet, Cabo, sem fio (3G/4G/5G), USB ou qualquer tipo de combinação dos mesmos, ou similares.
[0267] O dispositivo de captura 3102 gera dados e pode codificar os dados pelo método de codificação como mostrado nas modalidades acima. Alternativamente, o dispositivo de captura 3102 pode distribuir os dados para um servidor de streaming (não mostrado nas Figuras), e o servidor codifica os dados e transmite por streaming os dados codificados para o dispositivo terminal 3106. O dispositivo de captura 3102 inclui, mas não se limita a, câmera, smartphone ou Pad, computador ou laptop, sistema de videoconferência, PDA, dispositivo montado em veículo ou uma combinação de qualquer um deles, ou similares. Por exemplo, o dispositivo de captura 3102 pode incluir o dispositivo de origem 12 conforme descrito acima. Quando os dados incluem vídeo, o codificador de vídeo 20 incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de vídeo. Quando os dados incluem áudio (isto é, voz), um codificador de áudio incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de áudio. Para alguns cenários práticos, o dispositivo de captura 3102 distribui os dados de áudio e vídeo codificados multiplexando-os juntos. Para outros cenários práticos, por exemplo no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. O dispositivo de captura 3102 distribui os dados de áudio codificados e os dados de vídeo codificados para o dispositivo terminal 3106 separadamente.
[0268] No sistema de fornecimento de conteúdo 3100, o dispositivo terminal 310 recebe e reproduz os dados codificados. O dispositivo terminal 3106 pode ser um dispositivo com capacidade de recebimento e recuperação de dados, tais como smartphone ou Pad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, set top box (STB) 3116, sistema de videoconferência 3118, sistema de videovigilância 3120, assistente digital pessoal (PDA) 3122, dispositivo montado em veículo 3124, ou uma combinação de qualquer um deles, ou similar capaz de decodificar os dados codificados acima mencionados. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14 como descrito acima. Quando os dados codificados incluem vídeo, o decodificador de vídeo 30 incluído no dispositivo terminal é priorizado para realizar a decodificação de vídeo. Quando os dados codificados incluem áudio, um decodificador de áudio incluído no dispositivo terminal é priorizado para realizar o processamento de decodificação de áudio.
[0269] Para um dispositivo terminal com seu display, por exemplo, smartphone ou Pad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, assistente digital pessoal (PDA) 3122 ou dispositivo montado em veículo 3124, o dispositivo terminal pode alimentar os dados decodificados para o seu display. Para um dispositivo terminal equipado sem display, por exemplo, STB 3116, sistema de videoconferência 3118 ou sistema de videovigilância 3120, um display externo 3126 é contatado para receber e mostrar os dados decodificados
[0270] Quando cada dispositivo neste sistema realiza codificação ou decodificação, o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem, conforme mostrado nas modalidades acima mencionadas, pode ser usado.
[0271] A Figura 17 é um diagrama que mostra uma estrutura de um exemplo do dispositivo terminal 3106. Após o dispositivo terminal 3106 receber fluxo do dispositivo de captura 3102, a unidade de procedimento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui, mas não se limita a Protocolo de Streaming em Tempo Real (RTSP), Protocolo de Trasferência de Hipertexto (HTTP), Protocolo de streaming ao vivo HTTP (HLS), MPEG-DASH, Protocolo de Transporte em Tempo Real (RTP), Protocolo de Mensagem em Tempo Real (RTMP)), ou qualquer tipo de combinação dos mesmos, ou semelhantes.
[0272] Após a unidade de procedimento de protocolo 3202 processar o fluxo, o arquivo de fluxo é gerado. O arquivo é enviado para uma unidade de demultiplexação 3204. A unidade de demultiplexação 3204 pode separar os dados multiplexados nos dados de áudio codificados e nos dados de vídeo codificados. Conforme descrito acima, para alguns cenários práticos, por exemplo no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. Nesta situação, os dados codificados são transmitidos para o decodificador de vídeo 3206 e o decodificador de áudio 3208 sem através da unidade de demultiplexação 3204
[0273] Através do processamento de demultiplexação, são gerados fluxo elementar (ES) de vídeo, ES de áudio e, opcionalmente, legendas. O decodificador de vídeo 3206, que inclui o decodificador de vídeo 30 conforme explicado nas modalidades acima mencionadas, decodifica o ES de vídeo pelo método de decodificação conforme mostrado nas modalidades acima mencionadas para gerar o quadro de vídeo e alimenta esses dados para a unidade síncrona 3212. O decodificador de áudio 3208 decodifica o ES de áudio para gerar o quadro de áudio e alimenta esses dados para a unidade síncrona 3212. Alternativamente, o quadro de vídeo pode ser armazenado em um buffer (não mostrado na Figura 21) antes de alimentá-lo para a unidade síncrona 3212. Da mesma forma, o quadro de áudio pode ser armazenado em um buffer (não mostrado na Figura 21) antes de alimentá-lo para a unidade síncrona 3212.
[0274] A unidade síncrona 3212 sincroniza o quadro de vídeo e o quadro de áudio e fornece o vídeo/áudio a um display de vídeo/áudio 3214. Por exemplo, a unidade síncrona 3212 sincroniza a apresentação das informações de vídeo e áudio. As informações podem codificar na sintaxe usando marcas temporais relacionadas à apresentação de dados de áudio e visuais codificados e marcas temporais relacionadas à entrega do próprio fluxo de dados.
[0275] Se a legenda estiver incluída no fluxo, o decodificador de legenda 3210 decodifica a legenda e a sincroniza com o quadro de vídeo e o quadro de áudio e fornece o vídeo/áudio/legenda para um display de vídeo/áudio/legenda 3216.
[0276] A presente invenção não está limitada ao sistema acima mencionado, e tanto o dispositivo de codificação de imagem quanto o dispositivo de decodificação de imagem nas modalidades acima mencionadas podem ser incorporados em outro sistema, por exemplo, um sistema de carro.
Operadores Matemáticos
[0277] Os operadores matemáticos usados neste aplicativo são semelhantes aos usados na linguagem de programação C. No entanto, os resultados das operações de divisão de inteiros e deslocamento aritmético são definidos com mais precisão, e operações adicionais são definidas, como exponenciação e divisão com valor real. Convenções de numeração e contagem geralmente começam em 0, por exemplo, “o primeiro” é equivalente ao 0-th, “o segundo” é equivalente ao 1-th, etc.
Operadores Aritméticos
[0278] Os seguintes operadores aritméticos são definidos da seguinte forma:
Figure img0023
Figure img0024
Operadores Lógicos
[0279] Os seguintes operadores lógicos são definidos da seguinte forma:
Figure img0025
Operadores Relacionais
[0280] Os seguintes operadores relacionais são definidos da seguinte forma:
Figure img0026
Figure img0027
[0281] Quando um operador relacional é aplicado a um elemento de sintaxe ou variável que recebeu o valor “na” (não aplicável), o valor “na” é tratado como um valor distinto para o elemento de sintaxe ou variável. Considera-se que o valor “na” não é igual a nenhum outro valor.
Operadores Bit-wise
[0282] Os seguintes operadores bit-wise são definidos conforme a seguir:
Figure img0028
Figure img0029
Operadores de Atribuição
[0283] Os seguintes operadores aritméticos são definidos conforme a seguir:
Figure img0030
Notação de Intervalo
[0284] A seguinte notação é usada para especificar um intervalo de valores:
x = y..z x assume valores inteiros começando de y a z, inclusive, com x, yez sendo números inteiros e z sendo maior que y.
Funções Matemáticas
[0285] As seguintes funções matemáticas são definidas:
Figure img0031
Figure img0032
Figure img0033
Ordem de Precedência de Operação
[0286] Quando uma ordem de precedência em uma expressão não é indicada explicitamente pelo uso de parênteses, as seguintes regras se aplicam:
– As operações de maior precedência são avaliadas antes de qualquer operação de menor precedência.
– As operações de mesma precedência são avaliadas sequencialmente da esquerda para a direita.
[0287] A tabela abaixo especifica a precedência das operações da mais alta para a mais baixa; uma posição mais alta na tabela indica uma precedência mais alta.
[0288] Para os operadores que também são usados na linguagem de programação C, a ordem de precedência usada neste Relatório Descritivo é a mesma usada na linguagem de programação C.
Figure img0034
Figure img0035
Descrição de texto de operações lógicas
[0289] No texto, uma declaração de operações lógicas como seria descrita matematicamente na seguinte forma:
Figure img0036
[0290] pode ser descrito da seguinte maneira:
... como a seguir/... o seguinte se aplica:
– Se condição 0, instrução 0
– Caso contrário, se condição 1, instrução 1
–...
– Caso contrário (observação informativa sobre a condição restante), instrução n
[0291] Cada “Se... Caso contrário, se... Caso contrário,...” instrução no texto é introduzida com “... como a seguir” ou “... o seguinte se aplica” imediatamente seguido por “Se... “. A última condição do “Se... Caso contrário, se... Caso contrário,...” é sempre um “Caso contrário,...”. Intercalado “Se... Caso contrário, se... Caso contrário,...” instruções podem ser identificadas combinando “... como a seguir ” ou “... o seguinte se aplica” com a terminação “Caso contrário,...”.
[0292] No texto, uma declaração de operações lógicas como seria descrita matematicamente na seguinte forma:
Figure img0037
[0293] pode ser descrito da seguinte maneira:
... como a seguir/... o seguinte se aplica:
– Se todas as condições a seguir forem verdadeiras, instrução 0:
– condição 0a
– condição 0b
– Caso contrário, se uma ou mais das seguintes condições forem verdadeiras, instrução 1:
– condição 1a
– condição 1b
–...
– Caso contrário, instrução n
[0294] No texto, uma declaração de operações lógicas como seria descrita matematicamente na seguinte forma:
matematicamente na seguinte forma:
if( condition 0 )
statement 0
if( condition 1 )
statement 1
[0295] pode ser descrito da seguinte maneira:
Quando condição 0, instrução 0
Quando condição 1, instrução 1
[0296] Embora as modalidades da invenção tenham sido descritas principalmente com base na codificação de vídeo, deve-se notar que as modalidades do sistema de codificação 10, codificador 20 e decodificador 30 (e correspondentemente o sistema 10) e as outras modalidades aqui descritas também podem ser configuradas para ainda processamento ou codificação de imagem, isto é, o processamento ou codificação de uma imagem individual independente de qualquer imagem anterior ou consecutiva como na codificação de vídeo. Em geral, apenas as unidades de predição inter 244 (codificador) e 344 (decodificador) podem não estar disponíveis caso a codificação de processamento de imagem esteja limitada a uma única imagem 17. Todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 20 e do decodificador de vídeo 30 podem igualmente ser usadas para processamento de imagem estática, por exemplo, cálculo residual 204/304, transformada 206, quantização 208, quantização inversa 210/310, transformada (inversa) 212/312, particionamento 262/362, predição intra 254/354 e/ou filtragem loop 220, 320 e codificação de entropia 270 e decodificação de entropia 304.
[0297] Modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções aqui descritas, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em uma mídia legível por computador ou transmitidas por mídia de comunicação como uma ou mais instruções ou códigos e executadas por uma unidade de processamento com base em hardware. As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, que correspondem a uma mídia tangível como mídias de armazenamento de dados ou mídias de comunicação que incluem qualquer mídia que facilite a transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta forma, as mídias legíveis por computador podem, em geral, corresponder a (1) mídias de armazenamento legíveis por computador tangíveis que são não transitórias ou (2) uma mídia de comunicação como um sinal ou onda portadora. As mídias de armazenamento de dados podem ser quaisquer mídias disponíveis que possam ser acessadas por um ou mais computadores ou um ou mais processadores para recuperar instruções, estruturas de dados e/ou código para a implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0298] A título de exemplo, e não de limitação, tais mídias de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outra mídia que possa ser usada para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessada por um computador. Além disso, qualquer conexão é denominada adequadamente como mídia legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um site da web, servidor ou outra fonte remota com o uso de um cabo coaxial, cabo de fibra óptica, par trançado, linha de inscrição digital (DSL) ou tecnologias sem fio como infravermelho, rádio e micro-ondas, então, o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou as tecnologias sem fio como infravermelho, rádio e micro-ondas estão incluídos na definição de mídia. Deve ser compreendido, entretanto, que as mídias de armazenamento legíveis por computador e as mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outras mídias transitórias, mas são, em vez disso, direcionadas para mídias de armazenamento não transitórias e tangíveis. Disco (disk) e disco (disc), conforme usado no presente documento, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, em que os discos reproduzem geralmente os dados de modo magnético, enquanto os discos reproduzem os dados de modo óptico com lasers. As combinações do supracitado também devem ser abrangidas pelo escopo das mídias legíveis por computador.
[0299] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para propósitos gerais, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs) ou outros circuitos lógicos equivalentes integrados ou distintos. Consequentemente, o termo "processador", conforme usado no presente documento pode se referir a qualquer uma das estruturas supracitadas ou qualquer outra estrutura adequada para a implementação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos dedicados de hardware e/ou software configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[0300] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um dispositivo portátil sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em combinação com software e/ou firmware adequados.

Claims (21)

  1. Método de codificação implementado por um dispositivo de codificação, CARACTERIZADO pelo fato de que compreende: determinar se todas as fatias codificadas de uma imagem atual são fatias com slice_type igual a I; e enviar um fluxo de bits para um dispositivo de decodificação, em que um cabeçalho de imagem do fluxo de bits inclui uma flag que indica se todas as fatias codificadas da imagem atual são fatias com slice_type igual a I; e em que quando uma dentre mais fatias codificadas na imagem atual for fatia com slice_type igual a 0(B) ou 1(P), um elemento de sintaxe designado para predição inter é sinalizado no cabeçalho de imagem.
  2. . Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que quando todas as fatias codificadas da imagem atual forem fatias com slice_type igual a I, o elemento de sintaxe designado para predição inter é inferido a um valor padrão.
  3. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui pic_log2_diff_min_qt_min_cb_inter_slice, em que pic_log2_diff_min_qt_min_cb_inter_slice especifica a diferença entre o logaritmo de base 2 do tamanho mínimo em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma unidade de árvore de codificação (CTU) e o logaritmo de base 2 do tamanho de bloco de codificação de luma mínimo em amostras de luma para unidades de codificação (CUs) de luma nas fatias com slice_type igual a 0 (B) ou 1 (P) na imagem atual; ou em que quando pic_log2_diff_min_qt_min_cb_inter_slice não estiver presente, o valor de pic_log2_diff_min_qt_min_cb_luma é inferido a ser igual a sps_log2_diff_min_qt_min_cb_inter_slice.
  4. Método, de acordo com a reivindicação 2 ou 3, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui adicionalmente pic_max_mtt_hierarchy_depth_inter_slice, pic_max_mtt_hierarchy_depth_inter_slice especifica a profundidade de hierarquia máxima para unidades de codificação resultantes de divisão de árvore de múltiplos tipos de uma folha de quadtree em fatias com slice_type igual a 0 (B) ou 1 (P) na imagem atual; ou em que quando pic_max_mtt_hierarchy_depth_inter_slice não estiver presente, o valor de pic_max_mtt_hierarchy_depth_inter_slice é inferido a ser igual a sps_max_mtt_hierarchy_depth_inter_slice.
  5. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que quando pic_max_mtt_hierarchy_depth_inter_slice não for igual a 0, o elemento de sintaxe designado para predição inter inclui adicionalmente pic_log2_diff_max_bt_min_qt_inter_slice, em que pic_log2_diff_max_bt_min_qt_inter_slice especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de luma que pode ser dividido usando uma divisão binária e o logaritmo de base 2 do tamanho mínimo (largura ou altura) em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma CTU nas fatias com slice_type igual a (0) B ou 1 (P) na imagem atual; ou em que quando pic_log2_diff_max_bt_min_qt_inter_slice não estiver presente, o valor de pic_log2_diff_max_bt_min_qt_inter_slice é inferido a ser igual a sps_log2_diff_max_bt_min_qt_inter_slice.
  6. Método, de acordo com a reivindicação 4 ou 5, CARACTERIZADO pelo fato de que quando pic_max_mtt_hierarchy_depth_inter_slice não for igual a 0, o elemento de sintaxe designado para predição inter inclui adicionalmente pic_log2_diff_max_tt_min_qt_inter_slice, em que pic_log2_diff_max_tt_min_qt_inter_slice especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de luma que pode ser dividido usando uma divisão ternária e o logaritmo de base 2 do tamanho mínimo (largura ou altura) em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma CTU em fatias com slice_type igual a 0 (B) ou 1 (P) na imagem atual; ou em que quando pic_log2_diff_max_tt_min_qt_inter_slice não estiver presente, o valor de pic_log2_diff_max_tt_min_qt_inter_slice é inferido a ser igual a sps_log2_diff_max_tt_min_qt_inter_slice.
  7. Método, de acordo com qualquer uma das reivindicações 1 a 6, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui adicionalmente pic_cu_qp_delta_subdiv_inter_slice, em que pic_cu_qp_delta_subdiv_inter_slice especifica o valor de cbSubdiv máximo de unidades de codificação que em fatia inter transmitem cu_qp_delta_abs e cu_qp_delta_sign_flag; ou em que quando pic_cu_qp_delta_subdiv_inter_slice não estiver presente, o valor de pic_cu_chroma_qp_offset_subdiv_inter_slice é inferido a ser igual a 0.
  8. Método, de acordo com qualquer uma das reivindicações 1 a 7, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui adicionalmente pic_cu_chroma_qp_offset_subdiv_inter_slice, em que pic_cu_chroma_qp_offset_subdiv_inter_slice especifica o valor de cbSubdiv máximo de unidades de codificação em fatia inter que transmitem cu_chroma_qp_offset_flag; ou em que quando pic_cu_chroma_qp_offset_subdiv_inter_slice não estiver presente, o valor de pic_cu_chroma_qp_offset_subdiv_inter_slice é inferido a ser igual a 0.
  9. Método, de acordo com qualquer uma das reivindicações 1 a 8, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui adicionalmente pic_temporal_mvp_enabled_flag, em que pic_temporal_mvp_enabled_flag especifica se preditores de vetor de movimento temporal podem ser usados para predição inter para fatias na imagem atual; ou quando pic_temporal_mvp_enabled_flag não estiver presente, o valor de pic_temporal_mvp_enabled_flag é inferido a ser igual a 0.
  10. Codificador, CARACTERIZADO pelo fato de que compreende circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9.
  11. Codificador, CARACTERIZADO pelo fato de que compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando programação para execução pelo um ou mais processadores para fazer com que o um ou mais processadores realizem o método conforme definido em qualquer uma das reivindicações 1 a 9.
  12. Dispositivo de codificação (1400), CARACTERIZADO pelo fato de que compreende: uma unidade de determinação (1401), configurada para determinar se todas as fatias de uma imagem atual são fatias com slice_type igual a I; uma unidade de obtenção (1402), configurada para obter um elemento de sintaxe designado para predição inter quando a imagem atual não for imagem I (imagem P ou B); e uma unidade de sinalização (1403), configurada para enviar um fluxo de bits, em que o cabeçalho de imagem do fluxo de bits inclui uma flag indicando se todas as fatias codificadas da imagem atual são fatias com slice_type igual a I, e o cabeçalho de imagem do fluxo de bits inclui adicionalmente elemento de sintaxe designado para predição inter quando uma dentre mais fatias codificadas na imagem atual for fatia com slice_type igual a 0(B) ou 1(P).
  13. Dispositivo, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que quando todas as fatias codificadas da imagem atual forem fatias com slice_type igual a I, o elemento de sintaxe designado para predição inter é inferido a um valor padrão.
  14. Dispositivo, de acordo com a reivindicação 12 ou 13, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui pic_log2_diff_min_qt_min_cb_inter_slice, em que pic_log2_diff_min_qt_min_cb_inter_slice especifica a diferença entre o logaritmo de base 2 do tamanho mínimo em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma unidade de árvore de codificação (CTU) e o logaritmo de base 2 do tamanho do bloco de codificação de luma mínimo em amostras de luma para unidades de codificação (CUs) de luma nas fatias com slice_type igual a 0 (B) ou 1 (P) na imagem atual; ou em que quando pic_log2_diff_min_qt_min_cb_inter_slice não estiver presente, o valor de pic_log2_diff_min_qt_min_cb_luma é inferido a ser igual a sps_log2_diff_min_qt_min_cb_inter_slice.
  15. Dispositivo, de acordo com a reivindicação 13 ou 14, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui adicionalmente pic_max_mtt_hierarchy_depth_inter_slice, em que pic_max_mtt_hierarchy_depth_inter_slice especifica a profundidade de hierarquia máxima para unidades de codificação resultantes de divisão de árvore de múltiplos tipos de uma folha de quadtree em fatias com slice_type igual a 0 (B) ou 1 (P) na imagem atual; ou em que quando pic_max_mtt_hierarchy_depth_inter_slice não estiver presente, o valor de pic_max_mtt_hierarchy_depth_inter_slice é inferido a ser igual a sps_max_mtt_hierarchy_depth_inter_slice.
  16. Dispositivo, de acordo com a reivindicação 15, CARACTERIZADO pelo fato de que quando pic_max_mtt_hierarchy_depth_inter_slice não for igual a 0, o elemento de sintaxe designado para predição inter inclui adicionalmente pic_log2_diff_max_bt_min_qt_inter_slice, em que pic_log2_diff_max_bt_min_qt_inter_slice especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de luma que pode ser dividido usando uma divisão binária e o logaritmo de base 2 do tamanho mínimo (largura ou altura) em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma CTU nas fatias com slice_type igual a 0 (B) ou 1 (P) na imagem atual; ou em que quando pic_log2_diff_max_bt_min_qt_inter_slice não estiver presente, o valor de pic_log2_diff_max_bt_min_qt_inter_slice é inferido a ser igual a sps_log2_diff_max_bt_min_qt_inter_slice.
  17. Dispositivo, de acordo com a reivindicação 15 ou 16, CARACTERIZADO pelo fato de que quando pic_max_mtt_hierarchy_depth_inter_slice não for igual a 0, o elemento de sintaxe designado para predição inter inclui adicionalmente pic_log2_diff_max_tt_min_qt_inter_slice, em que pic_log2_diff_max_tt_min_qt_inter_slice especifica a diferença entre o logaritmo de base 2 do tamanho máximo (largura ou altura) em amostras de luma de um bloco de codificação de luma que pode ser dividido usando uma divisão ternária e o logaritmo de base 2 do tamanho mínimo (largura ou altura) em amostras de luma de um bloco de folha de luma resultante de divisão de quadtree de uma CTU em fatias com slice_type igual a 0 (B) ou 1 (P) na imagem atual; ou em que quando pic_log2_diff_max_tt_min_qt_inter_slice não estiver presente, o valor de pic_log2_diff_max_tt_min_qt_inter_slice é inferido a ser igual a sps_log2_diff_max_tt_min_qt_inter_slice.
  18. Dispositivo, de acordo com qualquer uma das reivindicações 12 a 17, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui adicionalmente pic_cu_qp_delta_subdiv_inter_slice, em que pic_cu_qp_delta_subdiv_inter_slice especifica o valor de cbSubdiv máximo de unidades de codificação que em fatia inter transmitem cu_qp_delta_abs e cu_qp_delta_sign_flag; ou em que quando pic_cu_qp_delta_subdiv_inter_slice não estiver presente, o valor de pic_cu_chroma_qp_offset_subdiv_inter_slice é inferido a ser igual a 0.
  19. Dispositivo, de acordo com qualquer uma das reivindicações 12 a 18, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui adicionalmente pic_cu_chroma_qp_offset_subdiv_inter_slice, em que pic_cu_chroma_qp_offset_subdiv_inter_slice especifica o valor de cbSubdiv máximo de unidades de codificação em fatia inter que transmitem cu_chroma_qp_offset_flag; ou em que quando pic_cu_chroma_qp_offset_subdiv_inter_slice não estiver presente, o valor de pic_cu_chroma_qp_offset_subdiv_inter_slice é inferido a ser igual a 0.
  20. Dispositivo, de acordo com qualquer uma das reivindicações 12 a 19, CARACTERIZADO pelo fato de que o elemento de sintaxe designado para predição inter inclui adicionalmente pic_temporal_mvp_enabled_flag, em que pic_temporal_mvp_enabled_flag especifica se preditores de vetor de movimento temporal podem ser usados para predição inter para fatias na imagem atual; ou quando pic_temporal_mvp_enabled_flag não estiver presente, o valor de pic_temporal_mvp_enabled_flag é inferido a ser igual a 0.
  21. Fluxo de bits codificado, CARACTERIZADO pelo fato de que o fluxo de bits codificado compreende fluxo de bits obtido usando-se o método de codificação conforme definido em qualquer uma das reivindicações 1 a 9.
BR122022009445-7A 2019-10-10 2020-10-10 Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem BR122022009445A2 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962913730P 2019-10-10 2019-10-10
US62/913,730 2019-10-10
BR112022006694-5 2020-10-10
PCT/CN2020/120110 WO2021068918A1 (en) 2019-10-10 2020-10-10 An encoder, a decoder and corresponding methods for simplifying signalling picture header

Publications (1)

Publication Number Publication Date
BR122022009445A2 true BR122022009445A2 (pt) 2022-08-09

Family

ID=75437739

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112022006694A BR112022006694A2 (pt) 2019-10-10 2020-10-10 Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem
BR122022009445-7A BR122022009445A2 (pt) 2019-10-10 2020-10-10 Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR112022006694A BR112022006694A2 (pt) 2019-10-10 2020-10-10 Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem

Country Status (10)

Country Link
US (1) US20220256196A1 (pt)
EP (1) EP4035396A4 (pt)
JP (2) JP7436646B2 (pt)
KR (1) KR20220070542A (pt)
CN (2) CN114503592A (pt)
AU (1) AU2020363130A1 (pt)
BR (2) BR112022006694A2 (pt)
CA (1) CA3157535A1 (pt)
MX (1) MX2022004380A (pt)
WO (1) WO2021068918A1 (pt)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021068954A1 (en) * 2019-10-12 2021-04-15 Beijing Bytedance Network Technology Co., Ltd. High level syntax for video coding tools
JP7346731B2 (ja) 2019-11-05 2023-09-19 エルジー エレクトロニクス インコーポレイティド 映像/ビデオコーディングのための映像情報処理方法及び装置
CN118200603A (zh) * 2019-11-05 2024-06-14 Lg 电子株式会社 图像/视频编译方法和装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000224545A (ja) * 1999-02-01 2000-08-11 Matsushita Electric Ind Co Ltd 動画像記録装置および動画像再生装置
US7738554B2 (en) * 2003-07-18 2010-06-15 Microsoft Corporation DC coefficient signaling at small quantization step sizes
JP4531058B2 (ja) * 2004-10-29 2010-08-25 シャープ株式会社 動画像復号装置
US8396134B2 (en) * 2006-07-21 2013-03-12 Vidyo, Inc. System and method for scalable video coding using telescopic mode flags
CN101217652B (zh) * 2007-12-26 2010-09-29 武汉大学 视频图像编解码过程中的图像信息记录和提取方法
PL3833022T3 (pl) * 2012-04-12 2022-05-30 Jvckenwood Corporation Konstrukcja listy kandydatów do scalania
JP5197864B2 (ja) * 2012-04-12 2013-05-15 株式会社東芝 画像復号化方法及び装置
CN104365100A (zh) * 2012-04-15 2015-02-18 三星电子株式会社 用于并行处理的视频编码方法和装置以及视频解码方法和装置
JP6352248B2 (ja) * 2013-04-04 2018-07-04 シャープ株式会社 画像復号装置、および画像符号化装置
KR101851479B1 (ko) * 2014-01-03 2018-04-23 노키아 테크놀로지스 오와이 파라미터 세트 코딩
GB2524476B (en) * 2014-03-14 2016-04-27 Canon Kk Method, device and computer program for optimizing transmission of motion vector related information when transmitting a video stream
US10834419B2 (en) * 2016-04-13 2020-11-10 Qualcomm Incorporated Conformance constraint for collocated reference index in video coding
CN117201775A (zh) * 2016-09-13 2023-12-08 韩国电子通信研究院 视频编码/解码方法和装置以及存储比特流的记录介质
CN109963155B (zh) * 2017-12-23 2023-06-06 华为技术有限公司 图像块的运动信息的预测方法、装置及编解码器
CN110121073B (zh) * 2018-02-06 2021-07-09 浙江大学 一种双向帧间预测方法及装置

Also Published As

Publication number Publication date
EP4035396A1 (en) 2022-08-03
EP4035396A4 (en) 2022-11-30
CN115209161A (zh) 2022-10-18
CN115209161B (zh) 2023-05-12
JP7436646B2 (ja) 2024-02-21
US20220256196A1 (en) 2022-08-11
WO2021068918A1 (en) 2021-04-15
CN114503592A (zh) 2022-05-13
CA3157535A1 (en) 2021-04-15
MX2022004380A (es) 2022-08-08
AU2020363130A1 (en) 2022-05-05
KR20220070542A (ko) 2022-05-31
JP2024055894A (ja) 2024-04-19
JP2022551313A (ja) 2022-12-08
BR112022006694A2 (pt) 2022-07-26

Similar Documents

Publication Publication Date Title
US20220021878A1 (en) Video encoder, a video decoder and corresponding methods with improved block partitioning
JP2022140481A (ja) ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法
BR112021004984A2 (pt) aparelho e método para quantização inversa
BR112020026818A2 (pt) codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio
WO2021170124A1 (en) An encoder, a decoder and corresponding methods of signaling and semantics in parameter sets
WO2021159962A1 (en) An encoder, a decoder and corresponding methods for subpicture signalling in sequence parameter set
BR112021003741A2 (pt) codificador, decodificador e métodos correspondentes usando uma codificação de paleta
BR112021003999A2 (pt) relação entre elementos de restrição de partição
US11729391B2 (en) Encoder, a decoder and corresponding methods simplifying signaling slice header syntax elements
BR122022009445A2 (pt) Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem
US20220377326A1 (en) Encoder, decoder and corresponding methods for adaptive loop filtering
BR112021010286A2 (pt) codificador, decodificador e métodos correspondentes de construção de lista de modos mais prováveis para blocos com predição de múltiplas hipóteses
US20230007270A1 (en) Decoder and corresponding methods to signal picture partitioning information for slices
BR112021009833A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes
WO2021141519A2 (en) Method and apparatus of high-level syntax for smoothing intra-prediction techniques
JP2022521980A (ja) イントラ予測のためのイントラモードコーディングを使用するエンコーダ、デコーダ、および対応する方法
WO2021008470A1 (en) An encoder, a decoder and corresponding methods
BR122023025769A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023025774A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023025787A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023021074A2 (pt) Método de desblocagem, dispositivo para uso em um codificador e/ou um decodificador de imagem, codificador, decodificador, e meio legível por computador não transitório

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]