BR112021007509A2 - lista de mesclagem separada para candidatos de mesclagem de sub-bloco e harmonização de técnicas intra-inter para codificação de vídeo - Google Patents

lista de mesclagem separada para candidatos de mesclagem de sub-bloco e harmonização de técnicas intra-inter para codificação de vídeo Download PDF

Info

Publication number
BR112021007509A2
BR112021007509A2 BR112021007509-7A BR112021007509A BR112021007509A2 BR 112021007509 A2 BR112021007509 A2 BR 112021007509A2 BR 112021007509 A BR112021007509 A BR 112021007509A BR 112021007509 A2 BR112021007509 A2 BR 112021007509A2
Authority
BR
Brazil
Prior art keywords
block
technique
control flag
video
merge
Prior art date
Application number
BR112021007509-7A
Other languages
English (en)
Inventor
Roman Igorevich CHERNYAK
Timofey Mikhailovich SOLOVYEV
Sergey Yurievich IKONIN
Alexander Alexandrovich KARABUTOV
Jianle Chen
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 BR112021007509A2 publication Critical patent/BR112021007509A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • 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
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/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

LISTA DE FUSÃO SEPARADA PARA CANDIDATOS DE FUSÃO DE SUBBLOCO E HARMONIZAÇÃO DE TÉCNICAS INTRA-INTER PARA CODIFICAÇÃO DE VÍDEO. A presente invenção refere-se a métodos e aparelhos para codificação de dados de vídeo em um fluxo de bits e para decodificação de dados de vídeo recebidos em um fluxo de bits. Uma segunda flag de controle indicando se usa ou não predição de múltiplas hipóteses para modo intra e inter é gerada e transmitida somente condicionalmente, após uma determinação de se a técnica de lista de mesclagem separada para candidatos de mesclagem de sub-bloco é ou não usada. Por outro lado, um decodificador é capaz de decidir sobre o uso de predição de múltiplas hipóteses para modo intra e inter e de técnica de lista de mesclagem separada para candidatos de mesclagem de sub-bloco, embora a segunda flag de controle seja transmitida somente condicionalmente.

Description

“LISTA DE FUSÃO SEPARADA PARA CANDIDATOS DE FUSÃO DE SUB- BLOCO E HARMONIZAÇÃO DE TÉCNICAS INTRA-INTER PARA CODIFICAÇÃO DE VÍDEO” CAMPO DA TÉCNICA
[0001] Modalidades do presente pedido (revelação) de modo geral se relacionam ao campo de processamento de imagem e mais particularmente à harmonização de dois métodos entre si. Mais especificamente, as modalidades propõem métodos de uso e sinalização conjuntos de uma lista de fusão separada para candidatos de fusão de sub-bloco e predição de múltiplas hipóteses para técnicas de modo intra e inter.
FUNDAMENTOS
[0002] Codificação de vídeo (codificação e decodificação de vídeo) é usada em uma ampla faixa de aplicativos de vídeo digital, por exemplo, broadcast digital, transmissão de vídeo pela internet e redes móveis, aplicativos para conversa em tempo real tais como chat por vídeo, videoconferência, discos DVD e Blu-ray, aquisição de conteúdo de vídeo e sistemas de edição e câmeras de aplicativos de segurança.
[0003] O montante de dados de vídeo necessários para representar mesmo um vídeo relativamente curto pode ser considerável, o que pode resultar em dificuldades quando os dados devem ser transmitidos por streaming ou comunicados de outra maneira através de uma rede de comunicações com capacidade de largura de banda limitada. Desse modo, dados de vídeo são de modo geral comprimidos antes de serem comunicados através das redes de telecomunicações atuais. O tamanho de um vídeo poderia também ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento porque recursos de memória podem ser limitados. Dispositivos de compressão de vídeo frequentemente usam software e/ou hardware na fonte para codificar os dados de vídeo antes da transmissão ou armazenamento, desse modo diminuindo 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 descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas sempre crescentes por qualidade de vídeo mais alta, técnicas de compressão e descompressão aperfeiçoadas que aperfeiçoam razão de compressão com pouco a nenhum sacrifício da qualidade de imagem são desejáveis.
SUMÁRIO
[0004] A presente revelação fornece aparelhos e métodos para codificação e decodificação de vídeo.
[0005] A presente invenção visa harmonizar uso e sinalização de predição de múltiplas hipóteses para modo intra e inter juntamente com listas de fusão separadas para candidatos de fusão de sub-bloco.
[0006] Os objetivos supracitados e outros objetivos são alcançados pela matéria das reivindicações independentes. Formas de implantação adicionais são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[0007] De acordo com um primeiro aspecto da invenção, um método de codificação de dados de vídeo em um fluxo de bits é fornecido. O método compreende usar uma primeira técnica e/ou uma segunda técnica. A primeira técnica compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco. A segunda técnica compreende predição de múltiplas hipóteses para modo intra e inter. O método compreende, para um bloco de codificação, transmitir um primeiro bloco de controle no fluxo de bits e, dependendo se a primeira técnica é usada para o bloco de codificação, transmitir ou não transmitir uma segunda flag no fluxo de bits. A primeira flag de controle indica se usa a primeira técnica. A segunda flag de controle indica se usa a segunda técnica.
[0008] De acordo com um segundo aspecto da invenção, um método de decodificar dados de vídeo recebidos no fluxo de bits é fornecido. O método compreende usar uma primeira técnica e/ou uma segunda técnica. A primeira técnica compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco. A segunda técnica compreende predição de múltiplas hipóteses para modo intra e inter. O método compreende, para um bloco de codificação, receber a primeira flag de controle a partir do fluxo de bits, em que a primeira flag de controle indica se usa a primeira técnica, e e, dependendo se a primeira técnica é usada para o bloco de codificação, receber uma segunda flag de controle a partir do fluxo de bits. A segunda flag de controle indica se usa a segunda técnica.
[0009] Consiste a abordagem particular da presente invenção em gerar e transmitir uma segunda flag de controle indicando se usa ou não predição de múltiplas hipóteses para modo intra e inter somente condicionalmente, mediante uma determinação de se técnica de lista de fusão separada para candidatos de fusão de sub-bloco é ou não usada. Por outro lado, o decodificador é capaz de decidir sobre o uso de predição de múltiplas hipóteses para modo intra e inter e técnica de lista de fusão separada para candidatos de fusão de sub-bloco embora a segunda flag de controle seja transmitida somente condicionalmente.
[0010] Em uma possível forma de implantação do método de acordo com o primeiro aspecto propriamente dito, a segunda flag de codificação é transmitida se e somente se a primeira técnica não for usada para o bloco de codificação.
[0011] Em uma possível forma de implantação do método de acordo com a implantação anterior ou o primeiro aspecto propriamente dito, a segunda flag de controle é transmitida se o bloco de codificação é citado em modo de fusão. Em uma possível forma de implantação do método de acordo com a implantação anterior do primeiro aspecto, a segunda flag de controle não é transmitida se o bloco de codificação não estiver codificado em modo de fusão. Em uma possível forma de implantação do método de acordo com uma implantação anterior do primeiro aspecto ou o primeiro aspecto propriamente dito, a segunda flag de controle é transmitida se o bloco de codificação estiver codificado em modo de salto. Em uma possível forma de implantação da implantação anterior do primeiro aspecto, a segunda flag de controle não é transmitida se o bloco de codificação não estiver codificado em modo de salto ou em modo de fusão.
[0012] Sendo assim, sinalizar de acordo com a abordagem particular da presente invenção é aplicável ou em modo de fusão, ou em modo de salto, ou em ambos os modos de fusão e de salto.
[0013] Em uma possível forma de implantação do método de acordo com o segundo aspecto propriamente dito, somente da primeira técnica não é usada, a segunda flag de controle é recebida.
[0014] Sendo assim, o decodificador pode inferir diretamente a partir da presença da segunda flag de controle no fluxo de bits recebido que a técnica de lista de fusão separada não é usada para um bloco de codificação atual. Desse modo, a avaliação da primeira flag de controle indicando se usa ou não a técnica de lista de fusão separada para candidatos de sub-bloco é somente necessária se a segunda flag de controle não está incluída no fluxo de bits recebido.
[0015] Em uma possível forma de implantação do método de acordo com a implantação anterior do segundo aspecto ou o segundo aspecto propriamente dito, a segunda flag de controle é recebida se o bloco de codificação estiver codificado em modo de fusão. Em uma possível forma de implantação do método da implantação anterior do segundo aspecto, a segunda flag de controle não é recebida se o bloco de codificação não estiver codificado em modo de fusão. Em uma possível forma de implantação do método de acordo com uma forma de implantação anterior do segundo aspecto do segundo aspecto propriamente dito, segunda flag de controle é recebida se o bloco de codificação estiver codificado em modo de salto. De acordo com uma possível forma de implantação do método de acordo com a forma de implantação anterior do segundo aspecto, a segunda flag de controle não é recebida se o bloco de codificação não estiver codificado em modo de salto.
[0016] Os métodos de codificação e de decodificação definidos nas reivindicações, na descrição e nas figuras podem, cada um deles, ser realizado por um aparelho de codificação e um aparelho de decodificação, respectivamente.
[0017] De acordo com um terceiro aspecto, a invenção se relaciona a um codificador compreendendo circuitos de processamento para realizar um método de acordo com o primeiro aspecto propriamente dito para qualquer de suas formas de implantação.
[0018] De acordo com um quarto aspecto, a invenção se relaciona a um decodificador compreendendo circuitos de processamento para realizar um método de acordo com o segundo aspecto conforme qualquer de suas formas de implantação.
[0019] De acordo com um quinto aspecto, a invenção se relaciona a um codificador. O codificador 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 pelos processadores. A programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com o primeiro aspecto propriamente dito ou qualquer de suas formas de implantação.
[0020] De acordo com um sexto aspecto, a invenção se relaciona a um decodificador. O decodificador 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 pelos processadores. A programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com o segundo aspecto conforme qualquer de suas formas de implantação.
[0021] De acordo com um sétimo aspecto, a invenção se relaciona a um codificador para codificação de vídeo de dados de vídeo em um fluxo de bits, o codificador compreendendo meios para realizar uma primeira técnica e/ou uma segunda técnica. A primeira técnica compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco. A segunda técnica compreende predição de múltiplas hipóteses para modo intra e inter. O codificador adicionalmente compreende meios, para um bloco de codificação, para transmitir um primeiro bloco de controle no fluxo de bits e meios para, dependendo se a primeira técnica é usada para o bloco de codificação, transmitir ou não transmitir uma segunda flag no fluxo de bits, A primeira flag de controle indica se usa a primeira técnica. A segunda flag de controle indica se usa a segunda técnica.
[0022] De acordo com um oitavo aspecto, a invenção se relaciona a um decodificador para decodificação de vídeo de dados de vídeo recebidos em um fluxo de bits. O decodificador compreende meios para realizar uma primeira técnica e/ou uma segunda técnica. A primeira técnica compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco. A segunda técnica compreende predição de múltiplas hipóteses para modo intra e inter. O decodificador adicionalmente compreende meios, para um bloco de codificação, para receber a primeira flag de controle a partir do fluxo de bits, em que a primeira flag de controle indica se usa a primeira técnica, e meios para, dependendo se a primeira técnica é usada para o bloco de codificação, receber uma segunda flag de controle a partir do fluxo de bits. A segunda flag de controle indica se usa a segunda técnica.
[0023] De acordo com um aspecto adicional, a invenção se relaciona a uma mídia legível por computador não transitória que porta um código de programa o qual, quando executado por um dispositivo de computador, faz o dispositivo de computador realizar um método de acordo com o primeiro ou o segundo aspecto.
[0024] Possíveis formas de implantação do codificador e decodificador por trás do sétimo e sexto aspectos correspondem às possíveis formas de implantação dos métodos de acordo com o primeiro e o segundo aspectos.
[0025] Um aparelho para codificar ou para decodificar um fluxo de vídeo pode incluir um processador e uma memória. A memória armazena instruções que fazem o processador realizar o método de codificação ou decodificação.
[0026] Para cada um dos métodos de codificação ou decodificação revelados no presente documento, uma mídia de armazenamento legível por computador é proposta, a mídia de armazenamento tendo instruções armazenadas na mesma que quando executadas fazem um ou mais processadores para codificar ou decodificar dados de vídeo. As instruções levam a um ou mais processadores a realizar o respectivo método de codificação ou decodificação.
[0027] Além disso, para cada um dos métodos de codificação ou decodificação revelados no presente documento, um produto de programa de computador é proposto. O produto de programa de computador compreende código de programa para realizar o respectivo método.
[0028] Detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outras particularidades, objetivos, e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
[0029] Além disso, a presente invenção adicionalmente fornece as modalidades a seguir.
[0030] Um fluxo de bits codificados de dados de vídeo, compreende, multiplicar elementos de sintaxe os quais incluem uma primeira flag de controle, e uma segunda flag sendo condicionalmente sinalizada com base na primeira flag de controle, a primeira flag de controle indica que se uma primeira técnica é usada, em que, a primeira técnica (S101) compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco; e a segunda flag de controle indica que se uma segunda técnica é usada, em que, a segunda técnica (S103)
compreende predição de múltiplas hipóteses para modo intra e inter.
[0031] Uma mídia de armazenamento de computação, armazenando um fluxo de bits decodificados por um dispositivo de decodificação de vídeo, o fluxo de bits compreende um número de blocos de codificação de uma imagem ou sinal de vídeo, e um número de elementos de sintaxe os quais incluem uma primeira flag de controle, e uma segunda flag sendo condicionalmente sinalizada com base na primeira flag de controle, a primeira flag de controle indica que se uma primeira técnica é usada, em que, a primeira técnica (S101) compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco; e a segunda flag de controle indica que se uma segunda técnica é usada, em que, a segunda técnica (S103) compreende predição de múltiplas hipóteses para modo intra e inter.
[0032] Uma mídia de armazenamento legível por computador não transitória armazenando informações de vídeo geradas usando-se qualquer um dentre o método de codificação da reivindicação 1 a 6 das reivindicações dependentes.
BREVE DESCRIÇÃO DOS DESENHOS
[0033] A seguir modalidades da invenção são descritas em maior detalhe com referência às figuras e desenhos anexos, nos quais:
[0034] A Figura 1A é um diagrama de blocos mostrando um exemplo de um sistema de codificação de vídeo configurado para implantar modalidades da invenção;
[0035] A Figura 1B é um diagrama de blocos mostrando um outro exemplo de um sistema de codificação de vídeo configurado para implantar modalidades da invenção;
[0036] A Figura 2 é um diagrama de blocos mostrando um exemplo de um codificador de vídeo configurado para implantar modalidades da invenção;
[0037] A Figura 3 é um diagrama de blocos mostrando um exemplo de estrutura de um decodificador de vídeo configurado para implantar modalidades da invenção;
[0038] A Figura 4 é um diagrama de blocos ilustrando um exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0039] A Figura 5 é um diagrama de blocos ilustrando um outro exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0040] A Figura 6 é um fluxograma ilustrando um método de codificação exemplificativo de acordo com modalidades da presente invenção; e
[0041] A Figura 7 é um fluxograma ilustrando um método de decodificação exemplificativo de acordo com modalidades da presente invenção.
[0042] A seguir referências numéricas idênticas se referem a particularidades idênticas ou pelo menos funcionalmente equivalentes caso não seja explicitamente especificado de outra maneira.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0043] Na seguinte descrição, referência é feita às figuras anexas, as quais formam parte da revelação, e que mostram, a título de ilustração, aspectos específicos de modalidades da invenção ou aspectos específicos nos quais modalidades da presente invenção podem ser usadas. É entendido que 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.
[0044] Por exemplo, é entendido que a revelação em conexão com um método descrito pode também valer 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 são descritas, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar a uma ou pluralidade de etapas de método (por exemplo, uma unidade realizando a uma ou pluralidade de etapas, ou uma pluralidade de unidades cada uma realizando uma ou mais da pluralidade de etapas), mesmo se tais uma ou mais unidades não são 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 da uma ou pluralidade de unidades, ou uma pluralidade de etapas cada uma realizando a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal uma ou pluralidade de etapas não são explicitamente descritas ou ilustradas nas figuras. Além disso, é entendido que as particularidades das várias modalidades e/ou aspectos exemplificativos descritos no presente documento podem ser combinadas entre si, a menos que especificamente observado de outra maneira.
[0045] Codificação de vídeo tipicamente se refere ao processamento de uma sequência de imagens, as quais formam o vídeo ou sequência de vídeo. Em vez do termo “imagem” o termo “quadro” ou “imagem” podem ser usados como sinônimos no campo de codificação de vídeo. Codificação de vídeo (ou codificação em geral) compreende duas partes codificação de vídeo e decodificação de vídeo. Codificação de vídeo é realizada no lado de fonte, tipicamente compreendendo processar (por exemplo, por compressão) as imagens de vídeo originais para reduzir o montante de dados exigido para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficientes). Decodificação de vídeo é realizada no lado de destino e tipicamente compreende o processamento inverso se comparado ao codificador para reconstruir as imagens de vídeo. Será entendido que modalidades referentes a “codificação” de imagens de vídeo (ou imagens em geral) se relacionam a “codificação” ou “decodificação” de imagens de vídeo ou respectivas sequências de vídeo. Uma combinação da parte de codificação e da parte de decodificação é também referida como CODEC (Codificação e Decodificação).
[0046] Em caso de codificação de vídeo sem perda, as imagens de vídeo originais podem ser reconstruídas, isto é, as imagens de vídeo reconstruídas têm a mesma qualidade das imagens de vídeo originais (assumindo-se nenhuma perda de transmissão ou perda de outros dados durante armazenamento ou transmissão). Em caso de codificação de vídeo com perda, compressão adicional, por exemplo, por quantização, é realizada, para reduzir o montante de dados representando 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 é inferior ou pior se comparada à qualidade das imagens de vídeo originais.
[0047] Diversos padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbridos com perda” (isto é, combinam predição espacial e temporal no domínio da amostra e codificação de transformada 2D para aplicar quantização no domínio da transformada). Cada imagem de uma sequência de vídeo é tipicamente particionada em um conjunto de blocos não sobrepostos e a codificação é tipicamente realizada a um nível de bloco. Em outras palavras, no codificador o vídeo é tipicamente processado, isto é, codificado, a 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, transformar o bloco residual e quantizar o bloco residual no domínio da transformada para reduzir o montante de dados a ser transmitido (compressão), enquanto que no decodificador o processamento inverso se 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 irão gerar predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para processar, isto é, codificar, os blocos subsequentes.
[0048] Nas modalidades a seguir 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.
[0049] A Figura 1A é um diagrama esquemático de blocos ilustrando um exemplo de sistema de codificação 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação curto 10) que pode utilizar técnicas desse presente pedido. O codificador de vídeo 20 (ou codificador curto 20) e o decodificador de vídeo 30 (ou decodificador curto 30) 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.
[0050] 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.
[0051] O dispositivo de origem 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.
[0052] A fonte de imagem 16 pode compreender ou ser qualquer espécie de dispositivo de captura de imagem, por exemplo, para capturar uma imagem do mundo real, e/ou qualquer espécie de um dispositivo gerador de imagem, por exemplo, um processador de computação gráfica para gerar uma imagem animada por computador, ou qualquer espécie 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 dos mesmos (por exemplo, uma imagem de realidade aumentada (AR)).A fonte de imagem pode ser qualquer espécie de memória ou armazenamento armazenando qualquer das imagens antes mencionadas.
[0053] Para distinguir da unidade de pré-processamento 18 e do 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 313.
[0054] O pré-processador 18 é configurado para receber os dados (brutos) de imagem 17 e para realizar 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 corte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor, ou supressão de ruído. Pode ser entendido que a unidade de pré-processamento 18 pode ser componente opcional.
[0055] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (detalhes adicionais serão descritos abaixo, por exemplo, com base na Figura 2).
[0056] 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 versão adicionalmente processada dos mesmos) pelo canal de comunicação 13 para um outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[0057] 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.
[0058] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer versão adicionalmente processada dos mesmos), por exemplo, diretamente a partir do dispositivo de origem 12 ou a partir 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 para o decodificador 30.
[0059] 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 por meio de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer combinação das mesmas, ou qualquer tipo de rede privada e pública, ou qualquer tipo de combinação das mesmas.
[0060] 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 ou processamento de transmissão para transmissão por um enlace de comunicação ou rede de comunicação.
[0061] 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 e/ou desempacotamento de transmissão correspondente para obter os dados de imagem codificados 21.
[0062] A interface de comunicação 22 e a interface de comunicação 28 podem ser ambas configuradas como interfaces de comunicação unidirecionais como indicado pela seta para o canal de comunicação 13 na Figura 1A apontando do dispositivo de origem 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecionais, e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para estabelecer uma conexão, para acusar 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.
[0063] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (detalhes adicionais serão descritos abaixo, por exemplo, com base na Figura 3 ou na Figura 5).
[0064] O pós-processador 32 de dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também chamados dados de imagem reconstruída), 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, corte, ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibir, por exemplo, por dispositivo de exibição 34.
[0065] 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 visor para representar a imagem reconstruída, por exemplo, um visor ou monitor integrado ou externo. Os visores podem, por exemplo, compreender visores de cristal líquido (LCD), visores do tipo diodos emissores de luz orgânicos (OLED), visores de plasma, projetores, visores micro LED, cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer outro tipo de visor.
[0066] Embora a Figura 1A retrate o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, modalidades de dispositivos podem também compreender ambos 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 implantados usando o mesmo hardware e/ou software ou por hardware e/ou software separados ou qualquer combinação dos mesmos.
[0067] Como será evidente para a pessoa versada com base na descrição, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou do dispositivo de destino 14 como mostrado na Figura 1A podem variar dependendo do dispositivo e do aplicativo efetivos.
[0068] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou tanto o codificador 20 quanto o decodificador 30 podem ser implantados usando circuitos de processamento como mostrado na Figura 1B, tais como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programável por campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou quaisquer combinações dos mesmos. O codificador 20 pode ser implantado usando circuitos de processamento 46 para incorporar os vários módulos conforme discutido com respeito ao codificador 20 da Figura 2 e/ou qualquer outro sistema ou subsistema de codificador descrito no presente documento. O decodificador 30 pode ser implantado usando circuitos de processamento 46 para incorporar os vários módulos conforme discutido com respeito ao decodificador 30 da Figura 3 e/ou qualquer outro sistema ou subsistema decodificador descrito no presente documento. O circuitos de processamento pode ser configurado para realizar as várias operações conforme discutido adiante. Como mostrado na Figura 5, se as técnicas são implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma 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 dessa revelação. Qualquer um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser integrado como parte de um codificador/decodificador (CODEC) combinados em a único dispositivo, por exemplo, como mostrado na Figura 1B.
[0069] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla faixa de dispositivos, incluindo qualquer tipo de dispositivos que cabem na mão ou estacionários, por exemplo, computadores do tipo notebook ou laptop, telefones móveis, telefones inteligentes, tablets ou computadores tipo tablet, câmeras, computadores de mesa, conversores, televisões, dispositivos de exibição, reprodutores de meios digitais, consoles de vídeo game, dispositivos para streaming de vídeo (tais como servidores para serviços de conteúdo ou servidores para entrega de conteúdo), dispositivo receptor de broadcast, dispositivo transmissor de broadcast, ou semelhantes e pode não usar nenhum ou qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Desse modo, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0070] 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 se aplicar a instalações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente incluem qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, dados são recuperados a partir de uma memória local, transmitidos por streaming por uma rede, ou semelhantes. Um dispositivo de codificação de vídeo pode codificar e armazenar dados para 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 decodificação é realizada 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.
[0071] Por conveniência de descrição, modalidades da invenção são descritas no presente documento, por exemplo, a título de 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 pelo Time de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo (VCEG) do ITU-T e Grupo de Especialistas de Imagem em Movimento (MPEG) de ISO/IEC. Uma pessoa de habilidade comum na técnica irá entender que as modalidades da invenção não são limitadas a HEVC ou VVC. Codificador e Método de codificação
[0072] A Figura 2 mostra um diagrama de blocos esquemático de um exemplo de codificador de vídeo 20 que é configurado para implantar 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 estimativa de movimento e uma unidade de compensação de movimento (não mostradas). Um codificador de vídeo 20 como mostrado na Figura 2 pode também ser referido como codificador de vídeo híbrido ou um codificador de vídeo de acordo com uma codec de vídeo híbrida.
[0073] 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 direto do codificador 20, enquanto que 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 referidas como formando um percurso de sinal retroativo do codificador de vídeo 20, em que o percurso de sinal retroativo do codificador de vídeo 20 corresponde ao percurso de sinal do decodificador (ver o 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 são também referidas para formar o “decodificador embutido” do codificador de vídeo 20. Imagens e Particionamento de imagem (Imagens e Blocos)
[0074] O codificador 20 pode ser configurado para receber, por exemplo, por meio 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 os dados de imagem recebidos podem também ser uma imagem pré-processada 19 (ou dados de imagem pré- processados 19). Tendo em vista a simplicidade, a descrição a seguir se refere à imagem 17. A imagem 17 pode também ser referida como imagem atual ou imagem a ser codificada (em particular em 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).
[0075] Uma imagem (digital) é ou pode ser vista como um arranjo ou matriz de amostras bidimensional com valores de intensidade. Uma amostra no arranjo pode também ser referida como pixel (forma abreviada de elemento de imagem) ou um pel. O número de amostras na direção (ou eixo geométrico) horizontal e vertical do arranjo ou imagem define o tamanho e/ou resolução da imagem. Para representação de cor, tipicamente três componentes de cor são empregados, isto é, a imagem pode ser representada ou incluir três arranjos de amostra. Em formato RBG ou espaço de cores uma imagem compreende um arranjo de amostra vermelho, verde e azul correspondente. No entanto, em codificação de vídeo cada pixel é tipicamente representado em um formato de luminância e crominância ou espaço de cores, por exemplo, YCbCr, o qual compreende um componente de luminância indicado por Y (algumas vezes L também é usado alternativamente) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou abreviadamente luma) Y representa a intensidade de nível de brilho ou cinza (por exemplo, como em uma imagem em escala de cinza), enquanto os dois componentes de crominância (ou abreviadamente croma) Cb e Cr representam a cromaticidade ou componentes de informações de cor. Consequentemente, uma imagem em 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). Imagens em formato RGB podem ser convertidas ou transformadas em formato YCbCr e vice-versa, o processo é também conhecido como transformação ou conversão de cor. Se uma imagem é monocrômica, a imagem pode compreender somente um arranjo de amostra de luminância. Consequentemente, uma imagem pode ser, por exemplo, um arranjo de amostras de luma em formato monocrômico ou um arranjo de amostras de luma e dois arranjos de amostras correspondentes de croma em formato de cor 4:2:0, 4:2:2, e 4:4:4.
[0076] 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 203 (tipicamente não sobrepostos). Esses blocos podem também ser referidos como 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 definindo o tamanho de bloco, ou para mudar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[0077] Em modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, diversos ou todos os blocos formando a imagem 17. O bloco de imagem 203 pode também ser referido como bloco de imagem atual ou bloco de imagem a ser codificado.
[0078] Como a imagem 17, o bloco de imagem 203 novamente é ou pode ser visto como um arranjo ou matriz de amostras bidimensional com valores de intensidade (valores de amostra), embora de menor dimensão que a imagem
17. Em outras palavras, o bloco 203 pode compreender, por exemplo, um arranjo de amostra (por exemplo, um arranjo luma no caso de uma imagem monocrômica 17, ou um arranjo luma ou croma no caso de uma imagem a cores) ou três arranjos de amostra (por exemplo, um arranjo luma e dois arranjos croma no caso de uma imagem a cores 17) ou qualquer outro número e/ou espécie de arranjos dependendo do formato de cor aplicado. O número de amostras na direção (ou eixo geométrico) horizontal e vertical do bloco 203 define o tamanho do bloco 203. Consequentemente, um bloco pode, por exemplo, um arranjo MxN (M colunas por N linhas) de amostras, ou um arranjo MxN de coeficientes de transformada.
[0079] Modalidades do codificador de vídeo 20 como mostrado na Figura 2 podem ser configuradas codificar a imagem 17 bloco por bloco, por exemplo, a codificação e predição é realizada por bloco 203.
Cálculo Residual
[0080] 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 um bloco de predição 265 (detalhes adicionais sobre o bloco de predição 265 são fornecidos adiante), por exemplo, subtraindo-se valores de amostra do bloco de predição 265 dos valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio da amostra. Transformada
[0081] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma transformada, por exemplo, uma transformada de cosseno (DCT) discreta ou transformada de seno (DST) discreta, nos valores de amostra do bloco residual 205 para obter coeficientes de transformada 207 em um domínio da transformada. Os coeficientes de transformada 207 podem também ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio da transformada.
[0082] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações de número inteiro de DCT/DST, tais como as transformadas especificadas para H.265/HEVC. Comparada a uma transformada DCT ortogonal, tais aproximações de número inteiro são tipicamente escalonadas por um determinado fator. A fim de preservar a norma do bloco residual que é processado por transformadas diretas e inversas, fatores de escalonamento adicionais são aplicados como parte do processo de transformada. Os fatores de escalonamento são tipicamente escolhidos com base em determinadas restrições como fatores de escalonamento sendo uma potência de dois para operações de deslocamento, profundidade de bit dos coeficientes de transformada, compensação entre exatidão e custos de implantação, etc. Fatores específicos de escalonamento são, por exemplo, especificados para a transformada inversa, por exemplo, por unidade de processamento de transformada inversa 212 (e pela transformada inversa correspondente, por exemplo, por unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e fatores de escalonamento correspondentes para a transformada direta, por exemplo, por unidade de processamento de transformada 206, em um codificador 20 podem ser especificados de acordo.
[0083] 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 por meio da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de transformada para decodificação. Quantização
[0084] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter coeficientes quantizados 209, por exemplo, aplicando-se quantização escalar ou quantização de vetor. Os coeficientes quantizados 209 podem também ser referidos como coeficientes de transformada quantizados 209 ou coeficientes residuais quantizados 209.
[0085] O processo de quantização pode reduzir a profundidade de bit associada a alguns dos 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 quantização, onde 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, um escalonamento diferente pode ser aplicado para alcançar quantização mais fina ou mais grosseira. Tamanhos de etapa de quantização menores correspondem a quantização mais fina, enquanto que tamanhos de etapa de quantização maiores correspondem a quantização mais grosseira. O tamanho de etapa de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização pode ser, por exemplo, 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 etapa de quantização pequenos) e parâmetros de quantização grandes podem corresponder a quantização grosseira (tamanhos de etapa de quantização grandes) ou vice-versa. A quantização pode incluir divisão por um tamanho de etapa de quantização e uma desquantização correspondente e/ou a inversa, por exemplo, pela unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho de etapa de quantização. Modalidades de acordo com alguns padrões, por exemplo, HEVC, podem ser configurados para usar um parâmetro de quantização para determinar o tamanho de etapa de quantização. De modo geral, o tamanho de 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 escalonamento adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, a qual poderia ser modificada em virtude do escalonamento usado 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 implantação, o escalonamento da transformada inversa e a desquantização poderiam ser combinados. Alternativamente, tabelas de quantização personalizadas podem ser usadas e sinalizadas de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perda, em que a perda aumenta com tamanhos de etapa de quantização crescentes.
[0086] Modalidades do codificador de vídeo 20 (respectivamente à unidade de quantização 208) podem ser configurados para emitir parâmetros de quantização (QP), por exemplo, diretamente ou codificados por meio 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
[0087] 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-se o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base no ou usando o mesmo tamanho de etapa de quantização que a unidade de quantização 208. Os coeficientes desquantizados 211 podem também ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora tipicamente não idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada
207. Transformada Inversa
[0088] 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 discreta de cosseno (DCT) inversa ou transformada discreta de seno (DST) inversa ou outras transformadas inversas, para obter um bloco residual reconstruído 213 (ou coeficientes desquantizados correspondentes 213) no domínio da amostra. O bloco residual reconstruído 213 pode também ser referido como bloco de transformada 213. Reconstrução
[0089] 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 da 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
[0090] A unidade de filtro loop 220 (ou abreviadamente “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 transições de pixel suaves, ou aperfeiçoar de outra maneira a qualidade de vídeo. A unidade de filtro loop 220 pode compreender um ou mais filtros loop tais como um filtro de desbloqueio, um filtro de desvio adaptável à amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro loop adaptável (ALF), um filtro de nitidez, um filtro de suavização ou um filtro colaborativo, 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 loop 220 pode ser implantada como um filtro post-loop. O bloco filtrado 221 também pode ser referido como bloco reconstruído filtrado 221.
[0091] 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 desvio adaptáveis), por exemplo, diretamente ou codificados por meio 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
[0092] 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, tais como memória de acesso aleatório dinâmica (DRAM), incluindo 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 ser adicionalmente 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 reconstruídas, isto é, decodificadas previamente (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 pode também 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 adicionalmente processada dos blocos reconstruídos ou amostras reconstruídas. Seleção de Modo (Particionamento e Predição)
[0093] 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ída, por exemplo, amostras filtradas e/ou não filtradas reconstruídas ou blocos da mesma imagem (atual) e/ou a partir de uma ou de uma pluralidade de imagens previamente decodificadas, por exemplo, a partir do buffer de imagem decodificada 230 ou outros buffers (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruída 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.
[0094] 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 o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído 215.
[0095] As modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o modo de particionamento e de predição (por exemplo, a partir daqueles suportados por ou disponíveis para a unidade de seleção de modo 260), que fornecem o melhor pareamento ou em outras palavras o mínimo residual (mínimo residual significa melhor compressão para transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o modo de particionamento e de 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", "ideal" etc. neste contexto não se relacionam necessariamente a um "melhor", "mínimo", "ideal", etc. geral, mas também podem se referir ao cumprimento de um critério de terminação ou de seleção como um valor excedendo ou ficando abaixo de um limiar ou outras restrições levando potencialmente a uma "seleção abaixo de ideal", mas reduzindo a complexidade e o tempo de processamento.
[0096] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar o bloco 203 em partições de bloco menores ou sub-blocos (que formam novamente blocos), por exemplo, iterativamente usando particionamento de árvore quaternária (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação das mesmas, e para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub-blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e os modos de predição são aplicados a cada uma das partições de bloco ou sub-blocos.
[0097] A seguir, o processamento de particionamento (por exemplo, por unidade de particionamento 260) e de predição (pela unidade de predição inter 244 e unidade de predição intra 254) realizados por um codificador de vídeo exemplificativo 20 será explicada em maior detalhe. Particionamento
[0098] 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 adicionalmente particionados em partições ainda menores. Isto também se refere ao particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco de raiz, por exemplo, a 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 a 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 próximo nível inferior, por exemplo, nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc. até que o particionamento seja terminado, por exemplo, porque um critério de terminação é atendido, por exemplo, uma profundidade máxima da árvore ou tamanho de bloco mínimo é alcançado. Blocos que não são particionados adicionalmente também são referidos como blocos folha ou nós folha da árvore. Uma árvore que usa particionamento em duas partições é referida como árvore binária (BT), uma árvore que usa particionamento em três partições é referida como árvore ternária (TT), e uma árvore que usa particionamento em quatro partições é referida como árvore quaternária (QT).
[0099] Como mencionado antes, o termo “bloco” como usado no presente documento pode ser uma porção, em particular uma porção quadrada ou retangular, de uma imagem. 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 aos 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).
[0100] 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 monocrômica ou uma imagem que é codificada usando três planos de cor separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco de amostras NxN para algum valor de N tal que a divisão de um componente em CTBs é 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 amostra, ou um bloco de codificação de amostras de uma imagem monocrômica ou uma imagem que é codificada usando três planos de cor separados e estruturas de sintaxe usadas para codificar as amostras. De modo correspondente um bloco de codificação (CB) pode ser um bloco de amostras MxN para alguns valores de M e N tais que a divisão de um CTB em blocos de codificação é um particionamento.
[0101] Nas 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 árvore quaternária denotada como árvore de codificação. A decisão de se codificar uma área de imagem usando predição de imagem inter (temporal) ou de imagem intra (espacial) é feita a nível de 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 para o decodificador com base na PU. Depois de obter o bloco residual aplicando-se o processo de predição com base no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs) de acordo com uma outra estrutura de árvore quaternária similar à árvore de codificação para a CU.
[0102] Nas modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, o qual é referido como Codificação de Vídeo Versátil (VVC), particionamento de Árvore quaternária e árvore binária (QTBT) é usada para particionar um bloco de codificação. Na estrutura de bloco QTBT, uma CU pode ter ou um formato quadrado ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é primeiramente particionada por uma estrutura de árvore quaternária. Os nós folha de árvore quaternária são adicionalmente particionados por uma estrutura de árvore binária ou árvore ternária (ou tripla). Os nós folha de árvore de particionamento são chamados unidades de codificação (CUs), e esta segmentação é usada para predição e processamento de transformada sem qualquer particionamento adicional. Isso significa que a CU, a PU e a 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 foi também proposta para ser usada junto com a estrutura de bloco QTBT.
[0103] Em um exemplo, a unidade de seleção de modo 260 de codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas no presente documento.
[0104] Como descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor modo de predição ou um modo de predição ideal a partir de um conjunto de modos de predição (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
[0105] O conjunto de modos de predição intra pode compreender 35 diferentes modos de predição intra, por exemplo, modos não direcionais tais como modo DC (ou médio) e modo plano, ou modos direcionais, por exemplo, como definidos HEVC, ou pode compreender 67 diferentes modos de predição intra, por exemplo, modos não direcionais como modo DC (ou médio) e modo plano, ou modos direcionais, por exemplo, como definidos para VVC.
[0106] 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.
[0107] A unidade de predição intra 254 (ou de modo geral a unidade de seleção de modo 260) é adicionalmente configurada para emitir parâmetros de predição intra (ou de modo geral informações indicativas do modo de predição intra selecionado para o bloco) para a unidade de codificação de entropia 270 em forma de elementos de sintaxe 266 para inclusão nos dados de imagem codificados 21, de modo 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
[0108] 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 no DBP 230) e outros parâmetros de predição inter, por exemplo, se toda a imagem de referência ou somente uma parte, por exemplo, uma área de janela de busca em torno da área do bloco atual, da imagem de referência é usada para buscar um bloco de referência de melhor pareamento e/ou, por exemplo, se interpolação de pixel é aplicada, por exemplo, interpolação meio/semi pel e/ou quarto de pel, ou não.
[0109] Além dos modos de predição acima, o modo de salto e/ou o modo direto podem ser aplicados.
[0110] A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na Figura 2). A unidade de estimativa de movimento está 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 previamente reconstruídos, por exemplo, blocos reconstruídos de uma ou uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para estimativa de movimento. Por exemplo, uma sequência de vídeo pode compreender a imagem atual e as imagens previamente decodificadas 231, ou em outras palavras, a imagem atual e as imagens previamente decodificadas 231 podem fazer parte de ou formar uma sequência de imagens formando uma sequência de vídeo.
[0111] 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 desvio (desvio 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 estimativa de movimento. Este desvio também é chamado de vetor de movimento (MV).
[0112] 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 em 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 obter ou gerar o bloco de predição com base no vetor de movimento/bloco determinado por estimativa de movimento, possivelmente realizando interpolações até precisão de 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 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 imagem de referência.
[0113] A unidade de compensação de movimento pode também gerar elementos de sintaxe associados aos blocos e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo. Codificação de entropia
[0114] A unidade de codificação de entropia 270 está 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 de VLC adaptável a contexto (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária adaptável a contexto (CABAC), codificação aritmética binária adaptável a contexto com base em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE), ou uma outra metodologia ou técnica de codificação de entropia) ou bypass (não há compressão) pelos coeficientes residuais 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 por meio da saída 272, por exemplo, na forma de um fluxo de bits codificados 21 de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros para decodificar. O fluxo de bits codificados 21 pode ser transmitido para o decodificador de vídeo 30, ou armazenado em uma memória para transmissão posterior ou recuperação pelo decodificador de vídeo 30.
[0115] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador com base em não transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para determinados blocos ou quadros. Em uma outra implantação, o 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
[0116] A Figura 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implantar as técnicas do presente pedido. O decodificador de vídeo 30 é configurado para receber dados de imagem codificados 21 (por exemplo, fluxo de bits codificados 21), por exemplo, codificados pelo codificador 20, para obter uma imagem decodificada 331. Os dados de imagem codificados ou fluxo de bits compreendem informações para decodificar os dados de imagem codificados, por exemplo, dados que representam blocos de imagem de uma fatia de vídeo codificada e elementos de sintaxe associados.
[0117] 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 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 de modo geral recíproco ao passo de codificação descrito com respeito ao codificador de vídeo 100 da Figura 2.
[0118] Como explicado com 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 são também referidas como formando o “decodificador embutido” do codificador de vídeo 20. Consequentemente, 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 de modo correspondente às respectivas unidades e funções do decodificador de vídeo 30. Decodificação de entropia
[0119] 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 nos dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na Figura 3), por exemplo, qualquer um dos ou todos os parâmetros de predição inter (por exemplo, índice de imagem de referência e vetor de movimento), parâmetro 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 seleçã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 ao nível de fatia de vídeo e/ou nível de bloco de vídeo. Quantização Inversa
[0120] 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 de dados de imagem codificados 21 (por exemplo, por analisar e/ou por decodificar, por exemplo, pela unidade de decodificação de entropia 304) e para aplicar com base nos parâmetros de quantização uma quantização inversa nos coeficientes decodificados quantizados 309 para obter coeficientes desquantizados 311, os quais podem também ser referidos como coeficientes de transformada 311. O processo de quantização inversa pode incluir 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 para determinar um grau de quantização e, de modo semelhante, um grau de quantização inversa que deve ser aplicado. Transformada Inversa
[0121] 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 nos coeficientes desquantizados 311 a fim de obter blocos residuais reconstruídos 213 no domínio da amostra. Os blocos residuais reconstruídos 313 podem também ser referidos como blocos de transformada
313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada de número inteiro inversa, ou um processo de transformada inversa conceitualmente similar. A unidade de processamento de transformada inversa 312 pode ser adicionalmente configurada para receber parâmetros de transformada ou informações correspondentes a partir de dados de imagem codificados 21 (por exemplo, por analisar e/ou por decodificar, por exemplo, pela unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada nos coeficientes desquantizados 311. Reconstrução
[0122] 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 da 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
[0123] A unidade de filtro loop 320 (ou no loop de codificação ou depois do loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para transições de pixel suaves, ou aperfeiçoar de outra maneira a qualidade de vídeo. A unidade de filtro loop 320 pode compreender um ou mais filtros loop tais como um filtro de desbloqueio, um filtro de desvio adaptável à amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro loop adaptável (ALF), um filtro de nitidez, um de suavização ou um filtro colaborativo, 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 implantada como um filtro post-loop. Buffer de Imagem Decodificada
[0124] Os blocos de vídeo decodificados 321 de uma imagem são então armazenados no buffer de imagem decodificada 330, o qual armazena as imagens decodificadas 331 como imagens de referência para subsequente compensação de movimento para outras imagens e/ou para emitir o respectivo visor.
[0125] O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, por meio da saída 312, para apresentação ou visualização para um usuário. Predição
[0126] 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 analisar e/ou por decodificar, por exemplo, pela unidade de decodificação de entropia 304). A unidade de seleçã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.
[0127] Quando a fatia de vídeo é codificada como uma fatia codificada de modo intra (I), a unidade de predição intra 354 da unidade de seleção de modo 360 é configurada para gerar o 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 de blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é 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 seleçã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 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 das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas no DPB 330.
[0128] A unidade de seleçã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 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 seleção de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, fatia B, fatia P, ou fatia GPB), informações de construção para uma ou mais das listas de imagem 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.
[0129] 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 emitido sem a unidade de filtro loop 320. Por exemplo, um decodificador com base em não transformada 30 pode quantizar inversamente o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para determinados blocos ou quadros. Em uma outra implantaçã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.
[0130] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de uma etapa atual pode ser adicionalmente processado e então emitido para a próxima etapa. Por exemplo, após filtragem por interpolação, derivação de vetor de movimento ou filtragem loop, uma operação adicional, tal como Recorte ou deslocamento, pode ser realizada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem loop.
[0131] Deve ser observado que operações adicionais podem ser aplicadas nos vetores de movimento derivados de bloco atual (incluindo, porém, sem limitação, vetores de movimento de ponto de controle de modo afim, vetores de movimento de sub-bloco em modos afim, plano, ATMVP (predição de vetor de movimento temporal avançada), vetores de movimento temporal, e assim por diante). Por exemplo, o valor do vetor de movimento é restrito a uma faixa predefinida de acordo com seu bit representante. Se o bit representante de vetor de movimento é bitDepth, então a faixa é -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, onde “^” significa exponenciação. Por exemplo, se bitDepth é estabelecido igual a 16, a faixa é -32768 ~ 32767; se bitDepth é estabelecido igual a 18, a faixa é - 131072~131071. Aqui se fornece dois métodos para restringir o vetor de movimento.
[0132] Método 1: remover o MSB (bit mais significativo) excedente por operações de fluxo ux=(mvx+2bitDepth) % 2bitDepth (1) mvx=(ux>=2bitDepth-1)?(ux−2bitDepth ) : ux (2) uy=(mvy+2bitDepth) % 2bitDepth (3) mvy=(uy>=2bitDepth-1)?(uy−2bitDepth ) : uy (4)
[0133] Por exemplo, se o valor de mvx é -32769, após aplicar as fórmulas (1) e (2), o valor resultante é 32767. Em sistema de computador, números decimais negativos 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, assim o complemento de dois resultante é 0111,1111,1111,1111 (o número decimal é 32767), que é igual ao emitido aplicando-se as fórmulas (1) e (2). ux=(mvpx + mvdx +2bitDepth) % 2bitDepth (5) mvx=(ux>=2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (6) uy=(mvpy + mvdy +2bitDepth) % 2bitDepth (7) mvy=(uy>=2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (8)
[0134] As operações podem ser aplicadas durante a soma de mvp (preditor de vetor de movimento) e mvd (diferença de vetor de movimento),
conforme mostrado nas fórmulas (5) a (8).
[0135] Método 2: remover o MSB excedente recortando-se o valor vx=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx) vy=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy) onde a definição da função Clip3 é conforme a seguir: x ; z<x Clip3( x, y, z ) = {y ; z>y z ; de outra maneira
[0136] 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 implantar as modalidades reveladas conforme descritas 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 o codificador de vídeo 20 da Figura 1A.
[0137] 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 vazão 450 (ou portas de saída 450) para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo 400 também pode compreender componentes ópticos que podem ser convertidos em elétricos (OE) e componentes elétricos que podem ser convertidos em ópticos (EO) acoplados às portas de ingresso 410, às unidades receptoras 420, às unidades transmissoras 440, e às portas de vazão 450 para vazão ou ingresso de sinais ópticos ou elétricos.
[0138] O processador 430 é implantado por hardware e software. O processador 430 pode ser implantado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos nú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 vazão 450, e memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implanta as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 470 implanta, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece um aperfeiçoamento substancial para a 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 é implantado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0139] 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 excedentes, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante execução de programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser memória apenas para leitura (ROM), memória de acesso aleatório (RAM), memória endereçável por conteúdo ternário (TCAM), e/ou memória de acesso aleatório estática (SRAM).
[0140] A Figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado tanto como o dispositivo de origem 12 e o dispositivo de destino 14 da Figura 1 ou como ambos de acordo com uma modalidade exemplificativa.
[0141] 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 múltiplos dispositivos, com capacidade de manipular ou processar informações agora existentes ou desenvolvidas no futuro. Embora as implantaçõ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.
[0142] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória apenas para leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implantação. Qualquer outro tipo adequado de dispositivo de armazenamento pode ser usado como a 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 adicionalmente incluir 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 aplicativo 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.
[0143] O aparelho 500 também pode incluir um ou mais dispositivos de saída, tais como um visor 518. O visor 518 pode ser, em um exemplo, um visor sensível ao toque que combina um visor com um elemento sensível ao toque que é operável para detectar entradas de toque. O visor 518 pode ser acoplado ao processador 502 por meio do barramento 512.
[0144] 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 diretamente acoplado aos outros componentes do aparelho 500 ou pode ser acessado por meio de uma rede e pode compreender uma única unidade integrada tal como um cartão de memória ou múltiplas unidades tais como múltiplos cartões de memória. O aparelho 500 pode desse modo ser implantado em uma ampla variedade de configurações.
[0145] Em recente desenvolvimento de codificação de vídeo, surgiram técnicas e esquemas mais sofisticados para predição.
[0146] Uma técnica assim é predição de múltiplas hipóteses. Inicialmente, o termo “predição de múltiplas hipóteses” foi introduzido para estender a compensação de movimento com um sinal de predição para a superposição linear de diversos sinais de predição compensados por movimento. Mais recentemente, essa abordagem foi generalizada para combinar um modo de predição existente com uma predição indexada de fusão extra. Isso inclui, em particular, predição de múltiplas hipóteses para modo intra e inter (ou, em outras palavras, combinar modo intra e inter, conferir, por exemplo, Time de Especialistas de Vídeo Conjunto (JVET), documento JVET-L0100-v3, intitulado “CE10.1.1: Multi-hypothesis prediction for improving AMVP mode, skip or merge mode, and intra mode (“CE10.1.1: Predição de múltiplas hipóteses para aperfeiçoar modo AMVP, modo de salto ou fusão, e modo intra”), 12o Encontro: Macau, CN, 3 a 12 de outubro de 2018). Essa abordagem aplica predição de múltiplas hipóteses para aperfeiçoar modo intra, combinando-se uma predição intra e uma predição indexada de fusão. Em outras palavras, uma combinação linear de um bloco de predição intra e um bloco de predição inter é usada.
[0147] Uma outra técnica é introduzir e usar listas de fusão separadas para candidatas a fusão de sub-bloco, isto é, separadas de listas candidatas a fusão para o modo de fusão regular, a nível de bloco (conferir, por exemplo, Time de Especialistas de Vídeo Conjunto (JVET), documento JVET-L0369-v2, intitulado “CE4: Separate list for sub-block merge candidates (Test 4.2.8)) “CE4: Lista separada para fusão de candidatas a sub-bloco (Test 4.2.8))”, 12o Encontro: Macau, CN, 3 a 12 de outubro de 2018). Essa técnica é particularmente aplicável para a ATMVP mencionada acima e modos afins.
[0148] A predição de múltiplas hipóteses para uso em modo intra e inter é controlada por mh_intra_flag, a qual especifica se a predição de múltiplas hipóteses para modo intra e inter está habilitada ou não para um bloco atual. No estado da técnica, a flag mh_intra_flag é transmitida condicionalmente dependendo de merge_affine_flag de acordo com seguinte tabela de sintaxe: codification_unit(x0,y0,cbWidth,cbHeight,treeType) { Descritor … } else { /* MODE_INTER */ if( uc_skip_flag[x0][y0] ) { if( … && cbWidth >= 8 && cbHeight >= 8) merge_affine_flag[x0][y0] ae(v) if( merge_affine_flag[x0][y0] == 0 && MaxNumMergeCand >1){ if( mvd_l1_zero_flag == 0 ) mh_merge_flag[x0][y0] ae(v) merge_idx[x0][y0] ae(v) } } else { merge_flag[x0][y0] ae(v) if( merge_flag[x0][y0] ) {
if( sps_affine_enabled_flag && cbWidth >= 8 && cbHeight >= 8 && ( MotionModelIdc[x0−1][y0+cbHeight−1] != 0 || MotionModelIdc[x0−1][y0+cbHeight] != 0 || MotionModelIdc[x0−1][ y0−1] != 0 || MotionModelIdc[x0+cbWidth−1][y0−1] != 0 || MotionModelIdc[x0+cbWidth][y0−1]] != 0 ) ) merge_affine_flag[x0][y0] ae(v) if( merge_affine_flag[x0][y0] == 0 && MaxNumMergeCand > 1 ) mh_merge_flag[x0][y0] ae(v) if( merge_affine_flag[x0][y0] == 0 && mh_merge_flag[x0][y0] == 0 ) mh_intra_flag[x0][y0] ae(v) if( mh_intra_flag[x0][y0] ) mh_intra_mode_idx [x0][y0] if( merge_affine_flag[x0][y0] == 0 && MaxNumMergeCand > 1 ) merge_idx[x0][y0] ae(v) } else { … }
[0149] Desse modo, mh_intra_flag foi condicionalmente sinalizado sob a condição de que merge_affine_flag seja zero. Isso significa que o uso conjunto de fusão afim com mh_intra_flag, isto é, predição de múltiplas hipóteses para modo intra e inter, é desabilitado. No entanto, permite efetivamente uso de ATMVP com mh_intra_flag.
[0150] Após a recente adoção de lista de fusão separada para candidatos de fusão de sub-bloco, candidatas de fusão afins foram acopladas juntamente com candidatas de fusão atmvp e o uso desses candidatos de sub- bloco é controlado por um parâmetro recém-introduzido chamado merge_subblock_flag. Nenhuma flag merge_affine separada é usada agora. Desse modo a sintaxe não mais permite determinar um caso quando modo afim de fusão não é usado, mas atmvp é usada. Um novo modo de sinalizar predição de múltiplas hipóteses combinando modo intra e inter na presença de listas de fusão separadas para candidatos de fusão de sub-bloco foi desenvolvido no enquadramento da presente invenção.
[0151] A invenção propõe vários métodos de uso e sinalização de predição de múltiplas hipóteses para modo intra e inter assumindo-se a presença de listas de fusão separadas para candidatos de fusão de sub-bloco no codec. Vários modos de harmonização são possíveis os quais estão incluídos na revelação atual. O uso de predição de múltiplas hipóteses para modo intra e inter em caso de modo de salto também é revelado.
[0152] De acordo com um aspecto geral da presente revelação, um método de codificação de vídeo de dados de vídeo em um fluxo de bits e um método de decodificação de vídeo de dados de vídeo recebidos em um fluxo de bits são fornecidos.
[0153] O método de codificação de vídeo compreende aplicar uma primeira técnica e/ou uma segunda técnica. A primeira técnica compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco. A segunda técnica compreende predição de múltiplas hipóteses para modo intra e inter. O método compreende transmitir uma primeira flag de controle no fluxo de bits, em que a primeira flag de controle indica se usa a primeira técnica e transmitir uma segunda flag de controle no fluxo de bits, em que a segunda flag de controle indica se usa a segunda técnica.
[0154] O método de decodificação de vídeo compreende aplicar uma primeira técnica e/ou uma segunda técnica. A primeira técnica compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco. A segunda técnica compreende predição de múltiplas hipóteses para modo intra e inter. O método compreende receber uma primeira flag de controle a partir do fluxo de bits, em que a primeira flag de controle indica se usa a primeira técnica e receber uma segunda flag de controle a partir do fluxo de bits, em que a segunda flag de controle indica se usa a segunda técnica.
[0155] De acordo com modalidades, o uso da técnica de predição de múltiplas hipóteses para modo intra e inter é controlado independentemente de uso da lista de fusão separada para técnica de candidatos de fusão de sub-bloco. Em outras palavras, em tais modalidades, a sinalização da primeira flag de controle (merge_subblock_flag) é realizada independentemente de sinalização da segunda flag de controle (mh_intra_flag).
[0156] Em uma modalidade predição de múltiplas hipóteses para modo intra e inter é controlada por mh_intra_flag que é sinalizado sem dependência de merge_subblock_flag. Nesse caso predição de múltiplas hipóteses para modo intra e inter é possível para ambos os modos de sub-bloco: afim e atmvp bem como para fusão normal. Tabelas de sintaxe abaixo demonstram possíveis maneiras de sinalizar mh_intra_flag nessa modalidade. .codification_unit(x0,y0,cbWidth,cbHeight,treeType) { Descritor … } else { /* MODE_INTER */ if( uc_skip_flag[x0][y0] ) { if( … && cbWidth >= 8 && cbHeight >= 8) merge_subblock_flag[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1 ) merge_idx[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 1 && MaxNumSubblock MergeCand > 1) merge_subblock_idx[x0][y0] ae(v) } else { merge_flag[x0][y0] ae(v) if( merge_flag[x0][y0] ) { if( … && cbWidth >= 8 && cbHeight >= 8) merge_subblock_flag[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1 ) merge_idx[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 1 && MaxNumSubblock MergeCand > 1 ) merge_subblock_idx[x0][y0] ae(v) mh_intra_flag[ x0 ][ y0 ] ae(v) } else {
… }
[0157] Na tabela acima, o uso de predição de múltiplas hipóteses combinando modo intra e intra é restrito a blocos de codificação no modo de fusão. codification_unit(x0,y0,cbWidth,cbHeight,treeType) { Descritor … } else { /* MODE_INTER */ if( uc_skip_flag[x0][y0] ) { if( … && cbWidth >= 8 && cbHeight >= 8) merge_subblock_flag[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1 ) merge_idx[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 1 && MaxNumSubblock MergeCand > 1) merge_subblock_idx[x0][y0] ae(v) mh_intra_flag[ x0 ][ y0 ] ae(v) } else { merge_flag[x0][y0] ae(v) if( merge_flag[x0][y0] ) { if( … && cbWidth >= 8 && cbHeight >= 8) merge_subblock_flag[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1 ) merge_idx[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 1 && MaxNumSubblock MergeCand > 1 ) merge_subblock_idx[x0][y0] ae(v) mh_intra_flag[ x0 ][ y0 ] ae(v) } else { … }
[0158] Na tabela anterior, o uso de predição de múltiplas hipóteses combinando modo intra e intra pode ser aplicado tanto para blocos de codificação no modo de fusão quanto para blocos de codificação no modo de salto.
[0159] Em uma modalidade da presente invenção, predição de múltiplas hipóteses para modo intra e inter é controlada por mh_intra_flag que é sinalizado com base em merge_subblock_flag. Nesse caso predição de múltiplas hipóteses para modo intra e inter é possível somente se ambos os modos de sub-bloco: afim e atmvp estão desabilitados. Em outras palavras, predição de múltiplas hipóteses para modos intra e inter é possível em modo de fusão normal, mas uma combinação de predição de múltiplas hipóteses para modo intra e inter com listas de fusão separadas para candidatos de fusão de sub-bloco é desabilitada. As tabelas de sintaxe abaixo demonstram possíveis maneiras de sinalizar mh_intra_flag nessa modalidade. codification_unit(x0,y0,cbWidth,cbHeight,treeType) { Descritor … } else { /* MODE_INTER */ if( uc_skip_flag[x0][y0] ) { if( … && cbWidth >= 8 && cbHeight >= 8) merge_subblock_flag[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1 ) merge_idx[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 1 && MaxNumSubblock MergeCand > 1) merge_subblock_idx[x0][y0] ae(v) } else { merge_flag[x0][y0] ae(v) if( merge_flag[x0][y0] ) { if( … && cbWidth >= 8 && cbHeight >= 8) merge_subblock_flag[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1 )
merge_idx[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 1 && MaxNumSubblock MergeCand > 1 ) merge_subblock_idx[x0][y0] ae(v) if( merge_subblock_flag[ x0 ][ y0 ] = = 0 ) mh_intra_flag[ x0 ][ y0 ] ae(v) } else { … }
[0160] Na tabela acima, o uso de predição de múltiplas hipóteses combinando modo intra e intra é restrito a blocos de codificação no modo de fusão. codification_unit(x0,y0,cbWidth,cbHeight,treeType) { Descritor … } else { /* MODE_INTER */ if( uc_skip_flag[x0][y0] ) { if( … && cbWidth >= 8 && cbHeight >= 8) merge_subblock_flag[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1 ) merge_idx[x0][y0] ae(v) if( merge_subblock_flag[x0][y0] == 1 && MaxNumSubblock MergeCand > 1) merge_subblock_idx[x0][y0] ae(v) if( merge_subblock_flag[ x0 ][ y0 ] ==0) mh_intra_flag[ x0 ][ y0 ] ae(v) } else { merge_flag[x0][y0] ae(v) if( merge_flag[x0][y0] ) { if( … && cbWidth >= 8 && cbHeight >= 8) merge_subblock_flag[ x0 ][ y0 ] ae(v) if( merge_subblock_flag[ x0 ][ y0 ] == 0 && MaxNumMergeCand > 1 )
merge_idx[ x0 ][ y0 ] ae(v) if( merge_subblock_flag[ x0 ][ y0 ] = = 1 && MaxNumSubblock MergeCand > 1 ) merge_subblock_idx[ x0 ][ y0 ] ae(v) if( merge_subblock_flag[ x0 ][ y0 ] = = 0 ) mh_intra_flag[ x0 ][ y0 ] ae(v) } else { … }
[0161] Na tabela anterior, o uso de predição de múltiplas hipóteses combinando modo intra e intra pode ser aplicado para ambos os blocos de codificação no modo de fusão e blocos de codificação no modo de salto.
[0162] No enquadramento da modalidade acima, o codificador sinaliza a mh_intra_flag (“segunda flag”, também chamada ciip_flag) somente se listas de fusão separadas para candidatos de sub-bloco são desabilitadas, isto é, se merge_subblock_flag (“primeira flag”) é zero. Por outro lado, um decodificador que recebe um fluxo de bits no qual mh_intra_flag é incluído determina por padrão que listas de fusão separadas para candidatos de sub- bloco sejam desabilitadas.
[0163] A seguir, o processamento de acordo com modalidades descritas acima será explicado com referência aos fluxogramas das Figuras 6 e
7.
[0164] A Figura 6 é um fluxograma ilustrando um processo de lado de codificador de acordo com uma modalidade da presente invenção.
[0165] O processo se inicia com uma decisão de se usa ou não uma lista de fusão separada para candidatos de sub-bloco, na etapa S101. Se esse não for o caso (S101: Não), o processamento prossegue para a etapa S103. Na etapa S103, é decidido, se é usada ou não predição de múltiplas hipóteses combinando modo intra e inter. Independentemente do resultado da decisão, o processamento subsequentemente prossegue para a etapa S105. Na etapa S105, um mh_intra_flag é gerado como um parâmetro a ser sinalizado no fluxo de bits. Mais especificamente, se predição de múltiplas hipóteses para modo intra e inter é usada (S103: Sim), um valor “1” é estabelecido para o mh_intra_flag e se predição de múltiplas hipóteses para flag intra e inter não é usada (S103: Não), um valor “0” é estabelecido para o mh_intra_flag (não mostrado no desenho).
[0166] Subsequentemente, o processamento prossegue para a etapa S107. No caso quando é decidido na etapa S101 usar uma lista de fusão separada para candidatos de sub-bloco (S101: Sim), o processamento prossegue diretamente da etapa S101 para a etapa S107.
[0167] Na etapa S107, um merge_subblock_flag é gerado como um parâmetro a ser sinalizado no fluxo de bits. Mais especificamente, no caso de uso de uma lista de fusão separada, isto é, quando o fluxo prossegue a partir de S101: Sim, um valor “1” é estabelecido para o merge_subblock_flaf e no caso quando o fluxo vem de S101: Não através de S103 e S105, isto é, quando nenhuma lista de fusão separada é usada, o merge_subblock_flag é estabelecido em um valor “0” (não mostrado no desenho).
[0168] Sendo assim, predição de múltiplas hipóteses para modo intra e inter é usada apenas condicionalmente mediante a condição de que listas de fusão separadas para candidatos de sub-bloco não sejam usadas. Portanto, o merge_subblock_flag é sempre gerado, mas um mh_intra_flag é gerado somente se nenhuma lista de fusão separada para modo intra e inter é usada. Subsequentemente, um fluxo de bits incluindo o merge_subblock_flag e condicionalmente (se o merge_subbock_flag é 0) também incluindo o mh_intra_flag é gerado na etapa S109 e o processamento termina.
[0169] A Figura 7 é um fluxograma ilustrando um processamento de lado de decodificador de acordo com uma modalidade da presente invenção.
[0170] O processamento se inicia com a etapa S201, na qual um fluxo de bits recebido é analisado. Na etapa S203 subsequente, é verificado, se há ou não um mh_intra_flag no fluxo de bits. Se o caso for (S203: Sim)., o processamento prossegue para a etapa S207. Na etapa S207, o mh_intra_flag é avaliado a fim de se decidir se predição de múltiplas hipóteses para modo intra e inter deve ser usada na decodificação, dependendo do valor do mh_intra_flag analisado. No caso do mh_intra_flag ter o valor de 1, decodificação é realizada com o uso de predição de múltiplas hipóteses para modo intra e inter na etapa (S207: Sim -> S211), e o processamento termina. De outra maneira, isto é, quando o mh_intra_flag tem um valor de 0 (S207: Não), predição de múltiplas hipóteses não é usada (nem tampouco uma lista de fusão separada para candidatos de sub-bloco).
[0171] Se, por outro lado, é determinado na etapa S203 que não há flag mh_intra (S203: Não), o processamento prossegue para a etapa S204. Na etapa S204, um subblock_merge_flag recebido a partir do fluxo de bits é avaliado a fim de se determinar na etapa seguinte (S205) se usa ou não uma lista de fusão separada para candidatos de sub-bloco.
[0172] Na etapa S205, se o subblock_merge_flag tem um valor de 1, é determinado que a lista de fusão separada deve ser usada (S205: Sim), e o processamento prossegue para a etapa S209, na qual decodificação é realizada usando a lista de fusão separada. De outra maneira, isto é, quando o subblock_merge_flag tem um valor de 0 (S205: Não), é determinado que decodificação é realizada sem _usar a lista de fusão separada (e sem a predição de múltiplas hipóteses para modo intra e inter), e o fluxo de processamento termina.
[0173] Sendo assim, de acordo com a modalidade, a partir da existência do mh_intra_flag no fluxo de bits analisado (S203: Sim) é diretamente inferido que listas de fusão separadas para candidatos de sub-bloco não são usadas.
[0174] Em outras palavras, o merge_subblock_flag, que é sempre incluído no fluxo de bits e recebido, é analisado somente no caso quando nenhum mh_intra_flag é incluído no fluxo de bits. Desse modo; em qualquer caso, somente uma única flag precisa ser avaliada no lado de decodificador.
[0175] Falando de modo mais geral, de acordo com a presente invenção, o uso da técnica de predição de múltiplas hipóteses para modo intra e inter é controlado com base em uso da lista de fusão separada para técnica de candidatos de fusão de sub-bloco. Mais especificamente, de acordo com a modalidade da Figura 7, a técnica de predição de múltiplas hipóteses para modo intra e inter pode ser usada se e somente se lista de fusão separada para técnica de candidatos de fusão de sub-bloco for desabilitada.
[0176] As modalidades acima mencionadas permitem harmonizar predição de múltiplas hipóteses para modo intra e inter com lista de fusão separada para candidatos de fusão de sub-bloco. Modalidades que também habilitam uso de predição de múltiplas hipóteses para modo intra e inter em modo de salto de bloco adicionalmente permitem alcançar ganho de codificação com respeito ao projeto básico. Modalidades que incluem sinalização condicional de mh_intra_flag com base em uso de listas de fusão separadas para candidatos de fusão de sub-bloco têm o benefício adicional de reduzir excesso de sinalização, porque o mh_intra_flag não precisa ser sinalizado em cada caso. Operadores Matemáticos
[0177] Os operadores matemáticos usados neste pedido são similares àqueles usados na linguagem de programação C. No entanto, os resultados das operações de divisão por número inteiro e deslocamento aritmético são definidos mais precisamente, e operações adicionais são definidas, tais como exponenciação e divisão com valor real. As convenções de numeração e contagem de modo geral começam em 0, por exemplo, "o primeiro" é equivalente ao 0, "o segundo" é equivalente ao 1º, etc. Operadores Aritméticos
[0178] Os seguintes operadores aritméticos são definidos conforme a seguir: + + Adição − Subtração (como um operador de dois argumentos) ou negação (como um − operador de prefixo unário) * Multiplicação, * incluindo multiplicação de matriz xy Exponenciação. Especifica x elevado à potência y. Em outros contextos, essa x notação é usada para sobrescritar, não destinada à interpretação como exponenciação. / Divisão por número inteiro com truncamento do resultado em direção a zero. Por / exemplo, 7/4 e −7/−4 são truncados para 1 e −7/4 e 7/−4 são truncados para −1. ÷ Usado para denotar divisão em equações matemáticas onde nenhum ÷ truncamento ou arredondamento é pretendido. x Usado para denotar divisão em equações matemáticas onde nenhum y truncamento ou arredondamento é pretendido. y A soma de f (i) com i tomando todos os valores em número inteiro de x até e ∑ f( i ) i=x incluindo y. % xy Módulo. Restante de x dividido por y, definido apenas para número inteiros com x> = 0 e y> 0. Operadores Lógicos
[0179] Os seguintes operadores lógicos são definidos como a seguir: x && y Lógica booliana "e" de x e y x || y Lógica booliana "ou" de x e y ! Lógica booliana "não" x? y: z Se x for VERDADEIRO ou não igual a 0, avalia para o valor de y; de outra maneira, avalia para o valor de z. Operadores relacionais
[0180] Os seguintes operadores relacionais são definidos como a seguir: > Maior que >=Maior ou igual a < Menor que <=Menor ou igual a ==Igual a != Não igual a
[0181] Quando um operador relacional é aplicado a um elemento de sintaxe ou variável a que foi atribuído o valor "na" (não aplicável), o valor "na" é tratado como um valor distinto para o elemento de sintaxe ou variável. O valor "na" não é considerado igual a qualquer outro valor. Operadores referentes a bit
[0182] Os seguintes operadores referentes a bit são definidos como a seguir: & "e" referente a bit. Ao operar com argumentos de número inteiro, opera em uma representação de complemento de dois do valor de número inteiro. Ao operar em um argumento binário que contém menos bits que um outro argumento, o argumento mais curto é estendido adicionando-se bits mais significativos iguais a 0. | "ou" referente a bit. Ao operar com argumentos de número inteiro, opera em uma representação de complemento de dois do valor de número inteiro. Ao operar em um argumento binário que contém menos bits que um outro argumento, o argumento mais curto é estendido adicionando-se bits mais significativos iguais a 0.
^ "exclusivo ou" referente a bit. Ao operar com argumentos de número inteiro, opera em uma representação de complemento de dois do valor de número inteiro. Ao operar em um argumento binário que contém menos bits que um outro argumento, o argumento mais curto é estendido adicionando bits mais significativos iguais a 0. x>>y Deslocamento aritmético para a direita de uma representação inteira de complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores de número inteiro não negativos de y. Bits deslocados para os bits mais significativos (MSBs) como resultado do deslocamento à direita têm um valor igual ao MSB de x antes da operação de deslocamento. x<<y Deslocamento aritmético para a esquerda de uma representação de número inteiro em complemento de x por y dígitos binários. Esta função é definida apenas para valores de número inteiro não negativos de y. Bits deslocados para os bits menos significativos (LSBs) como resultado do deslocamento à esquerda têm um valor igual a 0. Operadores de atribuição
[0183] Os seguintes operadores aritméticos são definidos como a seguir: = Operador de atribuição ++Incremento, isto é, x ++ é equivalente a x = x + 1; quando usado em um índice de arranjo, avalia para o valor da variável antes da operação de incremento. −−Decremento, isto é, x−− é equivalente a x = x - 1; quando usado em um índice de arranjo, avalia para o valor da variável antes da operação de decremento. +=Incremento por montante especificado, isto é, x += 3 é equivalente a x = x + 3, e x + = (−3) é equivalente a x = x + (−3). −=Decremento por montante especificado, isto é, x - = 3 é equivalente a x = x - 3, e x - = (−3) é equivalente a x = x - (−3). Notação de faixa
[0184] A seguinte notação é usada para especificar uma faixa de valores: x = y..z x assume valores de número inteiro começando de y a z, inclusive, com x, y e z sendo números inteiros e z sendo maior que y. .
Funções matemáticas
[0185] As seguintes funções matemáticas são definidas: x ; x >= 0 Abs( x ) = { −x ; x<0 Asin( x )a função de seno inversa trigonométrica, operando em um argumento x que está na faixa de -1,0 a 1,0, inclusive, com um valor de saída na faixa de −π ÷ 2 a π ÷ 2, inclusive, em unidades de radianos Atan(x)a função tangente inversa trigonométrica, operando em um argumento x, com um valor de saída na faixa de −π÷2 a π÷2, inclusive, em unidades de radianos y Atan ( x ) ; x>0 y Atan ( x ) + π ; x < 0 && y >= 0 Atan ( ) − π ; x < 0 && y < 0 y Atan2(y, x) = x π +2 ; x = = 0 && y >= 0 −2 π ; de outra maneira { Ceil( x ) o menor número inteiro maior ou igual a x. Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x ) Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x ) x ; z<x Clip3( x, y, z ) = { y ; z>y z ; de outra maneira Cos( x )a função trigonométrica cosseno operando em um argumento x em unidades de radianos. Floor( x ) o maior número inteiro menor ou igual a x. c+d ; b − a >= d / 2 GetCurrMsb( a, b, c, d ) = { c − d ; a−b > d / 2 c ; de outra maneira Ln( x )o logaritmo natural de x (o logaritmo de base e, onde e é a constante de base de logaritmo natural 2,718 281 828 ...). Log2( x ) o logaritmo de base 2 de x. Log10( x ) o logaritmo de base 10 de x. x ; x <= y Min( x, y ) = { y ; x>y x ; x >= y Max( x, y ) = { y ; x<y Round( x ) = Sign( x ) * Floor( Abs( x ) + 0,5 )
1 ; x>0 Sign( x ) = { 0 ; x == 0 −1 ; x < 0 Sin( x )a função trigonométrica seno operando em um argumento x em unidades de radianos Sqrt( x ) = √x Swap( x, y ) = ( y, x ) Tan( x )a função trigonométrica tangente operando em um argumento x em unidades de radianos Ordem de precedência de operação
[0186] Quando uma ordem de precedência em uma expressão não é indicada explicitamente pelo uso de parênteses, as seguintes regras se aplicam: – Operações de uma precedência mais alta são avaliadas antes de qualquer operação de uma precedência mais baixa. – Operações da mesma precedência são avaliadas sequencialmente da esquerda para a direita.
[0187] A tabela abaixo especifica a precedência de operações da mais alta para a mais baixa; uma posição mais alta na tabela indica uma precedência mais alta.
[0188] Para aqueles operadores que também são usados na linguagem de programação C, a ordem de precedência usada nesse Relatório é a mesma usada na linguagem de programação C. Tabela: Precedência de operação da mais alta (no topo da tabela) para a mais baixa (na parte inferior da tabela) operações (com operandos x, y, e z) "x++", "x−−" "!x", "−x" (como um operador de prefixo unário) xy x "x*y", "x/y", "x÷y", "y", "x%y" "x+y", "x−y" (como um operador de dois argumentos), y "  f( i ) " i=x "x<<y", "x>>y"
"x<y", "x<=y", "x>y", "x>=y" "x==y", "x!=y" "x e y" "x|y" "x&&y" "x||y" "x?y:z" "x..y" "x=y", "x+=y", "x−=y" Descrição de texto de operações lógicas
[0189] No texto, uma declaração de operações lógicas como seria descrito matematicamente na seguinte forma: se(condição 0) declaração 0 ou se( condição 1 ) declaração 1 ... ou /* observação informativa sobre condição restante */ declaração n pode ser descrita como a seguir: ... da seguinte forma / ... aplica-se o seguinte: - Se condição 0, declaração 0 - De outra maneira, se condição 1, declaração 1 - ... - De outra maneira (observação informativa sobre condição restante), declaração n
[0190] Cada declaração "Se ... De outra maneira, se ... De outra maneira, ..." no texto é introduzida com "... como a seguir" ou "... o seguinte se aplica" imediatamente seguida por "Se. .. ". A última condição do "Se ... De outra maneira, se ... De outra maneira, ..." é sempre um "De outra maneira, ...". As declarações intercaladas "Se ... De outra maneira, se ... De outra maneira, ..." podem ser identificadas pareando-se "... como a seguir" ou "... o seguinte se aplica" com a finalização "De outra maneira, ...".
[0191] No texto, uma declaração de operações lógicas como seria descrita matematicamente na seguinte forma: se (condição 0a && condição 0b) declaração 0 ou então se (condição 1a || condição 1b) declaração 1 ... ou então declaração n pode ser descrita como a seguir: ... como a seguir / ... aplica-se o seguinte: - Se todas as seguintes condições forem verdadeiras, declaração 0: - condição 0a - condição 0b - De outra maneira, se uma ou mais das seguintes condições forem verdadeiras, declaração 1: - condição 1a - condição 1b - ... - De outra maneira, declaração n
[0192] No texto, uma declaração de operações lógicas como seria descrita matematicamente na seguinte forma: se (condição 0) declaração 0 se (condição 1) declaração 1 pode ser descrita da seguinte maneira: Quando condição 0, declaração 0 Quando condição 1, declaração 1 pode ser descrita da seguinte maneira: Quando condição 0, declaração 0 Quando condição 1, declaração 1
[0193] Modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções descritas no presente documento, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implantadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implantadas em software, as funções podem ser armazenadas em uma mídia legível por computador ou transmitidas por mídias de comunicação como uma ou mais instruções ou código e executadas por uma unidade de processamento com base em hardware. Mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, que correspondem a uma mídia tangível tal como mídias de armazenamento de dados, ou mídias de comunicação incluindo qualquer mídia que facilita transferência de um programa de computador de um lugar para um outro, por exemplo, de acordo com um protocolo de comunicação. Dessa maneira, mídias legíveis por computador de modo geral pode 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 tal como um sinal ou onda portadora. 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, código e/ou estruturas de dados para implantação das técnicas descritas nessa revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0194] 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 pode ser usada para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessada por um computador. Além disso, qualquer conexão é apropriadamente denominada uma mídia legível por computador. Por exemplo, se instruções são transmitidas a partir de um site da web, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fio tais como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio tais como infravermelho, rádio, e micro-ondas estão incluídos na definição de mídia. Deve ser entendido, no entanto, que mídias de armazenamento legíveis por computador e 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 tangíveis, não transitórias. Disco magnético e disco óptico, conforme usado no presente documento, inclui disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, onde os discos magnéticos de modo geral reproduzem dados magneticamente, enquanto os discos ópticos reproduzem dados opticamente com lasers. Combinações destes acima também devem ser incluídas no escopo de mídias legíveis por computador.
[0195] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis por campo (FPGAs), ou outros conjuntos de circuitos lógicos integrados ou discretos equivalentes. Consequentemente, o termo "processador", conforme usado no presente documento, pode se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para implantação das técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida em módulos de hardware e/ou software dedicados 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.
[0196] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um fone 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 aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não necessariamente exigem 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 interoperacionais, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.

Claims (18)

REIVINDICAÇÕES
1. Método de codificação de dados de vídeo em um fluxo de bits (21), o método compreendendo usar uma primeira técnica e/ou uma segunda técnica, CARACTERIZADO pelo fato de que a primeira técnica (S101) compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco; e a segunda técnica (S103) compreende predição de múltiplas hipóteses para modo intra e inter; em que o método compreende, para um bloco de codificação: transmitir (S107, S109) uma primeira flag de controle no fluxo de bits (21), em que a primeira flag de controle indica se usa a primeira técnica (S101); e dependendo se a primeira técnica é usada (S101) para o bloco de codificação, transmitir (S105, S109) ou não transmitir uma segunda flag de controle no fluxo de bits (21), em que a segunda flag de controle indica se usa a segunda técnica (S103).
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a segunda flag de controle é transmitida se e somente se a primeira técnica não for usada (S101: Não) para o bloco de codificação.
3. Método, de acordo com a reivindicação 1 ou 2, CARACTERIZADO pelo fato de que se o bloco de codificação estiver codificado em modo de fusão, a segunda flag de controle é transmitida.
4. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que se o bloco de codificação não estiver codificado em modo de fusão, a segunda flag de controle não é transmitida.
5. Método, de acordo com qualquer uma das reivindicações 1 a 3, CARACTERIZADO pelo fato de que se o bloco de codificação estiver codificado em modo de salto, a segunda flag de controle é transmitida.
6. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que se o bloco de codificação não estiver codificado em modo de salto ou em modo de fusão, a segunda flag de controle não é transmitida.
7. Método de decodificação de dados de vídeo recebidos em um fluxo de bits (21), CARACTERIZADO pelo fato de que o método compreende usar uma primeira técnica (S209) e/ou uma segunda técnica (S211), em que a primeira técnica (S209) compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco; e a segunda técnica (S211) compreende predição de múltiplas hipóteses para modo intra e inter; em que o método compreende, para um bloco de codificação: receber (S201) uma primeira flag de controle a partir do fluxo de bits (21), em que a primeira flag de controle indica se usa (S205) a primeira técnica (S209); e dependendo se a primeira técnica é usada (S209) para o bloco de codificação, receber (S201, S203) uma segunda flag de controle a partir do fluxo de bits (21), em que a segunda flag de controle indica se usa (S203) a segunda técnica.
8. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que, somente se a primeira técnica não for usada, a segunda flag de controle é recebida.
9. Método, de acordo com a reivindicação 7 ou 8, CARACTERIZADO pelo fato de que, se o bloco de codificação estiver codificado em modo de fusão, a segunda flag de controle é recebida.
10. Método, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que, se o bloco de codificação não estiver codificado em modo de fusão, a segunda flag de controle não é recebida.
11. Método, de acordo com qualquer uma das reivindicações 7 a 9, CARACTERIZADO pelo fato de que, se o bloco de codificação estiver codificado em modo de salto, a segunda flag de controle é recebida.
12. Método, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que, se o bloco de codificação não estiver codificado em modo de salto ou em modo de fusão, a segunda flag de controle não é recebida.
13. Codificador, CARACTERIZADO pelo fato de que compreende circuitos de processamento (46) para realizar o método conforme definido em qualquer uma das reivindicações 1 a 6.
14. Decodificador, CARACTERIZADO pelo fato de que compreende circuitos de processamento (46) para realizar o método conforme definido em qualquer uma das reivindicações 7 a 12.
15. Programa de computador, CARACTERIZADO pelo fato de que compreende código de programa para realizar um método conforme definido em qualquer uma das reivindicações 1 a 12 quando executado em um computador (20, 30) ou em um processador (43, 430, 502).
16. Fluxo de bits codificados de dados de um vídeo, CARACTERIZADO pelo fato de que compreende multiplicar elementos de sintaxe que incluem uma primeira flag de controle, e uma segunda flag sendo condicionalmente sinalizada com base na primeira flag de controle, a primeira flag de controle indica que se uma primeira técnica for usada, em que, a primeira técnica (S101) compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco; e a segunda flag de controle indica que se uma segunda técnica for usada, em que, a segunda técnica (S103) compreende predição de múltiplas hipóteses para modo intra e inter.
17. Mídia de armazenamento de computação, CARACTERIZADA pelo fato de armazenar um fluxo de bits decodificado por um dispositivo de decodificação de vídeo, o fluxo de bits compreende um número de blocos de codificação de uma imagem ou sinal de vídeo, e um número de elementos de sintaxe que incluem uma primeira flag de controle, e uma segunda flag sendo condicionalmente sinalizada com base na primeira flag de controle, a primeira flag de controle indica que se uma primeira técnica for usada, em que, a primeira técnica (S101) compreende usar uma lista de fusão separada para candidatos de fusão de sub-bloco; e a segunda flag de controle indica que se uma segunda técnica for usada, em que, a segunda técnica (S103) compreende predição de múltiplas hipóteses para modo intra e inter.
18. Mídia de armazenamento legível por computador não transitória, CARACTERIZADA pelo fato de armazenar informações de vídeo geradas usando-se qualquer um dos métodos de codificação conforme definidos nas reivindicações 1 a 6 das reivindicações pendentes.
Dispositivo de origem Dispositivo de destino ϭϮ ϭϰ Fonte de imagem Dispositivo de exibição Petição 870210043914, de 14/05/2021, pág. 64/72 ϭϲ ϯϰ dados de imagem dados de imagem ϭϳ pós-processados ϯϯ Pré-processador Pós-processador ϭϴ ϯϮ dados de imagem dados de imagem ϭͬϴ pré-processados ϭϵ decodificados ϯϭ Codificador Decodificador ϮϬ ϯϬ dados de imagem canal de dados de imagem codificados Ϯϭ comunicação codificados Ϯϭ Interface de ϭϯ Interface de comunicação comunicação
ϮϮ Ϯϴ ϭϬ &ŝŐ͘ϭ
Dispositivo(s) de Antena Geração de
Imagem 41 Petição 870210043914, de 14/05/2021, pág. 65/72 Circuitos de processamento Codificador Decodificador de Vídeo de Vídeo Ϯͬϴ processador(es) Repositório(s) em Dispositivo de Memória Exibição Sistema de Codificação de Vídeo &ŝŐ͘ ϭ imagem ϭϳ bloco de unidade de cálculo imagem ϮϬϯ bloco residual ϮϬϱ residualϮϬϰ н
Ͳ Petição 870210043914, de 14/05/2021, pág. 66/72 ϮϲϬ bloco de entrada ϮϬϭ ϮϬϲ predição Ϯϲϱ Unidade de Unidade de seleção de modo processamento de transformada coeficientes de transformada ϮϬϳ ϮϲϮ
ϮϬϴ Ϯϰϰ Unidade de Unidade de quantização predição ϮϳϬ saída ϮϳϮ inter Unidade de coeficientes Unidade de ϯͬϴ particionamento Ϯϱϰ quantizados ϮϬϵ codificação de Unidade de entropia dados de predição imagem intra Elementos de Unidade de ϮϭϬ codificados Ϯϭ sintaxe Ϯϲϲ quantização inversa imagem coeficientes decodificada desquantizados Ϯϭϭ Ϯϯϭ ϮϭϮ Unidade de processamento de transformada inversa Buffer de Imagem Filtro н Decodificada Loop Bloco residual unidade de reconstruído Ϯϭϯ bloco ϮϮϬ bloco reconstrução Ϯϭϰ ϮϯϬ Codificador ϮϬ filtradoϮϮϭ reconstruído Ϯϭϱ &ŝŐ͘Ϯ dados de imagem codificados Ϯϭ ϯϬϰ ϯϬϮ Unidade de decodificação de entropia Elementos de
Petição 870210043914, de 14/05/2021, pág. 67/72 sintaxe ϯϲϲ coeficientes quantizados ϯϬϵ ϯϰϰ Unidade de seleção de Unidade de ϯϲϬ modo predição imagem inter decodificada ϯϱϰ bloco de ϯϯϭ predição ϯϲϱ ϰͬϴ
Unidade de predição intra ϯϭϬ Unidade de quantização inversa coeficientes desquantizados ϯϭϭ ϯϭϮ Unidade de processamento ϯϯϬ de transformada inversa Buffer de Filtro Imagem н Loop Decodificada bloco residual imagem unidade de reconstruídoϯϭϯ decodificada ϯϮϬ reconstrução ϯϭϰ ϯϯϭ bloco bloco Decodificador ϯϬ filtrado ϯϮϭ reconstruído ϯϭϱ saída ϯϯϮ &ŝŐ͘ϯ
Dispositivo de Codificação de Vídeo Petição 870210043914, de 14/05/2021, pág. 68/72
Processador
Módulo de ϱͬϴ Codificação 7[5[ 7[5[
Memória Portas a Portas a &ŝŐ͘ϰ Montante Jusante
Petição 870210043914, de 14/05/2021, pág. 69/72 352&(66$'25 VIS25
'$'26 ϲͬϴ $3/,&$7,92« $3/,&$7,92&2',),&$d­2'(9Ë'(2 $3/,&$7,92«1 6,67(0$23(5$&,21$/
&ŝŐ͘ϱ
Iniciar codificação
^ϭϬϭ ^ϭϬϯ
Sim Usar lista de fusão Não Usar múltiplas Não
Petição 870210043914, de 14/05/2021, pág. 70/72 separada? hipóteses? ^ϭϬϱ Sim
Gerar ŵŚͺŝŶƚƌĂͺĨůĂŐ
^ϭϬϳ
Gerar ŵĞƌŐĞͺƐƵďďůŽĐŬͺĨůĂŐ ϳͬϴ
^ϭϬϵ
Gerar fluxo de bits
Terminar codificação
&ŝŐ͘ϲ
Iniciar decodificação
^ϮϬϭ
Analisar fluxo de bits
Petição 870210043914, de 14/05/2021, pág. 71/72 ^ϮϬϯ ^ϮϬϰ Analisar Existe Não ŵĞƌŐĞͺƐƵďďůŽĐŬͺ ŵŚͺŝŶƚƌĂͺĨůĂŐ͍ ĨůĂŐ ^ϮϬϱ Sim Usar lista de fusão Eão ^ϮϬϳ separada? ϴͬϴ
Eão Usar múltiplas hipóteses? Sim ^ϮϬϵ
Sim Usar lista de fusão separada ^Ϯϭϭ Usar múltiplas hipóteses
Terminar decodificação
&ŝŐ͘ϳ
BR112021007509-7A 2018-10-27 2019-10-25 lista de mesclagem separada para candidatos de mesclagem de sub-bloco e harmonização de técnicas intra-inter para codificação de vídeo BR112021007509A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862751552P 2018-10-27 2018-10-27
US62/751,552 2018-10-27
PCT/RU2019/050201 WO2020085956A1 (en) 2018-10-27 2019-10-25 Separate merge list and intra-inter techniques harmonization for video coding

Publications (1)

Publication Number Publication Date
BR112021007509A2 true BR112021007509A2 (pt) 2021-07-27

Family

ID=70331984

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021007509-7A BR112021007509A2 (pt) 2018-10-27 2019-10-25 lista de mesclagem separada para candidatos de mesclagem de sub-bloco e harmonização de técnicas intra-inter para codificação de vídeo

Country Status (11)

Country Link
US (3) US11381843B2 (pt)
EP (1) EP3861724A4 (pt)
JP (3) JP7132436B2 (pt)
KR (2) KR20230128587A (pt)
CN (2) CN113473134B (pt)
AU (2) AU2019368125B2 (pt)
BR (1) BR112021007509A2 (pt)
CA (1) CA3117627A1 (pt)
MX (1) MX2021004738A (pt)
SG (1) SG11202104046TA (pt)
WO (1) WO2020085956A1 (pt)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11997311B2 (en) * 2018-09-17 2024-05-28 Hfi Innovation Inc. Methods and apparatuses of combining multiple predictors for block prediction in video coding systems
KR20210084631A (ko) * 2019-01-01 2021-07-07 엘지전자 주식회사 머지 데이터에 대한 정보를 코딩하는 방법 및 장치
WO2023055147A1 (ko) * 2021-09-29 2023-04-06 주식회사 윌러스표준기술연구소 Mhp(multi-hypothesis prediction)모드에 기초한 비디오 신호 처리 방법 및 이를 위한 장치

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2461978C2 (ru) * 2007-10-25 2012-09-20 Ниппон Телеграф Энд Телефон Корпорейшн Способ масштабируемого кодирования и способ масштабируемого декодирования видеоинформации, устройства для них, программы для них и носитель записи, на котором записаны программы
EP2269379B1 (en) * 2008-04-11 2019-02-27 InterDigital Madison Patent Holdings Methods and apparatus for template matching prediction (tmp) in video encoding and decoding
KR102108078B1 (ko) * 2010-05-26 2020-05-08 엘지전자 주식회사 비디오 신호의 처리 방법 및 장치
CN103155568B (zh) * 2010-07-08 2016-07-27 杜比实验室特许公司 用于使用参考处理信号进行多层图像和视频传输的系统和方法
US9143795B2 (en) * 2011-04-11 2015-09-22 Texas Instruments Incorporated Parallel motion estimation in video coding
CN106878722B (zh) * 2011-06-24 2019-11-12 太阳专利托管公司 解码方法、解码装置、编码方法、编码装置
HUE063217T2 (hu) 2011-06-27 2024-01-28 Samsung Electronics Co Ltd Eljárás mozgásinformáció dekódolásához és kódolásához, berendezés mozgásinformáció kódolásához és számítógéppel olvasható eszköz
CN104205819B (zh) * 2012-02-01 2017-06-30 诺基亚技术有限公司 用于视频编码的方法和装置
US9635356B2 (en) * 2012-08-07 2017-04-25 Qualcomm Incorporated Multi-hypothesis motion compensation for scalable video coding and 3D video coding
WO2017197146A1 (en) * 2016-05-13 2017-11-16 Vid Scale, Inc. Systems and methods for generalized multi-hypothesis prediction for video coding
US20190335170A1 (en) * 2017-01-03 2019-10-31 Lg Electronics Inc. Method and apparatus for processing video signal by means of affine prediction
US10715827B2 (en) * 2017-01-06 2020-07-14 Mediatek Inc. Multi-hypotheses merge mode
CN111418214B (zh) * 2017-11-28 2021-06-29 华为技术有限公司 使用重建像素点的语法预测
WO2020015706A1 (en) * 2018-07-18 2020-01-23 Mediatek Inc. Method and apparatus of motion compensation bandwidth reduction for video coding system utilizing multi-hypothesis
US20200120339A1 (en) * 2018-10-11 2020-04-16 Mediatek Inc. Intra Prediction For Multi-Hypothesis
WO2020098790A1 (en) * 2018-11-16 2020-05-22 Mediatek Inc. Method and apparatus of improved merge with motion vector difference for video coding
WO2020108650A1 (en) * 2018-11-29 2020-06-04 Beijing Bytedance Network Technology Co., Ltd. Flag indication method in intra block copy mode
CN117857806A (zh) * 2018-12-07 2024-04-09 华为技术有限公司 一种编码器、解码器及去块滤波器的边界强度的对应推导方法
US11115652B2 (en) * 2018-12-07 2021-09-07 Tencent America LLC Method and apparatus for further improved context design for prediction mode and coded block flag (CBF)
US11166037B2 (en) * 2019-02-27 2021-11-02 Mediatek Inc. Mutual excluding settings for multiple tools

Also Published As

Publication number Publication date
KR20210072099A (ko) 2021-06-16
CN113473134B (zh) 2022-05-24
JP2022505893A (ja) 2022-01-14
EP3861724A4 (en) 2022-02-23
KR102573294B1 (ko) 2023-08-30
AU2019368125B2 (en) 2023-02-23
CN113170096A (zh) 2021-07-23
US11381843B2 (en) 2022-07-05
JP2022164747A (ja) 2022-10-27
WO2020085956A1 (en) 2020-04-30
KR20230128587A (ko) 2023-09-05
JP7132436B2 (ja) 2022-09-06
US20220321921A1 (en) 2022-10-06
MX2021004738A (es) 2021-06-04
JP2024052891A (ja) 2024-04-12
SG11202104046TA (en) 2021-05-28
EP3861724A1 (en) 2021-08-11
AU2019368125A1 (en) 2021-05-27
AU2023202927A1 (en) 2023-06-01
AU2023202927B2 (en) 2024-02-08
CN113473134A (zh) 2021-10-01
US11800152B2 (en) 2023-10-24
US20240015334A1 (en) 2024-01-11
US20210266602A1 (en) 2021-08-26
CA3117627A1 (en) 2020-04-30
JP7448602B2 (ja) 2024-03-12

Similar Documents

Publication Publication Date Title
BR112021000935A2 (pt) codificador, decodificador e métodos correspondentes usando buffer dedicado de ibc e atualização de valor padrão para componente luma e croma
US11985305B2 (en) Encoder, a decoder and corresponding methods using for IBC merge list
BR112021007592A2 (pt) método e aparelho para determinar informações de movimento para um bloco atual, método e aparelho para construir e atualizar uma lista de preditores de vetor de movimento baseada em histórico, e meio de armazenamento legível por computador não transitório, e métodos e aparelho de codificação/decodificação de vídeo
BR112021016677A2 (pt) Método e aparelho para predição inter baseada em afim de sub-blocos de croma
AU2023202927B2 (en) Separate merge list for subblock merge candidates and intra-inter techniques harmonization for video coding
BR112021016270A2 (pt) Método de codificação de vídeo e codificador, decodificador, meio legível por computador
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
US11546626B2 (en) Encoder, a decoder and corresponding methods using IBC merge list
BR122023021035A2 (pt) Método de compactação do vetor de movimento, meio de armazenamento legível por computador não transitório, codificador, decodificador e meio de armazenamento
BR112021013565A2 (pt) Codificador, decodificador, meio legível por computador não transitório e método de codificação de vídeo de um bloco de uma imagem
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
EP4029249A2 (en) Method of generating weighting masks
BR112020026183A2 (pt) Método de codificação de vídeo, codificador, decodificador e produto de programa de computador
EP4022908A1 (en) Method and apparatus of simplified geometric merge mode for inter prediction