BR122023025769A2 - Filtragem loop adaptativa de componente cruzado para codificação de vídeo - Google Patents

Filtragem loop adaptativa de componente cruzado para codificação de vídeo Download PDF

Info

Publication number
BR122023025769A2
BR122023025769A2 BR122023025769-3A BR122023025769A BR122023025769A2 BR 122023025769 A2 BR122023025769 A2 BR 122023025769A2 BR 122023025769 A BR122023025769 A BR 122023025769A BR 122023025769 A2 BR122023025769 A2 BR 122023025769A2
Authority
BR
Brazil
Prior art keywords
alf
syntax element
enabled
syntax
component
Prior art date
Application number
BR122023025769-3A
Other languages
English (en)
Inventor
Anand Meher Kotra
Semih ESENLIK
Elena Alexandrovna Alshina
Han Gao
Biao Wang
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 BR122023025769A2 publication Critical patent/BR122023025769A2/pt

Links

Abstract

“FILTRAGEM LOOP ADAPTATIVA DE COMPONENTE CRUZADO PARA CODIFICAÇÃO DE VÍDEO” Um método em uma codificação de imagem e/ou uma decodificação de imagem é fornecido, no qual entradas de cabeçalho de imagem para CCALF são introduzidas as quais definem os dados de CCALF comuns e todas as fatias podem então herdar essas informações comuns. O overhead de sinalização, em particular, o overhead do cabeçalho de fatia (em termos de número de bits) é reduzido.

Description

CAMPO TÉCNICO
[0001] Modalidades do presente pedido (revelação) geralmente se referem ao campo de processamento de imagem e, mais particularmente, a um filtro loop adaptativo de componente cruzado (CC-ALF) como um filtro in-loop ou como um filtro post-loop e sintaxe de alto nível para ALF de Componente Cruzado (CCALF).
FUNDAMENTOS
[0002] Codificação de imagem (codificação e decodificação) é usada em uma ampla gama de aplicações de imagem digital, por exemplo, broadcast de TV digital, transmissão de vídeo pela Internet e redes móveis, aplicações de conversação em tempo real, como chat de vídeo, videoconferência, DVD e discos Blu-ray, sistemas de aquisição e edição de conteúdo de vídeo, e filmadoras de aplicações de segurança.
[0003] Desde o desenvolvimento da abordagem de codificação de vídeo híbrido baseada em bloco no padrão H.261 em 1990, novas técnicas e ferramentas de codificação de vídeo foram desenvolvidas e formaram a base para novos padrões de codificação de vídeo. Um dos objetivos da maioria dos padrões de codificação de vídeo era obter uma redução na taxa de bits em comparação com seu antecessor sem sacrificar a qualidade da imagem. Outros padrões de codificação de vídeo incluem vídeo MPEG-1, vídeo MPEG-2, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), ITU-T H.265, Codificação de Vídeo de Alta Eficiência (HEVC), ITU-T H.266/Codificação de Vídeo Versátil (VVC) e extensões, por exemplo, escalabilidade e/ou extensões tridimensionais (3D), desses padrões.
[0004] Esquemas de codificação de imagem baseados em blocos têm em comum que ao longo das bordas de bloco, artefatos de borda podem aparecer. Esses artefatos são devidos à codificação independente dos blocos de codificação. Esses artefatos de borda geralmente são facilmente visíveis para um usuário. Um objetivo na codificação de imagem baseada em bloco é reduzir os artefatos de borda abaixo de um limiar de visibilidade. Isso é feito executando filtragem loop, como filtro de desblocagem, SAO e filtro loop adaptativo (ALF). A ordem do processo de filtragem é o filtro de desblocagem, depois SAO e depois ALF. Além disso, o filtro loop adaptativo de componente cruzado (CC-ALF) é adicionalmente usado.
[0005] Especialmente para filtro loop adaptativo de componente cruzado (CC-ALF), os valores de amostra de luma são usados para refinar cada componente de croma. O processo precisa ser feito em ambos os componentes Cb e Cr, a filtragem loop adaptativa de componente cruzado pode ser computacionalmente complexa e, portanto, pode adicionar latência de pipeline adicional, especialmente para implementações de hardware.
SUMÁRIO
[0006] Em vista dos desafios mencionados acima, a presente revelação visa melhorar a filtragem loop adaptativa de componente cruzado e os elementos de sintaxe para CCALF. A presente revelação pode, entre outros, pertencer ao objetivo de fornecer um aparelho, um codificador, um decodificador e métodos correspondentes que podem realizar filtragem loop adaptativa de componente cruzado com overhead de sinalização reduzido, particularmente, o overhead do cabeçalho de fatia (em termos de número de bits) pode ser reduzido, assim a filtragem pode ser mais eficiente.
[0007] Exemplos da presente revelação fornecem aparelhos e métodos para codificar e decodificar uma imagem que pode melhorar o desempenho de codificação, melhorando assim a eficiência de codificação de um sinal de vídeo. A revelação é elaborada nos exemplos e reivindicações contidos neste arquivo.
[0008] Modalidades do presente pedido fornecem aparelhos e métodos para codificação e decodificação de acordo com as reivindicações independentes, assim a complexidade do ALF de Componente Cruzado pode ser reduzida e o desempenho do filtro loop adaptativo de componente cruzado (CC-ALF) como um filtro in-loop ou como filtro post-loop, respectivamente, podem ser melhorados.
[0009] Os objetivos anteriores e outros podem ser alcançados pelo objeto das reivindicações independentes. Formas de implementação adicionais são evidentes nas reivindicações dependentes, na descrição e nas figuras.
[0010] Modalidades particulares são descritas nas reivindicações independentes anexas, com outras modalidades nas reivindicações dependentes.
[0011] De acordo com um primeiro aspecto, a revelação se refere a um método de codificação implementado por um dispositivo de codificação, compreendendo: realizar um processo de filtragem (como um processo de filtragem de componente cruzado) aplicando um filtro loop adaptativo de componente cruzado (CC-ALF); gerar um fluxo de bits incluindo uma pluralidade de elementos de sintaxe relacionados a CC-ALF (como M elementos de sintaxe relacionados a CC-ALF e M>=1 e M é um número inteiro), em que a pluralidade de elementos de sintaxe relacionados a CC-ALF indica as informações relacionadas a CC- ALF, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é sinalizada em qualquer um ou mais dentre um nível de conjunto de parâmetros de vídeo (VPS), um nível de conjunto de parâmetros de sequência (SPS), um nível de conjunto de parâmetros de imagem (PPS), um cabeçalho de imagem, um cabeçalho de fatia ou um cabeçalho de tile; ou em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é sinalizada em um nível de conjunto de parâmetros de sequência (SPS) e/ou um cabeçalho de imagem.
[0012] Este fluxo de bits pode ser reduzido em tamanho enquanto fornece informações relevantes na estrutura do fluxo de bits para os níveis em que este pedido é realmente aplicado ou a que pertence, e permite realizar filtragem loop adaptativa de componente cruzado com overhead de sinalização reduzido, assim a filtragem pode ser mais eficiente, e a melhoria de eficiência de codificação é alcançada.
[0013] De acordo com um segundo aspecto, a revelação se refere a um método de decodificação implementado por um dispositivo de decodificação, compreendendo: analisar um ou mais elementos de sintaxe a partir de um fluxo de bits de um sinal de vídeo, em que os elementos de sintaxe indicam informações relacionadas ao Filtro loop Adaptativo de Componente Cruzado (CC-ALF), em que os elementos de sintaxe são obtidos a partir de qualquer um ou mais dentre um nível de conjunto de parâmetros de vídeo (VPS), um nível de conjunto de parâmetros de sequência (SPS), um nível de conjunto de parâmetros de imagem (PPS), um cabeçalho de imagem, um cabeçalho de fatia ou um cabeçalho de tile do fluxo de bits; ou em que os elementos de sintaxe são obtidos a partir de um nível de conjunto de parâmetros de sequência (SPS) e/ou um cabeçalho de imagem; e realizar um processo de filtragem (como um processo de filtragem de componente cruzado) aplicando um CC-ALF com base nos elementos de sintaxe ou com base no valor dos elementos de sintaxe.
[0014] Este método pode permitir obter informações relevantes a partir do fluxo de bits durante a decodificação, em que o fluxo de bits é reduzido em tamanho, permitindo uma melhor compressão de dados, e permite realizar filtragem loop adaptativa de componente cruzado com overhead de sinalização reduzido, portanto, a filtragem pode ser mais eficiente, e a melhoria de eficiência de codificação é alcançada.
[0015] De acordo com um terceiro aspecto, a invenção se refere a um aparelho para decodificação de dados de vídeo. O aparelho compreende: circuitos de processamento para realizar o método de acordo com o primeiro aspecto da revelação.
[0016] De acordo com um quarto aspecto, a invenção se refere a um aparelho para codificação de dados de vídeo. O aparelho compreende: circuitos de processamento para realizar o método de acordo com o segundo aspecto da revelação.
[0017] O método de acordo com o primeiro aspecto da presente revelação pode ser realizado pelo aparelho de acordo com o terceiro aspecto da revelação. Recursos e formas de implementação adicionais do método de acordo com o terceiro aspecto da revelação correspondem aos recursos e formas de implementação do aparelho de acordo com o primeiro aspecto da revelação.
[0018] O método de acordo com o segundo aspecto da revelação pode ser realizado pelo aparelho de acordo com o quarto aspecto da invenção. Recursos e formas de implementação adicionais do método de acordo com o quarto aspecto da revelação correspondem aos recursos e formas de implementação do aparelho de acordo com o segundo aspecto da revelação.
[0019] De acordo com um quinto aspecto, a revelação se refere a um aparelho para decodificar um fluxo de vídeo que inclui um processador e uma memória. A memória está armazenando instruções que fazem com que o processador realize o método de acordo com o primeiro aspecto.
[0020] De acordo com um sexto aspecto, a revelação se refere a um aparelho para codificar um fluxo de vídeo que inclui um processador e uma memória. A memória está armazenando instruções que fazem com que o processador realize o método de acordo com o segundo aspecto.
[0021] De acordo com um sétimo aspecto, é proposto uma mídia de armazenamento legível por computador tendo nela armazenadas instruções que, quando executadas, fazem com que um ou mais processadores sejam configurados para codificar dados de vídeo. As instruções fazem com que um ou mais processadores realizem um método de acordo com o primeiro ou segundo aspecto ou qualquer modalidade possível do primeiro ou segundo aspecto.
[0022] De acordo com um oitavo aspecto, a revelação se refere a um programa de computador compreendendo código de programa para realizar o método de acordo com o primeiro ou segundo aspecto ou qualquer modalidade possível do primeiro ou segundo aspecto quando executado em um computador.
[0023] A presente revelação fornece um método de codificação implementado por um dispositivo de codificação, o método compreendendo: aplicar um filtro loop adaptativo de componente cruzado, CC-ALF para refinar um componente de croma; gerar um fluxo de bits incluindo uma pluralidade de elementos de sintaxe relacionados a ALF (elementos de sintaxe relacionados a CC-ALF, usados abaixo), em que a pluralidade de elementos de sintaxe relacionados a CC-ALF indica informações relacionadas a ALF (informações relacionadas a CC- ALF, usadas abaixo); em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é sinalizada em qualquer um ou mais dentre um nível de conjunto de parâmetros de sequência (SPS), um cabeçalho de imagem ou um cabeçalho de fatia; em que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um primeiro elemento de sintaxe que indica se um filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o primeiro elemento de sintaxe é sinalizado no nível de SPS, e um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS.
[0024] Embora seja geralmente especificado aqui que um primeiro e um segundo elemento de sintaxe são sinalizados no nível de SPS, isso não significa que a sinalização de pelo menos o segundo elemento de sintaxe seja incondicional. Em vez disso, esta modalidade também abrange realizações em que o segundo elemento de sintaxe é sinalizado, por exemplo, com base em um valor do primeiro elemento de sintaxe e/ou dependendo de um valor de outro elemento de sintaxe como será adicionalmente descrito abaixo.
[0025] O primeiro elemento de sintaxe pode ser chamado de sps_alf_enabled_flag a seguir, enquanto o segundo elemento de sintaxe pode ser chamado de sps_ccalf_enabled_flag. Esta é, no entanto, apenas uma nomenclatura usada aqui. A invenção não está limitada a um nome específico do primeiro ou segundo elemento de sintaxe ou qualquer outro elemento de sintaxe aqui referido.
[0026] Pode ser entendido que CC-ALF é um tipo especial de ALF, CC-ALF pode depender se ALF está habilitado ou não, portanto, o primeiro elemento de sintaxe, ou seja, sps_alf_enabled_flag também está relacionado a CC-ALF e, portanto, elementos de sintaxe relacionados a CC-ALF podem ser usados abaixo. Da mesma forma, as informações indicadas pelo primeiro elemento de sintaxe, ou seja, sps_alf_enabled_flag também estão relacionadas a CC-ALF, portanto, informações relacionadas a CC-ALF podem ser usadas abaixo.
[0027] As informações que podem ser usadas, por exemplo, para todas as imagens em uma sequência podem, assim, ser sinalizadas de forma eficiente no nível de SPS, reduzindo o tamanho do fluxo de bits, reduzindo a quantidade de informações redundantes, e permite realizar filtragem loop adaptativa de componente cruzado com overhead de sinalização reduzido, assim a filtragem pode ser mais eficiente e a melhoria de eficiência de codificação é alcançada.
[0028] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um terceiro elemento de sintaxe quando o segundo elemento de sintaxe indica que CC-ALF está habilitado, em que o terceiro elemento de sintaxe é sinalizado no cabeçalho de imagem e o terceiro elemento de sintaxe indica se CC-ALF é habilitado para uma imagem atual compreendendo uma pluralidade de fatias.
[0029] Este terceiro elemento de sintaxe também pode ser referido como pic_ccalf_enabled_flag. Com esta modalidade, as informações de CC-ALF relevantes relativas a uma imagem completa podem ser sinalizadas mantendo o tamanho do fluxo de bits pequeno. Em um exemplo, Fatia 1.. Fatia N compartilham as mesmas informações de CCALF, portanto, as informações comuns podem ser herdadas diretamente do cabeçalho de imagem em vez de cada cabeçalho de fatia transmitindo-as de forma redundante.
[0030] Em uma modalidade adicional, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um quarto elemento de sintaxe quando o segundo elemento de sintaxe indica que CC-ALF está habilitado, em que o quarto elemento de sintaxe é sinalizado no cabeçalho de imagem e o quarto elemento de sintaxe indica se CC-ALF para um componente de cor Cb é habilitado para uma imagem atual de uma sequência de vídeo associada ao fluxo de bits.
[0031] O quarto elemento de sintaxe pode, por exemplo, ser indicado com pic_cross_component_alf_cb_enabled_flag. No entanto, isso não é obrigatório. O quarto elemento de sintaxe pode sinalizar eficientemente CC-ALF para um componente de cor Cb, mantendo a quantidade de informações redundantes, por exemplo, em um cabeçalho de fatia, pequena.
[0032] Pode ser adicionalmente fornecido que, se o quarto elemento de sintaxe tiver um valor de 1, isso indica que CC-ALF para o componente de cor Cb está habilitado para a imagem atual e/ou se o quarto elemento de sintaxe tiver um valor de 0, ele indica que CC-ALF para o componente de cor Cb está desabilitado para a imagem atual.
[0033] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um quinto elemento de sintaxe quando o quarto elemento de sintaxe indica que CC-ALF para o componente de cor Cb está habilitado para a imagem atual, em que o quinto elemento de sintaxe é sinalizado no cabeçalho de imagem e o quinto elemento de sintaxe indica um conjunto de parâmetros ao qual o componente de cor Cb de todas as fatias na imagem atual se refere. Este elemento de sintaxe pode ser indicado com pic_cross_component_alf_cb_aps_id. Isso, no entanto, é apenas uma nomenclatura e não é interpretado para limitar a presente revelação. Esta modalidade pode permitir conjuntos de parâmetros de sinalização que são fornecidos para todas as fatias de uma imagem já em um nível de imagem, reduzindo assim a quantidade de informações redundantes.
[0034] Pode ser adicionalmente fornecido que a pluralidade de elementos de sintaxe associados a CC-ALF compreende um sétimo elemento de sintaxe quando o segundo elemento de sintaxe indica que CC-ALF está habilitado, em que o sétimo elemento de sintaxe é sinalizado no cabeçalho de imagem e o sétimo elemento de sintaxe especifica se CC-ALF para um componente de cor Cr está habilitado para uma imagem atual de uma sequência de vídeo associada ao fluxo de bits. Este elemento de sintaxe pode, por exemplo, ser indicado com pic_cross_component_alf_cr_enabled_flag sem que isso limite a presente revelação. Com este elemento de sintaxe, a habilitação de CC-ALF para componentes de cor Cr pode ser sinalizada de forma confiável.
[0035] Pode ser adicionalmente fornecido que, se o sétimo elemento de sintaxe tiver um valor de 1, isso indica que CC-ALF para o componente de cor Cr está habilitado para a imagem atual e/ou se o sétimo elemento de sintaxe tiver um valor de 0, ele indica que CC-ALF para o componente de cor Cr está desabilitado para a imagem atual.
[0036] Em uma modalidade, a pluralidade de elementos de sintaxe associados a CC-ALF compreende um oitavo elemento de sintaxe quando o sétimo elemento de sintaxe indica que CC-ALF para o componente de cor Cr está habilitado para a imagem atual, em que o oitavo elemento de sintaxe é sinalizado no cabeçalho de imagem e o oitavo elemento de sintaxe indica um conjunto de parâmetros que está associado ao componente de cor Cr de todas as fatias na imagem atual. O oitavo elemento de sintaxe pode ser denotado com pic_cross_component_alf_cr_aps_id, embora este seja apenas um exemplo. Este elemento de sintaxe pode fornecer informações sobre parâmetros relevantes a serem usados durante a filtragem.
[0037] Pode ser adicionalmente fornecido que o quarto elemento de sintaxe, o quinto elemento de sintaxe, o sexto elemento de sintaxe, o sétimo elemento de sintaxe, o oitavo elemento de sintaxe e o nono elemento de sintaxe sejam sinalizados quando o terceiro elemento de sintaxe indicar que CC-ALF está habilitado para a imagem atual de uma sequência de vídeo associada ao fluxo de bits. Se o CC-ALF estiver desabilitado, esses elementos podem ser configurados para um valor padrão e ainda sinalizados no fluxo de bits. Em uma alternativa, se o CC-ALF estiver desabilitado, esses elementos de sintaxe podem não ser sinalizados no fluxo de bits, reduzindo assim seu tamanho, pois as informações que não usadas são excluídas do fluxo de bits.
[0038] Em uma outra modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo elemento de sintaxe quando o segundo elemento de sintaxe indica que CC-ALF está habilitado, em que o décimo elemento de sintaxe é sinalizado em um cabeçalho de fatia e o décimo elemento de sintaxe indica se CCALF para um componente de cor Cb é habilitado para uma fatia atual de uma imagem atual de uma sequência de vídeo associada ao fluxo de bits. Este elemento de sintaxe pode, sem a intenção de limitar a presente revelação, ser referido como slice_cross_component_alf_cb_enabled_flag. Assim, pode ser fornecida uma sinalização eficiente se CC-ALF deve ser habilitado para componentes de cor Cb.
[0039] Pode ser adicionalmente fornecido que, se o décimo elemento de sintaxe tiver um valor de 1, isso indica que o CCALF para o componente de cor Cb está habilitado para a fatia atual e/ou do décimo elemento de sintaxe tem um valor de 0, isso indica que CCALF para o componente de cor Cb está desabilitado para a fatia atual.
[0040] Em uma modalidade adicional, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo primeiro elemento de sintaxe quando o décimo elemento de sintaxe indica que CC-ALF para o componente de cor Cb está habilitado para a fatia atual, em que o décimo elemento de sintaxe é sinalizado em um cabeçalho de fatia e o décimo elemento de sintaxe especifica um conjunto de parâmetros ao qual o componente de cor Cb da fatia atual se refere. Este elemento de sintaxe pode ser indicado com pic_cross_component_alf_cb_aps_id, embora isso não se destine a limitar a presente revelação.
[0041] Em uma modalidade adicional, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo segundo elemento de sintaxe quando o segundo elemento de sintaxe indica que CC-ALF está habilitado, em que o décimo segundo elemento de sintaxe é sinalizado em um cabeçalho de fatia e o décimo segundo elemento de sintaxe indica se CCALF para um componente de cor Cr é habilitado para uma fatia atual de uma imagem atual de uma sequência de vídeo associada ao fluxo de bits. O décimo segundo elemento de sintaxe pode, por exemplo, ser indicado com slice_cross_component_alf_cr_enabled_flag.
[0042] Em uma modalidade adicional, é fornecido que, se o décimo segundo elemento de sintaxe tiver um valor de 1, isso indica que CCALF para o componente de cor Cr está habilitado para a fatia atual e/ou se o décimo segundo elemento de sintaxe tiver um valor de 0, isso indica que o CCALF para o componente de cor Cr está desabilitado para a fatia atual.
[0043] Também pode ser fornecido que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo terceiro elemento de sintaxe quando o décimo segundo elemento de sintaxe indica que CC-ALF para o componente de cor Cr está habilitado para a fatia atual, em que o décimo terceiro elemento de sintaxe é sinalizado em um cabeçalho de fatia e o décimo terceiro elemento de sintaxe especifica um conjunto de parâmetros ao qual o componente de cor Cr da fatia atual se refere. O décimo terceiro elemento de sintaxe pode, por exemplo, ser indicado com slice_cross_component_alf_cr_aps_id. Isso pode fornecer informações de forma eficiente sobre o parâmetro a ser usado para a filtragem associada ao componente de cor Cr.
[0044] Pode ser fornecido que o segundo elemento de sintaxe é sinalizado se o primeiro elemento de sintaxe tiver um primeiro valor, ou o segundo elemento de sintaxe é sinalizado condicionalmente pelo menos com base em um valor do primeiro elemento de sintaxe. Se o ALF não estiver habilitado (o que é sinalizado pelo primeiro elemento de sintaxe), o CC-ALF também não será habilitado. Ao não fornecer o segundo elemento de sintaxe neste caso, o tamanho do fluxo de bits pode ser adicionalmente reduzido.
[0045] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo quarto elemento de sintaxe que é sinalizado no nível de SPS, em que o décimo quarto elemento de sintaxe indica o tipo de entrada para o CC-ALF. O décimo quarto elemento de sintaxe pode ser indicado com ChromaArrayType, embora isso não limite a presente revelação.
[0046] Mais especificamente, o segundo elemento de sintaxe é sinalizado quando o primeiro elemento de sintaxe tem um primeiro valor e o décimo quarto elemento de sintaxe tem um segundo valor. O segundo valor pode ser qualquer valor diferente de um valor específico que indicaria que CC-ALF não deve ser habilitado.
[0047] Em outra modalidade específica, o segundo elemento de sintaxe é sinalizado quando o primeiro elemento de sintaxe tem um valor que é igual a 1 e o décimo quarto elemento de sintaxe tem um valor que não é igual a 0.
[0048] Para qualquer uma das modalidades acima, pode ser fornecido que o CC-ALF opere como parte do processo de filtro loop adaptativo e faça uso de valores de amostra de luma para refinar pelo menos um componente de croma.
[0049] A presente revelação fornece adicionalmente um método de decodificação implementado por um dispositivo de decodificação, o método compreendendo: analisar uma pluralidade de elementos de sintaxe relacionados a filtros de loop adaptativo de componente cruzado, CC-ALF, a partir de um fluxo de bits, em que a pluralidade de elementos de sintaxe, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é obtida a partir de qualquer um ou mais dentre um nível de conjunto de parâmetros de sequência (SPS), um cabeçalho de imagem ou um cabeçalho de fatia; em que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um primeiro elemento de sintaxe que indica se um filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o primeiro elemento de sintaxe é sinalizado no nível de SPS, e um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS; realizar um processo de CC-ALF usando pelo menos um dentre a pluralidade de elementos de sintaxe relacionados a CC-ALF.
[0050] Embora seja geralmente especificado aqui que um primeiro e um segundo elemento de sintaxe são fornecidos no nível de SPS, isso não significa que pelo menos o segundo elemento de sintaxe seja fornecido no fluxo de bits de maneira incondicional. Em vez disso, esta modalidade também abrange realizações em que o segundo elemento de sintaxe faz parte do fluxo de bits, por exemplo, com base em um valor do primeiro elemento de sintaxe e/ou dependendo de um valor de outro elemento de sintaxe como será adicionalmente descrito abaixo.
[0051] O primeiro elemento de sintaxe pode ser chamado de sps_alf_enabled_flag a seguir, enquanto o segundo elemento de sintaxe pode ser chamado de sps_ccalf_enabled_flag. Esta é, no entanto, apenas uma nomenclatura usada aqui. A invenção não está limitada a um nome específico do primeiro ou segundo elemento de sintaxe ou qualquer outro elemento de sintaxe aqui referido.
[0052] As informações que podem ser usadas, por exemplo, para todas as imagens em uma sequência podem, assim, ser fornecidas ao decodificador de forma eficiente no nível de SPS, reduzindo o tamanho do fluxo de bits, reduzindo a quantidade de informações redundantes, e permite executar filtragem loop adaptativa de componente cruzado com overhead de sinalização reduzido, assim a filtragem pode ser mais eficiente e a melhoria de eficiência de codificação é alcançada.
[0053] Pode ser fornecido que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um terceiro elemento de sintaxe quando o segundo elemento de sintaxe é obtido como indicando que CC-ALF está habilitado, em que o terceiro elemento de sintaxe é obtido a partir do cabeçalho de imagem e o terceiro elemento de sintaxe indica se CC-ALF está habilitado para uma imagem atual compreendendo uma pluralidade de fatias. Este terceiro elemento de sintaxe também pode ser referido como pic_ccalf_enabled_flag. Com esta modalidade, as informações de CC-ALF relevantes relativas a uma imagem completa podem ser fornecidas mantendo o tamanho do fluxo de bits pequeno.
[0054] Em uma modalidade adicional, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um quarto elemento de sintaxe quando o segundo elemento de sintaxe é obtido como indicando que CC-ALF está habilitado, em que o quarto elemento de sintaxe é obtido a partir do cabeçalho de imagem e o quarto elemento de sintaxe indica se CC-ALF está habilitado para um componente de cor Cb para uma imagem atual de uma sequência de vídeo. O quarto elemento de sintaxe pode, por exemplo, ser indicado com pic_cross_component_alf_cb_enabled_flag. No entanto, isso não é obrigatório. O quarto elemento de sintaxe pode fazer com que o decodificador habilite o CC-ALF para um componente de cor Cb, mantendo a quantidade de informações redundantes, por exemplo, em um cabeçalho de fatia, pequena.
[0055] Em uma modalidade adicional, pode ser fornecido que, se o quarto elemento de sintaxe tiver um valor de 1, isso indica que o CC-ALF para um componente de cor Cb está habilitado para a imagem atual e/ou se o quarto elemento de sintaxe tem um valor de 0, isso indica que o CC-ALF para um componente de cor Cb está desabilitado para a imagem atual.
[0056] Além disso, a pluralidade de elementos de sintaxe relacionados a CC-ALF pode compreender um quinto elemento de sintaxe quando o quarto elemento de sintaxe CC-ALF para o componente de cor Cb é habilitado para a imagem atual, em que o quinto elemento de sintaxe é obtido a partir do cabeçalho de imagem e o quinto elemento de sintaxe indica um conjunto de parâmetros que está associado ao componente de cor Cb de todas as fatias na imagem atual. Este elemento de sintaxe pode ser indicado com pic_cross_component_alf_cb_aps_id. Isso, no entanto, é apenas uma nomenclatura e não é interpretado para limitar a presente revelação. Esta modalidade pode permitir o fornecimento de conjuntos de parâmetros que são fornecidos para todas as fatias de uma imagem já no nível de imagem, reduzindo assim a quantidade de informações redundantes.
[0057] Em uma modalidade adicional, a pluralidade de elementos de sintaxe associados a CC-ALF compreende um sétimo elemento de sintaxe quando o segundo elemento de sintaxe é obtido como indicando que CC-ALF está habilitado, em que o sétimo elemento de sintaxe é obtido a partir do cabeçalho de imagem e do sétimo elemento de sintaxe especifica se CC-ALF está habilitado para um componente de cor Cr para uma imagem atual de uma sequência de vídeo associada ao fluxo de bits. Este elemento de sintaxe pode, por exemplo, ser indicado com pic_cross_component_alf_cr_enabled_flag sem que isso limite a presente revelação. Com este elemento de sintaxe, o decodificador CC-ALF pode determinar com segurança se o CC-ALF está habilitado para componentes de cor Cr.
[0058] Pode ser fornecido que, se o sétimo elemento de sintaxe tiver um valor de 1, isso indica que CC-ALF para o componente de cor Cr está habilitado para a imagem atual e/ou se o sétimo elemento de sintaxe tiver um valor de 0, isso indica que CC-ALF para o componente de cor Cr está desabilitado para a imagem atual.
[0059] Em uma modalidade adicional, a pluralidade de elementos de sintaxe associados a CC-ALF compreende um oitavo elemento de sintaxe quando o sétimo elemento de sintaxe é obtido como indicando que CC-ALF para o componente de cor Cr está habilitado para a imagem atual, em que o oitavo elemento de sintaxe é obtido a partir do cabeçalho de imagem e o oitavo elemento de sintaxe indica um conjunto de parâmetros que está associado ao componente de cor Cr de todas as fatias na imagem atual. O oitavo elemento de sintaxe pode ser denotado com pic_cross_component_alf_cr_aps_id, embora este seja apenas um exemplo. Este elemento de sintaxe pode fornecer informações sobre parâmetros relevantes a serem usados durante a filtragem.
[0060] Pode ser adicionalmente fornecido que o quarto elemento de sintaxe, o quinto elemento de sintaxe, o sexto elemento de sintaxe, o sétimo elemento de sintaxe, o oitavo elemento de sintaxe e o nono elemento de sintaxe são obtidos quando o terceiro elemento de sintaxe é obtido como indicando que CC-ALF está habilitado para a imagem atual de uma sequência de vídeo associada ao fluxo de bits.
[0061] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo elemento de sintaxe quando o segundo elemento de sintaxe é obtido como indicando que CC-ALF está habilitado, em que o décimo elemento de sintaxe é obtido a partir de um cabeçalho de fatia e o décimo elemento de sintaxe indica se CCALF para um componente de cor Cb está habilitado para uma fatia atual de uma imagem atual de uma sequência de vídeo associada ao fluxo de bits. Este elemento de sintaxe pode, sem a intenção de limitar a presente revelação, ser referido como slice_cross_component_alf_cb_enabled_flag. Assim, o decodificador pode determinar se CC-ALF deve ser habilitado para que componentes de cor Cb possam ser fornecidos.
[0062] Pode ser adicionalmente fornecido que, se o décimo elemento de sintaxe tiver um valor de 1, isso indica que o CCALF para o componente de cor Cb está habilitado para a fatia atual e/ou se o décimo elemento de sintaxe tiver um valor de 0, isso indica que CCALF para o componente de cor Cb está desabilitado para a fatia atual.
[0063] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo primeiro elemento de sintaxe quando o décimo elemento de sintaxe é obtido como indicando que CC-ALF para o componente de cor Cb está habilitado para a fatia atual, em que o décimo elemento de sintaxe é obtido a partir do cabeçalho de fatia e o décimo elemento de sintaxe especifica um conjunto de parâmetros ao qual o componente de cor Cb da fatia atual se refere. Este elemento de sintaxe pode ser indicado com pic_cross_component_alf_cb_aps_id, embora isso não se destine a limitar a presente revelação.
[0064] Pode ser fornecido que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo segundo elemento de sintaxe quando o segundo elemento de sintaxe é obtido como indicando que CC-ALF está habilitado, em que o décimo segundo elemento de sintaxe é obtido a partir do cabeçalho de fatia e o décimo segundo elemento de sintaxe indica se CCALF para um componente de cor Cr está habilitado para uma fatia atual de uma imagem atual de uma sequência de vídeo associada ao fluxo de bits. O décimo segundo elemento de sintaxe pode, por exemplo, ser indicado com slice_cross_component_alf_cr_enabled_flag.
[0065] Em uma modalidade mais específica, se o décimo segundo elemento de sintaxe tiver um valor de 1, isso indica que CCALF para o componente de cor Cr está habilitado para a fatia atual e/ou se o décimo segundo elemento de sintaxe tiver um valor de 0, isso indica que CCALF para o componente de cor Cr está desabilitado para a fatia atual.
[0066] Pode ser adicionalmente fornecido que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo terceiro elemento de sintaxe quando o décimo segundo elemento de sintaxe é obtido como indicando que CC-ALF para o componente de cor Cr está habilitado para a fatia atual, em que o décimo terceiro elemento de sintaxe é obtido a partir de um cabeçalho de fatia e o décimo terceiro elemento de sintaxe especifica um conjunto de parâmetros ao qual o componente de cor Cr da fatia atual se refere. O décimo terceiro elemento de sintaxe pode, por exemplo, ser indicado com slice_cross_component_alf_cr_aps_id. Isso pode fornecer informações de forma eficiente sobre o parâmetro a ser usado para a filtragem associada ao componente de cor Cr.
[0067] Em uma modalidade, o segundo elemento de sintaxe é obtido se o primeiro elemento de sintaxe tiver um primeiro valor, ou o segundo elemento de sintaxe for obtido pelo menos com base em um valor do primeiro elemento de sintaxe.
[0068] Pode ser adicionalmente fornecido que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um décimo quarto elemento de sintaxe que é obtido a partir do nível de SPS, em que o décimo quarto elemento de sintaxe indica o tipo de entrada para o CC-ALF. O décimo quarto elemento de sintaxe pode ser indicado com ChromaArrayType, embora isso não limite a presente revelação.
[0069] Mais especificamente, o segundo elemento de sintaxe pode ser obtido quando o primeiro elemento de sintaxe tem um primeiro valor e o décimo quarto elemento de sintaxe tem um segundo valor. Este segundo valor pode ser qualquer valor diferente de um valor que indica que CC-ALF não deve ser habilitado ou que pode ser usado para indicar isso.
[0070] Mais especificamente, pode ser fornecido que o segundo elemento de sintaxe é obtido quando o primeiro elemento de sintaxe tem um valor que é igual a 1 e o décimo quarto elemento de sintaxe tem um valor que é diferente de 0.
[0071] Para qualquer uma das modalidades acima, pode ser adicionalmente fornecido que o CC-ALF opere como parte do processo de filtro loop adaptativo e faça uso de valores de amostra de luma para refinar pelo menos um componente de croma.
[0072] A presente revelação se refere adicionalmente a um dispositivo para codificar dados de vídeo, compreendendo: uma memória de dados de vídeo; e um codificador de vídeo, em que o codificador de vídeo é configurado para: aplicar um filtro loop adaptativo de componente cruzado, CC-ALF para refinar um componente de croma; gerar um fluxo de bits incluindo uma pluralidade de elementos de sintaxe relacionados a CC-ALF, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF indica informações relacionadas a CC-ALF; em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é sinalizada em qualquer um ou mais dentre um nível de conjunto de parâmetros de sequência (SPS), um cabeçalho de imagem ou um cabeçalho de fatia; em que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um primeiro elemento de sintaxe que indica se um filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o primeiro elemento de sintaxe é sinalizado no nível de SPS, e um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS. Com isso, as vantagens dos métodos de codificação citados acima são fornecidas aos codificadores para codificação, por exemplo, de vídeos.
[0073] A presente revelação também se refere a um dispositivo para decodificação de dados de vídeo, compreendendo: uma memória de dados de vídeo; e um decodificador de vídeo, em que o decodificador de vídeo é configurado para: analisar uma pluralidade de elementos de sintaxe relacionados de filtro loop adaptativo de componente cruzado, CC-ALF, a partir de um fluxo de bits, em que a pluralidade de elementos de sintaxe, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é obtida a partir de qualquer um ou mais dentre um nível de conjunto de parâmetros de sequência (SPS), um cabeçalho de imagem ou um cabeçalho de fatia; em que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um primeiro elemento de sintaxe que indica se um filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o primeiro elemento de sintaxe é sinalizado no nível de SPS, e um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS; e realizar um processo de CC-ALF usando pelo menos um dentre a pluralidade de elementos de sintaxe relacionados a CC-ALF.
[0074] Com isso, as vantagens do tamanho reduzido do fluxo de bits são realizadas ao obter uma decodificação confiável de um vídeo.
[0075] Além disso, é fornecido um codificador para codificar um vídeo, o codificador compreendendo circuitos de processamento para realizar um método de acordo com qualquer uma das modalidades acima. Com isso, as vantagens dos métodos de codificação citados acima são fornecidas aos codificadores para codificação, por exemplo, de vídeos.
[0076] Além disso, é fornecido um decodificador para decodificar um fluxo de bits, o decodificador compreendendo circuitos de processamento para realizar um método de acordo com qualquer uma das modalidades acima. Com isso, as vantagens do tamanho reduzido do fluxo de bits são realizadas ao obter uma decodificação confiável de um vídeo.
[0077] Além disso, é fornecida nesta revelação uma mídia de armazenamento legível por computador compreendendo nela instruções executáveis por computador que, quando executadas por um dispositivo de computação, fazem o dispositivo de computação realizar um método de acordo com qualquer uma das modalidades acima.
[0078] A presente revelação fornece adicionalmente um fluxo de bits codificado para o sinal de vídeo incluindo uma pluralidade de elementos de sintaxe relacionados a CC-ALF, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF indica informações relacionadas a CC-ALF; em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é sinalizada em qualquer um ou mais dentre um nível de conjunto de parâmetros de sequência (SPS), um cabeçalho de imagem ou um cabeçalho de fatia; em que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um primeiro elemento de sintaxe que indica se um filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o primeiro elemento de sintaxe é sinalizado no nível de SPS, e um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS.
[0079] O fluxo de bits pode ser reduzido em tamanho enquanto fornece informações a serem usadas na decodificação ao aplicar CC-ALF de maneira confiável.
[0080] Os detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0081] No seguinte, modalidades da invenção são descritas em mais detalhes com referência às figuras e desenhos anexos, nos quais:
[0082] Figura 1A é um diagrama de blocos mostrando um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção;
[0083] Figura 1B é um diagrama de blocos mostrando outro exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção;
[0084] Figura 2 é um diagrama de blocos mostrando um exemplo de um codificador de vídeo configurado para implementar modalidades da invenção;
[0085] Figura 3 é um diagrama de blocos mostrando uma estrutura de exemplo de um decodificador de vídeo configurado para implementar modalidades da invenção;
[0086] Figura 4 é um diagrama de blocos ilustrando um exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0087] Figura 5 é um diagrama de blocos ilustrando outro exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0088] Figura 6 inclui Figuras 6a, 6b e 6c, em que (6a) Colocação de CC ALF em relação a outros filtros de loop (6b e 6c) Filtro em forma de diamante;
[0089] Figura 7 é um diagrama ilustrando todos os cabeçalhos de fatia que devem transmitir os dados de CCALF na técnica anterior;
[0090] Figura 8 é um diagrama ilustrando um exemplo de elementos de sintaxe melhorados do CC-ALF;
[0091] Figura 9A é um diagrama conceitual ilustrando as localizações relativas nominais verticais e horizontais de amostras de luma e croma;
[0092] Figura 9B é um diagrama esquemático ilustrando um bloco de luma colocalizado e um bloco de croma;
[0093] Figura 10 é um diagrama de blocos mostrando uma estrutura de exemplo de um sistema de abastecimento de conteúdo 3100 que realiza um serviço de entrega de conteúdo;
[0094] Figura 11 é um diagrama de blocos mostrando uma estrutura de um exemplo de um dispositivo terminal;
[0095] Figura 12 é um diagrama de blocos mostrando um exemplo de um codificador;
[0096] Figura 13 é um diagrama de blocos mostrando um exemplo de um decodificador;
[0097] Figura 14 mostra um fluxograma de um método de codificação de um vídeo de acordo com uma modalidade;
[0098] Figura 15 mostra um fluxograma de um método de decodificação de um vídeo de acordo com uma modalidade.
[0099] Figura 16 é um diagrama esquemático de uma estrutura de dados 5000, ou seja, um fluxo de bits de vídeo 500.
[0100] No seguinte, sinais de referência idênticos referem-se a recursos idênticos ou pelo menos funcionalmente equivalentes, se não for explicitamente especificado de outra forma.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0101] A seguinte definição é para a referência: bloco de codificação: Um bloco MxN de amostras para alguns valores de M e N tal que a divisão de um CTB em blocos de codificação é um particionamento. bloco de árvore de codificação (CTB): Um bloco NxN de amostras para algum valor de N tal que a divisão de um componente em CTBs seja um particionamento. unidade de árvore de codificação (CTU): Um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que possui três arranjos de amostra ou um CTB de amostras de uma imagem monocromática ou uma imagem codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. unidade de codificação (CU): Um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que possui três arranjos de amostras, ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. componente: Um arranjo ou amostra única de um dos três arranjos (luma e dois croma) que compõem uma imagem em formato de cor 4:2:0, 4:2:2 ou 4:4:4 ou o arranjo ou uma única amostra do arranjo que compõe uma imagem em formato monocromático.
[0102] Na seguinte descrição, é feita referência às figuras anexas, que fazem parte da revelação e que mostram, a título de ilustração, aspectos específicos das modalidades da invenção ou aspectos específicos em que as modalidades da presente invenção podem ser usadas. Entende-se que as modalidades da invenção podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não representadas nas figuras. A seguinte descrição detalhada, portanto, não deve ser tomada em um sentido limitante, e o escopo da presente invenção é definido pelas reivindicações anexas.
[0103] Por exemplo, entende-se que uma revelação em conexão com um método descrito também pode ser verdadeira para um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas de método específicos são descritos, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar o descrito ou a pluralidade de etapas de método (por exemplo, uma unidade realizando o ou a 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 forem explicitamente descritas ou ilustradas nas imagens. 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 de 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 forem explicitamente descritas ou ilustradas nas imagens. Além disso, entende-se que os recursos das várias modalidades exemplares e/ou aspectos descritos neste documento podem ser combinados uns com os outros, a menos que especificamente indicado de outra forma.
[0104] A codificação de vídeo normalmente se refere ao processamento de uma sequência de imagens, que formam o vídeo ou a sequência de vídeo. Em vez do termo “imagem” (“picture”), o termo “quadro” ou “imagem” (“image”) pode ser usado como sinônimos no campo da codificação de vídeo. A codificação de vídeo (ou codificação em geral) compreende duas partes: codificação de vídeo e decodificação de vídeo. A codificação de vídeo é realizada no lado de origem, normalmente compreendendo o processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados necessária para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficiente). A decodificação de vídeo é realizada no lado de destino e normalmente compreende o processamento inverso em comparação com o codificador para reconstruir as imagens de vídeo. As modalidades que se referem à "codificação"de imagens de vídeo (ou imagens em geral) devem ser entendidas como relacionadas à "codificação"ou "decodificação"de imagens de vídeo ou respectivas sequências de vídeo. A combinação da parte de codificação e da parte de decodificação também é conhecida como CODEC (Codificação e Decodificação).
[0105] No caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, ou seja, as imagens de vídeo reconstruídas têm a mesma qualidade das imagens de vídeo originais (assumindo nenhuma perda de transmissão ou outra perda de dados durante armazenamento ou transmissão). No caso de codificação de vídeo com perdas, compressão adicional, por exemplo, por quantização, é realizada, para reduzir a quantidade de dados que representam as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, ou seja, a qualidade das imagens de vídeo reconstruídas é inferior ou pior comparada à qualidade das imagens de vídeo originais.
[0106] Vários padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbridos com perdas” (ou seja, combinam predição espacial e temporal no domínio de amostra e codificação de transformada 2D para aplicar quantização no domínio de transformada). Cada imagem de uma sequência de vídeo é normalmente particionada em um conjunto de blocos não sobrepostos e a codificação é normalmente realizada em um nível de bloco. Em outras palavras, no codificador, o vídeo é normalmente processado, ou seja, codificado, em um nível de bloco (bloco de vídeo), por exemplo, por usar predição espacial (imagem intra) e/ou predição temporal (imagem inter) para gerar um bloco de predição, subtrair 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 de transformada para reduzir a quantidade de dados a serem transmitidos (compressão), enquanto no decodificador, o processamento inverso em comparação com o 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 processamento, ou seja, codificação dos blocos subsequentes.
[0107] Nas seguintes modalidades de um sistema de codificação de vídeo 10, um codificador de vídeo 20 e um decodificador de vídeo 30 são descritos com base nas Figuras 1 a 3.
[0108] A Figura 1A é um diagrama de blocos esquemático ilustrando um sistema de codificação de exemplo 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação 10 para abreviar) que pode utilizar técnicas do presente pedido. O codificador de vídeo 20 (ou codificador 20 para abreviar) e o decodificador de vídeo 30 (ou decodificador 30 para abreviar) 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.
[0109] 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.
[0110] O dispositivo de origem 12 pode compreender 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.
[0111] A fonte de imagem 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, uma câmera para capturar uma imagem do mundo real e/ou qualquer tipo de um dispositivo de geração de imagem, por exemplo, um processador gráfico de computador para gerar uma imagem animada por computador, ou qualquer tipo de outro 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 tipo de memória ou armazenamento armazenando qualquer uma das imagens acima mencionadas.
[0112] Em distinção ao pré-processador 18 e ao processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também podem ser referidos como imagem bruta ou dados de imagem brutos 17.
[0113] O pré-processador 18 pode ser configurador para receber os dados de imagem (brutos) 17 e para realizar o pré-processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem pré- processados 19. Pré-processamento realizado pelo pré-processador 18 pode, por exemplo, compreender recorte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor, ou eliminação de ruído. Pode ser entendido que a unidade de pré-processamento 18 pode ser componente opcional.
[0114] O codificador de vídeo 20 pode ser configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 2).
[0115] 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 processada adicional dos mesmos) através do canal de comunicação 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[0116] O dispositivo de destino 14 pode compreender 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.
[0117] A interface de comunicação 28 do dispositivo de destino 14 pode ser configurada para receber os dados de imagem codificados 21 (ou qualquer versão processada adicional 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.
[0118] 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 através de um enlace de comunicação direto entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão direta com ou sem fio, ou através de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer combinação delas, ou qualquer tipo de rede privada e pública, ou qualquer tipo de combinação das mesmas.
[0119] 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 através de um enlace de comunicação ou rede de comunicação.
[0120] 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.
[0121] Tanto, ou pelo menos uma de, a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais, conforme indicado pela seta para o canal de comunicação 13 na Figura 1A apontando a partir do dispositivo de origem 12 para o dispositivo de destino 14, ou como interfaces de comunicação bidirecionais, e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para reconhecer e trocar qualquer outras informações relacionadas ao enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificada.
[0122] O decodificador 30 pode ser configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 3 ou Figura 5).
[0123] O pós-processador 32 do dispositivo de destino 14 pode ser configurado para pós-processar os dados de imagem decodificados 31 (também chamados de dados de imagem reconstruídos), por exemplo, a imagem decodificada 31, para obter dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, recorte, ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[0124] O dispositivo de exibição 34 do dispositivo de destino 14 pode ser configurado para receber os dados de imagem pós-processados 33 para exibir a imagem, por exemplo, para um usuário ou visualizador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de exibição para representar a imagem reconstruída, por exemplo, uma exibição ou monitor integrado ou externo. As exibições podem, por exemplo, compreender exibições de cristal líquido (LCD), exibições de diodos emissores de luz orgânica (OLED), exibições de plasma, projetores, exibições de microLED, cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer outro tipo de exibição.
[0125] Embora a Figura 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, modalidades de dispositivos também podem 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 a funcionalidade correspondente e o dispositivo de destino 14 ou a funcionalidade correspondente podem ser implementados usando o mesmo hardware e/ou software ou por hardware e/ou software separado ou qualquer combinação dos mesmos.
[0126] O dispositivo de origem e/ou o dispositivo de destino podem ainda ser implementados usando hardware e/ou software dedicado. Por exemplo, um ou ambos desses dispositivos podem ser implementados usando hardware especificamente projetado para realizar uma ou mais das funcionalidades mencionadas acima e abaixo. Alternativamente ou adicionalmente, uma ou mais das funcionalidades descritas acima e abaixo podem ser implementadas usando software especificamente projetado que pode ser rodado em hardware de propósito geral, como processadores. Além disso, combinações do acima também são previstas, em que o dispositivo de origem e/ou o dispositivo de destino podem ser implementados usando uma combinação de hardware especificamente dedicado para realizar uma ou mais funcionalidades e software para realizar uma ou mais outras funcionalidades.
[0127] 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 dispositivo de destino 14, como mostrado na Figura 1A, podem variar dependendo do dispositivo e aplicação reais.
[0128] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou ambos, o codificador 20 e o decodificador 30 podem ser implementados por meio de circuitos de processamento como mostrado na Figura 1B, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou qualquer combinação dos mesmos. O codificador 20 pode ser implementado através dos circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao codificador 20 da Figura 2 e/ou qualquer outro sistema ou subsistema de codificador descrito neste documento. O decodificador 30 pode ser implementado através dos circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao decodificador 30 da Figura 3 e/ou qualquer outro sistema ou subsistema de decodificador descrito neste documento. Os circuitos de processamento podem ser configurados para realizar as várias operações, conforme discutido mais tarde. Conforme mostrado na Figura 5, se as técnicas são implementadas 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 desta revelação. Qualquer de codificador de vídeo 20 e decodificador de vídeo 30 pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um único dispositivo, por exemplo, como mostrado na Figura 1B.
[0129] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla gama de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, computadores notebooks ou laptops, telefones móveis, smartphones, tablets ou computadores tablets, câmeras, computadores de mesa, decodificadores, televisores, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivos de streaming de vídeo (como servidores de serviços de conteúdo ou servidores de entrega de conteúdo), dispositivo receptor de broadcast, dispositivo transmissor de broadcast, ou semelhantes e podem 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. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0130] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na Figura 1A é apenas um exemplo e as técnicas do presente pedido podem ser aplicadas a definições de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e de decodificação. Em outros exemplos, os dados são recuperados de uma memória local, transmitidos em fluxo contínuo 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 da memória. Em alguns exemplos, a codificação e decodificação são realizadas por dispositivos que não se comunicam entre si, mas simplesmente codificam dados para a memória e/ou recuperam e decodificam dados a partir da memória.
[0131] Por conveniência de descrição, modalidades da invenção são descritas neste documento, por exemplo, por referência à Codificação de Vídeo de Alta Eficiência (HEVC) ou ao software de referência de Codificação de Vídeo Versátil (VVC), o padrão de codificação de vídeo de próxima geração desenvolvido pela Equipe de Colaboração Conjunta em codificação de vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo (VCEG) ITU-T e Grupo de Especialistas de Figura em Movimento (MPEG) ISO / IEC. Uma pessoa versada na técnica entenderá que as modalidades da revelação não estão limitadas a HEVC ou VVC.
Codificador e Método de Codificação
[0132] A Figura 2 mostra um diagrama de blocos esquemático de um codificador de vídeo de exemplo 20 que pode ser configurado para implementar as técnicas da presente revelação. 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 intra 244, uma unidade de predição intra 254 e uma unidade de particionamento 262. A unidade de predição intra 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada). Um codificador de vídeo 20, como mostrado na Figura 2, também pode ser referido como um codificador de vídeo híbrido ou um codificador de vídeo de acordo com um codec de vídeo híbrido.
[0133] A unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, e a unidade de seleção de modo 260 podem ser referidas como formando um percurso de sinal direto do codificador 20, enquanto a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 podem ser referidos como formando um percurso de sinal inverso do codificador de vídeo 20, em que o percurso de sinal inverso 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 também são referidos para formar o “decodificador embutido” do codificador de vídeo 20.
Imagens e particionamento de imagem (Imagens e blocos)
[0134] O codificador 20 pode ser configurado para receber, por exemplo, através da entrada 201, uma imagem 17 (ou dados de imagem 17), por exemplo, imagem de uma sequência de imagens formando um vídeo ou sequência de vídeo. A imagem ou dados de imagem recebidos também podem ser uma imagem pré-processada 19 (ou dados de imagem pré-processados 19). Por razões de simplicidade, a seguinte descrição refere-se à imagem 17. A imagem 17 também pode ser referida como imagem atual ou imagem a ser codificada (em particular na codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagens previamente codificadas e/ou decodificadas da mesma sequência de vídeo, ou seja, a sequência de vídeo que também inclui a imagem atual).
[0135] Uma imagem (digital) é ou pode ser considerada como um arranjo ou matriz bidimensional de amostras com valores de intensidade. Uma amostra no arranjo também pode ser referida como pixel (forma abreviada de elemento de imagem) ou pel. O número de amostras em direção horizontal e vertical (ou eixo) do arranjo ou imagem define o tamanho e/ou resolução da imagem. Para a representação da cor, normalmente três componentes de cor são empregados, ou seja, a imagem pode ser representada como ou incluir três arranjos de amostra. No formato ou espaço de cor RBG, uma imagem compreende um arranjo de amostra vermelha, verde e azul correspondente. No entanto, na codificação de vídeo, cada pixel é tipicamente representado em um formato ou espaço de cor de luminância e crominância, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (às vezes também L é usado no lugar) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou luma para abreviar) Y representa o brilho ou intensidade de nível de cinza (por exemplo, como em uma imagem em escala de cinza), enquanto os dois componentes de crominância (ou croma para abreviar) Cb e Cr representam a cromaticidade ou componentes de informações de cor. Consequentemente, uma imagem no formato YCbCr compreende um arranjo de amostra de luminância de valores de amostra de luminância (Y) e dois arranjos de amostra de crominância de valores de crominância (Cb e Cr). As imagens no formato RGB podem ser convertidas ou transformadas no formato YCbCr e vice-versa, o processo também é conhecido como transformação ou conversão de cores. Se uma imagem for monocromática, a imagem pode compreender apenas um arranjo de amostra de luminância. Consequentemente, uma imagem pode ser, por exemplo, um arranjo de amostra de luma em formato monocromático ou um arranjo de amostra de luma e dois arranjos correspondentes de amostras de croma em formato de cor 4: 2: 0, 4: 2: 2 e 4: 4: 4.
[0136] 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 (normalmente não sobrepostos). Esses blocos também podem 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 do bloco, ou para alterar o tamanho do bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[0137] Em modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos os blocos que formam a imagem 17. O bloco de imagem 203 também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado.
[0138] Como a imagem 17, o bloco de imagem 203, novamente, é ou pode ser considerado como um arranjo ou matriz bidimensional de amostras com valores de intensidade (valores de amostra), embora de menor dimensão do 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 monocromática 17, ou um arranjo luma ou croma no caso de uma imagem colorida) ou três arranjos de amostra (por exemplo, um arranjo luma e dois croma no caso de uma imagem colorida 17) ou qualquer outro número e/ou tipo de arranjos dependendo do formato de cor aplicado. O número de amostras em direção horizontal e vertical (ou eixo) do bloco 203 define o tamanho de bloco 203. Por conseguinte, um bloco pode, por exemplo, um arranjo MxN (M colunas por N linhas) de amostras, ou um arranjo MxN de coeficientes de transformada.
[0139] Modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser configuradas para codificar a imagem 17 bloco a bloco, por exemplo, a codificação e a predição são realizadas por bloco 203.
[0140] Modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser adicionalmente configuradas para particionar e/ou codificar a imagem usando fatias (também chamadas de fatias de vídeo), em que uma imagem pode ser particionada ou codificada usando uma ou mais fatias (normalmente sem sobreposição), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, tiles (H.265/HEVC e VVC) ou bricks (VVC)).
[0141] Modalidades do codificador de vídeo 20, como mostrado na Figura 2, podem ser adicionalmente configuradas para particionar e/ou codificar a imagem usando grupos de fatias/tiles (também referidos como grupos de tiles de vídeo) e/ou tiles (também referidos como tiles de vídeo), em que uma imagem pode ser particionada ou codificada usando um ou mais grupos de fatias/tiles (normalmente não sobrepostos), e cada grupo de fatias/tiles pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou uma ou mais tiles, em que cada tile, por exemplo, pode ter forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionários.
Cálculo Residual
[0142] 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 posteriormente), por exemplo, subtraindo valores de amostra do bloco de predição 265 a partir de valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio de amostra.
Transformada
[0143] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma transformada, por exemplo, uma transformada de cosseno discreta (DCT) ou transformada de seno discreta (DST), nos valores de amostra do bloco residual 205 para obter coeficientes de transformada 207 em um domínio de transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio de transformada.
[0144] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações inteiras de DCT / DST, como as transformadas especificadas para H.265 / HEVC. Comparado a uma transforma de DCT ortogonal, tais aproximações inteiras são tipicamente escaladas por um determinado fator. A fim de preservar a norma do bloco residual que é processado pelas transformadas direta e inversa, fatores de escalonamento adicionais são aplicados como parte do processo de transformada. Os fatores de escalonamento são normalmente escolhidos com base em certas restrições, como fatores de escalonamento sendo uma potência de dois para operações de deslocamento, profundidade de bits dos coeficientes de transformada, compensação entre precisão e custos de implementação, etc. Fatores de escalonamento específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e fatores de escalonamento correspondentes para a transformada direta, por exemplo, pela unidade de processamento de transformada 206, em um codificador 20 podem ser especificados em conformidade.
[0145] As modalidades do codificador de vídeo 20 (respectivamente, unidade de processamento de transformada 206) podem ser configuradas para emitir parâmetros de transformada, por exemplo, um tipo de transformada ou transformadas, por exemplo, diretamente ou codificados ou comprimidos através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de transformada para decodificação.
Quantização
[0146] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter coeficientes quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial. Os coeficientes quantizados 209 também podem ser referidos como coeficientes de transformada quantizados 209 ou coeficientes residuais quantizados 209.
[0147] O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante a quantização, em que n é maior do que m. O grau de quantização pode ser modificado ajustando um parâmetro de quantização (QP). Por exemplo, para a quantização escalar, escalonamento diferente pode ser aplicado para alcançar uma quantização mais fina ou mais grosseira. Tamanhos de etapa de quantização menores correspondem a quantização mais fina, enquanto 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, por exemplo, ser um índice para um conjunto predefinido de tamanhos de etapas de quantização aplicáveis. Por exemplo, pequenos parâmetros de quantização podem corresponder a quantização fina (tamanhos de etapas de quantização pequenos) e parâmetros de quantização grandes podem corresponder a quantização grosseira (tamanhos de etapas de quantização grandes) ou vice-versa. A quantização pode incluir a divisão por um tamanho de etapa de quantização e uma desquantização correspondente e/ou a desquantização inversa, por exemplo, por unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho de etapa de quantização. As modalidades de acordo com alguns padrões, por exemplo, HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho de etapa de quantização. Geralmente, 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, que pode ser modificada por causa do escalonamento usado na aproximação de ponto fixo da equação para o tamanho de etapa de quantização e parâmetro de quantização. Em uma implementação de exemplo, o escalonamento da transformada inversa e a desquantização podem ser combinados. Alternativamente, tabelas de quantização personalizadas podem ser usadas e sinalizadas a partir de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com o aumento dos tamanhos das etapas de quantização.
[0148] Modalidades do codificador de vídeo 20 (respectivamente, unidade de quantização 208) podem ser configuradas para emitir parâmetros de quantização (QP), por exemplo, diretamente ou codificados 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
[0149] A unidade de quantização inversa 210 pode ser configurada para aplicar a quantização inversa da unidade de quantização 208 nos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base ou usando o mesmo tamanho de etapa de quantização que a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora normalmente não sejam idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada 207.
Transformada Inversa
[0150] A unidade de processamento de transformada inversa 212 pode ser configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada de cosseno discreta inversa (DCT) ou transformada de seno discreta inversa (DST) ou outras transformadas inversas, para obter um bloco residual 213 (ou coeficientes desquantizados correspondentes 213) no domínio de amostra. O bloco residual reconstruído 213 também pode ser referido como bloco de transformada 213.
Reconstrução
[0151] A unidade de reconstrução 214 (por exemplo, adicionador ou somador 214) pode ser configurada para adicionar o bloco de transformada 213 (isto é, bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, adicionando - 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
[0152] A unidade de filtro loop 220 (ou "filtro loop" para abreviar 220), pode ser configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221 ou, em geral, para filtrar amostras reconstruídas para obter valores de amostra filtrados. A unidade de filtro loop é, por exemplo, configurada para suavizar as transições de pixel ou melhorar a qualidade de vídeo. A unidade de filtro loop 220 pode compreender um ou mais filtros de loop, como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro loop adaptativo (ALF), um filtro de supressão de ruído (NSF), ou qualquer combinação dos mesmos. Em um exemplo, a unidade de filtro loop 220 pode compreender um filtro de desblocagem, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desblocagem, SAO e ALF. Em outro exemplo, um processo chamado mapeamento de luma com escalonamento de croma (LMCS) (ou seja, o remodelador in-loop adaptativo) é adicionado. Este processo é realizado antes da desblocagem. Em outro exemplo, o processo de filtro de desblocagem também pode ser aplicado a bordas internas de sub-blocos, por exemplo, bordas de sub-blocos afins, bordas de sub-blocos ATMVP, bordas de transformada de sub-bloco (SBT) e bordas subpartição intra (ISP).
[0153] Para remover efetivamente os artefatos de blocagem que ocorrem em grandes “blocos”, o VVC usa um filtro de desblocagem de derivação mais longo. Aqui o termo “blocos” é usado de forma muito genérica e pode se referir a um “bloco de transformada (TB), bloco de predição (PB) ou bloco de unidade de codificação (CU)”. O filtro de derivação mais longo é aplicado aos componentes de Luma e Croma. O filtro de derivação mais longo para os componentes de Luma modifica no máximo 7 amostras para cada linha de amostras perpendicular e adjacente à borda e é aplicado para blocos cujo tamanho é >=32 amostras na direção de desblocagem, ou seja, para bordas verticais, a largura de bloco deve ser >=32 amostras e para bordas horizontais, a altura de bloco deve ser >=32 amostras.
[0154] O filtro de derivação mais longo de croma é aplicado para blocos de Croma quando ambos os blocos adjacentes a uma determinada borda têm um tamanho >=8 amostras e modifica um máximo de três amostras em cada lado da borda. Portanto, para bordas verticais a largura do bloco de ambos os blocos adjacentes à borda deve ser >=8 amostras e para as bordas horizontais a altura de bloco de ambos os blocos adjacentes à borda deve ser >=8 amostras. 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 implementada como um filtro post-loop. O bloco filtrado 221 também pode ser referido como bloco reconstruído filtrado 221.
[0155] As modalidades do codificador de vídeo 20 (respectivamente unidade de filtro loop 220) podem ser configuradas para parâmetros de filtro loop de saída (como parâmetros de filtro SAO ou parâmetros de filtro ALF ou parâmetros LMCS), por exemplo, diretamente ou codificados através da unidade de codificação de entropia 270, de modo que, por exemplo, um decodificador 30 pode receber e aplicar os mesmos parâmetros de filtro loop ou respectivos filtros de loop para decodificação.
Buffer de imagem decodificada
[0156] O buffer de imagem decodificada (DPB) 230 pode ser uma memória que armazena imagens de referência, ou em dados de imagem de referência geral, para codificar dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, como memória dinâmica de acesso aleatório (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 diferentes imagens, por exemplo, imagens previamente reconstruídas, e podem fornecer imagens completas previamente reconstruídas, ou seja, imagens decodificadas (e blocos de referência e amostras correspondentes) e/ou uma imagem atual parcialmente reconstruída (e blocos de referência e amostras 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 processada adicional dos blocos reconstruídos ou amostras.
Seleção de modo (particionamento e predição)
[0157] 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 original, por exemplo, um bloco original 203 (bloco atual 203 da imagem atual 17), e dados de imagem reconstruída, por exemplo, amostras reconstruídas filtradas e/ou não filtradas ou blocos da mesma imagem (atual) e/ou de uma ou uma pluralidade de imagens previamente decodificadas, por exemplo, do buffer de imagem decodificada 230 ou outros buffers (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruí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.
[0158] 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 nenhum 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.
[0159] Modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o particionamento e o modo de predição (por exemplo, daqueles suportados por ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor combinação ou em outras palavras o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou um overhead de sinalização mínima (overhead 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 predição com base na otimização de distorção de taxa (RDO), ou seja, selecionar o modo de predição que fornece uma distorção de taxa mínima. Termos como "melhor", "mínimo", "ótimo"etc., neste contexto, não se referem necessariamente a um "melhor" geral, "mínimo", "ótimo", etc., mas também podem referir-se ao cumprimento de um critério de terminação ou seleção como um valor excedendo ou caindo abaixo de uma fronteira ou outras restrições levando potencialmente a uma "seleção subótima", mas reduzindo a complexidade e o tempo de processamento.
[0160] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar uma imagem a partir de uma sequência de vídeo em uma sequência de unidades de árvore de codificação (CTUs), e a CTU 203 pode ser adicionalmente particionada em partições de bloco menores ou sub- blocos (que formam novamente blocos), por exemplo, iterativamente usando particionamento de quadtree (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação dos mesmos, e para realizar, por exemplo, a predição para cada uma das partições 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.
[0161] A seguir, o particionamento (por exemplo, por unidade de particionamento 260) e processamento de predição (por unidade de predição inter 244 e unidade de predição intra 254) realizados por um codificador de vídeo de exemplo 20 serão explicados em mais detalhes.
Particionamento
[0162] A unidade de particionamento 262 pode ser configurada para particionar uma imagem de uma sequência de vídeo em uma sequência de unidades de árvore de codificação (CTUs), e a unidade de particionamento 262 pode particionar (ou dividir) uma unidade de árvore de codificação (CTU) 203 em partições menores, por exemplo blocos menores de tamanho quadrado ou retangular. Para uma imagem que possui três arranjos de amostras, uma CTU consiste em um bloco NxN de amostras de luma junto com dois blocos correspondentes de amostras de croma. O tamanho máximo permitido do bloco de luma em uma CTU é especificado como 128 x 128 na codificação de vídeo versátil em desenvolvimento (VVC), mas pode ser especificado como valor em vez de 128 x 128 no futuro, por exemplo, 256 x 256. As CTUs de uma imagem podem ser agrupadas (“clustered”)/agrupadas (“grouped”) como grupos de fatias/tiles, tiles ou bricks. Um tile cobre uma região retangular de uma imagem e um tile pode ser dividido em um ou mais bricks. Um brick consiste em um número de linhas de CTU dentro de um tile. Um tile que não é particionado em vários bricks pode ser chamado de brick. No entanto, um brick é um verdadeiro subconjunto de um tile e não é referido como um tile. Há dois modos de grupos de tiles suportados no VVC, a saber, o modo de grupo de fatias/tiles de varredura raster e o modo de fatia retangular. No modo de grupo de tiles de varredura raster, um grupo de fatias/tiles contém uma sequência de tiles na varredura raster de tiles de uma imagem. No modo de fatia retangular, uma fatia contém vários bricks de uma imagem que formam coletivamente uma região retangular da imagem. Os bricks dentro de uma fatia retangular estão na ordem de varredura raster de bricks da fatia. Esses blocos menores (que também podem ser chamados de sub-blocos) podem ser particionados em partições ainda menores. Isso também é referido como particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco raiz, por exemplo, no nível de árvore raiz 0 (nível de hierarquia 0, profundidade 0), pode ser particionado recursivamente, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível de hierarquia 1, profundidade 1), em que esses blocos podem ser novamente particionados em dois ou mais blocos de um 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 encerrado, por exemplo, porque um critério de encerramento é atendido, por exemplo, uma profundidade máxima da árvore ou tamanho mínimo do bloco é alcançado. Blocos, que não são adicionalmente particionados, também são chamados de blocos folha ou nós folha da árvore. Uma árvore usando particionamento em duas partições é chamada de uma árvore binária (BT), uma árvore usando particionamento em três partições é chamada de uma árvore ternária (TT), e uma árvore usando particionamento em quatro partições é chamada de quadtree (QT).
[0163] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma e dois CTBs correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N de modo que a divisão de um componente em CTBs seja um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores e estruturas de sintaxe separados usados para codificar as amostras. Correspondentemente, um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N de modo que a divisão de um CTB em blocos de codificação seja um particionamento.
[0164] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs usando uma estrutura de quadtree denotada como árvore de codificação. A decisão de codificar uma área de imagem usando predição imagem inter (temporal) ou imagem intra (espacial) é feita no nível de CU de folha. Cada CU de folha 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 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 outra estrutura de quadtree semelhante à árvore de codificação para a CU.
[0165] Em modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, que é referido como Codificação de Vídeo Versátil (VVC), uma árvore de múltiplos tipos aninhada de Quad-tree combinada usando estrutura de segmentação de divisões binárias e ternárias, por exemplo, usada para particionar uma unidade de árvore de codificação. Na estrutura de árvore de codificação dentro de uma unidade de árvore de codificação, uma CU pode ter uma forma quadrada ou retangular. Por exemplo, a unidade de árvore de codificação (CTU) é primeiro particionada por uma árvore quaternária. Em seguida, os nós folha da árvore quaternária podem ser particionados por uma estrutura de árvore de múltiplos tipos. Existem quatro tipos de divisão na estrutura de árvore de múltiplos tipos, divisão binária vertical (SPLIT_BT_VER), divisão binária horizontal (SPLIT_BT_HOR), divisão ternária vertical (SPLIT_TT_VER) e divisão ternária horizontal (SPLIT_TT_HOR). Os nós folha de árvore de múltiplos tipos são chamados de unidades de codificação (CUs) e, a menos que a CU seja muito grande para o comprimento máximo de transformada, essa segmentação é usada para predição e processamento de transformada sem qualquer particionamento adicional. Isso significa que, na maioria dos casos, CU, PU e TU têm o mesmo tamanho de bloco na quadtree com estrutura de bloco de codificação de árvore de múltiplos tipos aninhada. A exceção ocorre quando o comprimento máximo de transformada suportado é menor que a largura ou altura do componente de cor do CU.VVC desenvolve um mecanismo de sinalização exclusivo das informações de divisão de partição em quadtree com estrutura de árvore de codificação de árvore de múltiplos tipos aninhada. No mecanismo de sinalização, uma unidade de árvore de codificação (CTU) é tratada como a raiz de uma árvore quaternária e é primeiramente particionada por uma estrutura de árvore quaternária. Cada nó folha de árvore quaternária (quando suficientemente grande para permitir) é então particionado por uma estrutura de árvore de múltiplos tipos. Na estrutura de árvore de múltiplos tipos, uma primeira flag (mtt_split_cu_flag) é sinalizada para indicar se o nó está adicionalmente particionado; quando um nó é adicionalmente particionado, uma segunda flag (mtt_split_cu_vertical_flag) é sinalizada para indicar a direção da divisão e, em seguida, uma terceira flag (mtt_split_cu_binary_flag) é sinalizada para indicar se a divisão é uma divisão binária ou uma divisão ternária. Com base nos valores de mtt_split_cu_vertical_flag e mtt_split_cu_binary_flag, o modo de corte de árvore de múltiplos tipos (MttSplitMode) de uma CU pode ser derivado por um decodificador baseado em uma regra predefinida ou em uma tabela. Deve ser notado que, para um determinado projeto, por exemplo, bloco de Luma 64x64 e projeto de pipelining de Croma 32x32 em decodificadores de hardware VVC, a divisão de TT é proibida quando a largura ou a altura de um bloco de codificação de luma for maior que 64, pois mostrado na Figura 6. A divisão de TT também é proibida quando a largura ou a altura de um bloco de codificação de croma for maior que 32. O projeto de pipeline dividirá uma imagem em unidades de dados de pipeline virtuais (VPDUs) que são definidas como unidades não sobrepostas em uma imagem. Em decodificadores de hardware, VPDUs sucessivas são processadas por vários estágios de pipeline simultaneamente. O tamanho da VPDU é aproximadamente proporcional ao tamanho do buffer na maioria dos estágios do pipeline, portanto, é importante manter o tamanho da VPDU pequeno. Na maioria dos decodificadores de hardware, o tamanho da VPDU pode ser definido para o tamanho máximo do bloco de transformada (TB). No entanto, em VVC, a partição de árvore ternária (TT) e árvore binária (BT) pode levar ao aumento do tamanho das VPDUs.
[0166] Além disso, deve ser notado que, quando uma porção de um bloco de nó de árvore excede a fronteira inferior ou direita da imagem, o bloco de nó de árvore é forçado a ser dividido até que todas as amostras de cada CU codificada estejam localizadas dentro das fronteiras de imagem.
[0167] Como exemplo, a ferramenta SubPartições Intra (ISP) pode dividir blocos preditos intra de luma verticalmente ou horizontalmente em 2 ou 4 subpartições dependendo do tamanho do bloco.
[0168] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas neste documento.
[0169] Conforme descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ideal a partir de um conjunto de modos de predição (por exemplo, predeterminados). O conjunto de modos de predição pode compreender, por exemplo, modos de predição intra e/ou modos de predição inter.
Predição Intra
[0170] O conjunto de modos de predição intra pode compreender 35 modos de predição intra diferentes, por exemplo, modos não direcionais como modo de DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido em HEVC, ou pode compreender 67 modos de predição intra, por exemplo, modos não direcionais, como modo de DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido para VVC. Como exemplo, vários modos de predição intra angular convencionais são substituídos de forma adaptativa por modos de predição intra de grande angular para os blocos não quadrados, por exemplo, conforme definido em VVC. Como outro exemplo, para evitar operações de divisão para predição DC, apenas o lado mais longo é usado para calcular a média de blocos não quadrados. E, os resultados da predição intra do modo planar podem ser adicionalmente modificados por um método de combinação de predição intra dependente de posição (PDPC).
[0171] 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.
[0172] A unidade de predição intra 254 (ou, em geral, a unidade de seleção de modo 260) é adicionalmente configurada para emitir parâmetros de predição intra (ou em informações gerais 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
[0173] O conjunto de (ou possíveis) modos de predição inter depende das imagens de referência disponíveis (ou seja, imagens anteriores pelo menos parcialmente decodificadas, por exemplo, armazenadas em DBP 230) e outros parâmetros de predição inter, por exemplo, se a imagem de referência inteira ou apenas uma parte, por exemplo, uma área de janela de busca em torno da área do bloco atual, da imagem de referência é usada para buscar o melhor bloco de referência correspondente, e/ou por exemplo, se a interpolação de pixel é aplicada, por exemplo, interpolação de meio/semi-pel, interpolação de um quarto de pel e/ou interpolação de 1/16 de pel, ou não.
[0174] Adicional aos modos de predição acima, o modo skip, modo direto e/ou outro modo de predição inter podem ser aplicados.
[0175] Por exemplo, predição merge estendida, a lista de candidatos merge desse modo é construída incluindo os cinco tipos de candidatos a seguir em ordem: MVP espacial de CUs vizinhas espaciais, MVP temporal de CUs colocalizadas, MVP baseado em histórico de uma tabela FIFO, MVP médio em pares e MVs Zero. E um refinamento de vetor de movimento lateral de decodificador baseado em correspondência bilateral (DMVR) pode ser aplicado para aumentar a precisão dos MVs do modo merge. Modo merge com MVD (MMVD), que vem do modo merge com diferenças de vetor de movimento. Uma flag MMVD é sinalizada logo após o envio de uma flag skip e uma flag merge para especificar se o modo MMVD é usado para uma CU. E um esquema de resolução de vetor de movimento adaptativo (AMVR) no nível de CU pode ser aplicado. O AMVR permite que o MVD da CU seja codificado em diferentes precisões. Dependendo do modo de predição da CU atual, os MVDs da CU atual podem ser selecionados de forma adaptativa. Quando uma CU é codificada no modo merge, o modo combinado de predição inter/intra (CIIP) pode ser aplicado à CU atual. A média ponderada dos sinais de predição inter e intra é realizada para obter a predição CIIP. Predição compensada de movimento afim, o campo de movimento afim do bloco é descrito por informações de movimento de dois pontos de controle (4 parâmetros) ou três vetores de movimento de pontos de controle (6 parâmetros). Predição de vetor de movimento temporal baseada em subbloco (SbTMVP), que é semelhante à predição de vetor de movimento temporal (TMVP) em HEVC, mas prevê os vetores de movimento das sub-CUs dentro da CU atual. O fluxo óptico bidirecional (BDOF), anteriormente conhecido como BIO, é uma versão mais simples que requer muito menos computação, principalmente em termos de número de multiplicações e tamanho do multiplicador. Modo de partição triangular, nesse modo, uma CU é dividida uniformemente em duas partições em forma de triângulo, usando a divisão diagonal ou a divisão antidiagonal. Além disso, o modo de bipredição é estendido além da média simples para permitir a média ponderada dos dois sinais de predição.
[0176] 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 pode ser configurada para receber ou obter o bloco de imagem 203 (bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de um ou uma pluralidade de imagens previamente decodificadas 231 outras/diferentes, 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.
[0177] O codificador 20, por exemplo, pode ser configurado para selecionar um bloco de referência a partir de uma pluralidade de blocos de referência do mesmo ou diferentes imagens da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de predição inter para a unidade de estimativa de movimento. Este deslocamento também é chamado de vetor de movimento (MV).
[0178] A unidade de compensação de movimento pode ser configurada para obter, por exemplo, receber, um parâmetro de predição inter e 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. Compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento / de bloco determinado pela estimativa de movimento, possivelmente realizando interpolações para precisão de subpixel. 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. Ao receber o vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência.
[0179] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados aos blocos e fatias de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo. Além ou como uma alternativa para fatias e respectivos elementos de sintaxe, grupos de tiles e/ou tiles e respectivos elementos de sintaxe podem ser gerados ou usados.
Codificação de Entropia
[0180] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), esquema de VLC adaptativa ao contexto (CAVLC), um esquema de codificação aritmética, uma binarização, um codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia) ou deslocamento (sem compressão) nos coeficientes quantizados 209, parâmetros de predição inter, parâmetros de predição intra, parâmetros de filtro loop e/ou outros elementos de sintaxe para obter dados de imagem codificados 21 que podem ser emitidos através da saída 272, por exemplo, na forma de um fluxo de bits codificado 21, de modo que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de decodificação. O fluxo de bits pode, por exemplo, ter uma forma conforme especificado adicionalmente na Figura 16 abaixo. As modalidades descritas em relação a esta figura são assim consideradas abrangidas também no fluxo de bits 21 aqui descrito. Além disso, qualquer estrutura de um fluxo de bits aqui referido pode ser fornecida como fluxo de bits 21 no sentido desta modalidade. O fluxo de bits codificado 21 pode ser transmitido para o decodificador de vídeo 30 ou armazenado em uma memória para transmissão ou recuperação posterior pelo decodificador de vídeo 30.
[0181] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador não baseado em transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para certos blocos ou quadros. Em outra implementação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade.
Decodificador e método de decodificação
[0182] A Figura 3 mostra um exemplo de um decodificador de vídeo 30 que pode ser configurado para implementar as técnicas desta presente revelação. O decodificador de vídeo 30 pode ser configurado para receber dados de imagem codificados 21 (por exemplo, fluxo de bits codificado 21), por exemplo, codificado pelo codificador 20, para obter uma imagem decodificada 331. Os dados de imagem codificados ou fluxo de bits 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/ou grupos de tiles ou tiles) e elementos de sintaxe associados.
[0183] No exemplo da Figura 3, o decodificador 30 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um filtro loop 320, um buffer de imagem decodificada (DBP) 330, uma unidade de aplicação de modo 360, uma unidade de predição inter 344 e uma unidade de predição intra 354. A unidade de predição inter 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca para a passagem de codificação descrita em relação ao codificador de vídeo 100 da Figura 2.
[0184] Conforme explicado no que diz respeito ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 344 e a unidade de predição intra 354 também são referidos como formando o "decodificador embutido" do codificador de vídeo 20. Por conseguinte, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro loop 320 pode ser idêntico em função ao filtro loop 220 e o buffer de imagem decodificada 330 pode ser idêntico em função ao buffer de imagem decodificada 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 se aplicam correspondentemente às respectivas unidades e funções do decodificador de vídeo 30.
Decodificação de entropia
[0185] A unidade de decodificação de entropia 304 pode ser configurada para analisar o fluxo de bits 21 (ou em dados de imagem codificados em geral 21) e realizar, por exemplo, decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados 366, (não mostrados na Figura 3), por exemplo, qualquer um 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 de predição intra ou índice), 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 de decodificação ou esquemas 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 configurada adicionalmente para fornecer parâmetros de predição inter, parâmetro de predição intra e/ou outros elementos de sintaxe para a unidade de aplicação de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou nível de bloco de vídeo. Além ou como uma alternativa às fatias e respectivos elementos de sintaxe, grupos de tiles e/ou tiles e respectivos elementos de sintaxe podem ser recebidos e/ou usados.
Quantização Inversa
[0186] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou em informações gerais relacionadas à quantização inversa) e coeficientes quantizados a partir dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação de entropia 304) e aplicar, com base nos parâmetros de quantização, uma quantização inversa nos coeficientes quantizados decodificados 309 para obter coeficientes desquantizados 311, que também podem ser referidos como coeficientes de transformada 311. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização determinado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo (ou tile ou grupos de tiles) para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.
Transformada Inversa
[0187] A unidade de processamento de transformada inversa 312 pode ser configurada para receber coeficientes desquantizados 311, também referidos como coeficientes de transformada 311, e para aplicar uma transformada aos coeficientes desquantizados 311 a fim de obter blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser referidos como blocos de transformada 313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada inteira inversa, ou um processo de transformada inversa conceitualmente similar. A unidade de processamento de transformada inversa 312 pode ainda ser configurada para receber parâmetros de transformada ou informações correspondentes a partir dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada aos coeficientes desquantizados 311.
Reconstrução
[0188] A unidade de reconstrução 314 (por exemplo, adicionador ou somador 314) pode ser configurada para adicionar o bloco residual reconstruído 313, ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio de amostra, por exemplo, adicionando os valores de amostra do bloco residual reconstruído 313 e os valores de amostra do bloco de predição 365.
Filtragem
[0189] A unidade de filtro loop 320 (no loop de codificação ou após o loop de codificação) pode ser configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar as transições de pixel ou melhorar a qualidade de vídeo. A unidade de filtro loop 320 pode compreender um ou mais filtros de loop, como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro loop adaptativo (ALF), um filtro de supressão de ruído (NSF), ou qualquer combinação dos mesmos. Em um exemplo, a unidade de filtro loop 220 pode compreender um filtro de desblocagem, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desblocagem, SAO e ALF. Em outro exemplo, um processo chamado mapeamento de luma com escalonamento de croma (LMCS) (ou seja, o remodelador in-loop adaptativo) é adicionado. Este processo é realizado antes do desblocagem. Em outro exemplo, o processo de filtro de desblocagem também pode ser aplicado a bordas internas de sub-blocos, por exemplo, bordas de sub-blocos afins, bordas de sub-blocos ATMVP, bordas de transformada de sub-bloco (SBT) e bordas subpartição intra (ISP). Embora a unidade de filtro de circuito 320 seja mostrada na Figura 3 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 320 pode ser implementada como um filtro post-loop.
[0190] JVET-P0080 e JVET-O0630 propõem um novo filtro in-loop denominado filtro ALF de componente cruzado, também referido aqui como CC- ALF ou CCALF. CC-ALF opera como parte do processo de filtro loop adaptativo e faz uso de valores de amostra de luma para refinar cada componente de croma (ou seja, componente Cr ou Cb, como um primeiro componente de croma é denominado componente Cb e um segundo componente de croma é denominado componente Cr). O CC-ALF opera aplicando um filtro em forma de diamante no componente de Luma para cada amostra de Croma do componente de Croma e, em seguida, o valor filtrado de saída é usado como uma correção para a saída do processo de ALF de Croma.
[0191] O filtro loop adaptativo de componente cruzado (CC-ALF) pode ser usado como filtro loop e como etapa de pós-processamento, respectivamente.
Buffer de imagem decodificada
[0192] Os blocos de vídeo decodificados 321 de uma imagem são então armazenados em buffer de imagem decodificada 330, que armazena as imagens decodificadas 331 como imagens de referência para compensação de movimento subsequente para outras imagens e/ou para saída, respectivamente, exibição.
[0193] O decodificador 30 pode ser configurado para emitir a imagem decodificada 311, por exemplo, através da saída 312, para apresentação ou visualização a um usuário.
Predição
[0194] A unidade de predição inter 344 pode ser idêntica à unidade de predição inter 244 (em particular à unidade de compensação de movimento) e a unidade de predição intra 354 pode ser idêntica à unidade de predição inter 254 em função, e realiza decisões de divisão ou particionamento e predição com base nos parâmetros de particionamento e/ou predição ou respectivas informações recebidas a partir dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação de entropia 304). Unidade de aplicação de modo 360 pode ser configurada para realizar a predição (predição intra ou inter) por bloco com base em imagens reconstruídas, blocos ou respectivas amostras (filtradas ou não filtradas) para obter o bloco de predição 365.
[0195] Quando a fatia de vídeo é codificada como uma fatia codificada intra (I), a unidade de predição intra 354 da unidade de aplicaçã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 a partir de blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é codificada como uma fatia codificada inter (isto é, B ou P), a unidade de predição inter 344 (por exemplo, unidade de compensação de movimento) da unidade de aplicação de modo 360 é configurada para produzir blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e 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 imagens 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. O mesmo ou similar pode ser aplicado para ou por modalidades usando grupos de tiles (por exemplo, grupos de tiles de vídeo) e/ou tiles (por exemplo, tiles de vídeo) em adição ou alternativamente a fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de tiles I, P ou B e/ou tiles.
[0196] A unidade de aplicação de modo 360 pode ser configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual por analisar os vetores de movimento ou informações relacionadas e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de aplicação de modo 360 usa 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 imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado inter da fatia, status de predição inter para cada bloco de vídeo codificado inter da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. O mesmo ou similar pode ser aplicado para ou por modalidades usando grupos de tiles (por exemplo, grupos de tile s de vídeo) e/ou tiles (por exemplo, tiles de vídeo), além ou alternativamente a fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando I, grupos de tiles e/ou tiles P ou B.
[0197] Modalidades do decodificador de vídeo 30, como mostrado na Figura 3, podem ser configuradas para particionar e/ou decodificar a imagem usando fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias (tipicamente sem sobreposição), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, tiles (H.265/HEVC e VVC) ou bricks (VVC)).
[0198] Modalidades do decodificador de vídeo 30, conforme mostrado na Figura 3, podem ser configuradas para particionar e/ou decodificar a imagem usando grupos de fatias/tiles (também referidos como grupos de tiles de vídeo) e/ou tiles (também referidas como tiles de vídeo), em que uma imagem pode ser particionada ou decodificada usando um ou mais grupos de fatias/tiles (tipicamente não sobrepostos), e cada grupo de fatias/tiles pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou um ou mais tiles, em que cada tile, por exemplo, pode ser de forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionários.
[0199] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem loop 320. Por exemplo, um decodificador não baseado em transformada 30 pode quantizar inversamente o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para certos blocos ou quadros. Em outra implementação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[0200] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de uma etapa atual pode ser adicionalmente processado e, em seguida, enviado para o próximo etapa. Por exemplo, após a filtragem de interpolação, derivação de vetor de movimento ou filtragem loop, uma operação adicional, como Corte ou deslocamento, pode ser realizada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem loop.
[0201] Deve ser notado que operações adicionais podem ser aplicadas aos vetores de movimento derivados do bloco atual (incluindo, mas não limitado a vetores de movimento de ponto de controle de modo afim, vetores de movimento de sub-bloco em modos afins, planos, ATMVP, vetores de movimento temporais e assim por diante). Por exemplo, o valor de vetor de movimento é restrito a uma faixa predefinida de acordo com seu bit de representação. Se o bit de representação de vetor de movimento for bitDepth, então a faixa é -2A(bitDepth-1) ~ 2A(bitDepth-1) -1, em que “A” significa exponenciação. Por exemplo, se bitDepth for definido igual a 16, a faixa é -32768 ~ 32767; se bitDepth for definido igual a 18, a faixa é -131072 ~ 131071. Por exemplo, o valor do vetor de movimento derivado (por exemplo, os MVs de quatro sub-blocos 4x4 dentro de um bloco 8x8) é restrito de tal forma que a diferença max entre as partes inteiras dos quatro MVs do sub-bloco 4x4 não é mais do que N pixels, como no máximo 1 pixel. Aqui fornece dois métodos para restringir o vetor de movimento de acordo com bitDepth.
[0202] A Figura 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400 de acordo com uma modalidade da revelação. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades reveladas conforme descrito neste documento. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador, como o decodificador de vídeo 30 da Figura 1A ou um codificador, como o codificador de vídeo 20 da Figura 1A.
[0203] O dispositivo de codificação de vídeo 400 compreende portas de ingresso 410 (ou portas de entrada 410) e unidades receptoras (Rx) 420 para receber dados; um processador, unidade lógica ou unidade de processamento central (CPU) 430 para processar os dados; unidades transmissoras (Tx) 440 e portas de egresso 450 (ou portas de saída 450) para 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 para elétricos (OE) e componentes elétricos para ópticos (EO) acoplados às portas de ingresso 410, as unidades receptoras 420, as unidades transmissoras 440, e as portas de egresso 450 para egresso ou ingresso de sinais ópticos ou elétricos.
[0204] O processador 430 é implementado por hardware e software. O processador 430 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de 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 egresso 450, e memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 470 implementa, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece uma melhoria 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 é implementado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0205] A memória 460 pode compreender um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de sobrefluxo, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante a execução do programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil, e pode ser uma memória somente de leitura (ROM), memória de acesso aleatório (RAM), memória endereçável de conteúdo ternário (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[0206] A Figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou ambos o dispositivo de origem 12 e o dispositivo de destino 14 da Figura 1A de acordo com uma modalidade exemplar.
[0207] 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 dispositivos múltiplos, capazes de manipular ou processar informações agora existentes ou desenvolvidas no futuro. Embora as implementações reveladas possam ser praticadas com um único processador, como mostrado, por exemplo, o processador 502, vantagens em velocidade e eficiência podem ser alcançadas usando mais de um processador.
[0208] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente de leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo adequado de dispositivo de armazenamento pode ser usado como 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 incluir ainda 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 ainda um aplicativo de codificação de vídeo que realiza os métodos descritos aqui.
[0209] O aparelho 500 também pode incluir um ou mais dispositivos de saída, como um display 518. O display 518 pode ser, em um exemplo, um display sensível ao toque que combina um display com um elemento sensível ao toque que é operável para detectar entradas de toque. O display 518 pode ser acoplado ao processador 502 por meio do barramento 512.
[0210] Embora representado neste documento 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 através de uma rede e pode compreender uma única unidade integrada, como um cartão de memória, ou várias unidades, como múltiplos cartões de memória. O aparelho 500 pode, assim, ser implementado em uma ampla variedade de configurações.
Descrição detalhada das modalidades da presente revelação
[0211] Codificação de vídeo pode ser realizada com base no espaço de cor e no formato de cor. Por exemplo, o vídeo colorido desempenha um papel importante em sistemas multimídia, em que vários espaços de cor são usados para representar cores de forma eficiente. Um espaço de cor especifica cores com valores numéricos usando vários componentes. Um espaço de cor popular é o espaço de cor RGB, em que a cor é representada como uma combinação de três valores de componentes de cores primárias (ou seja, vermelho, verde e azul). Para compressão de vídeo colorido, o espaço de cor YCbCr tem sido amplamente usado, conforme descrito em A. Ford e A. Roberts, “Colour space conversions”, University of Westminster, London, Tech. Rep., agosto de 1998.
[0212] YCbCr pode ser facilmente convertido do espaço de cor RGB por meio de uma transformação linear e a redundância entre diferentes componentes, ou seja, a redundância de componentes cruzados, é significativamente reduzida no espaço de cor YCbCr. Uma vantagem do YCbCr é a compatibilidade retroativa com TV em preto e branco, pois o sinal Y transmite informações de luminância. Além disso, a largura de banda de crominância pode ser reduzida pela subamostragem dos componentes Cb e Cr no formato de amostragem de croma 4:2:0 com impacto subjetivo significativamente menor do que a subamostragem no espaço de cor RGB. Devido a essas vantagens, o YCbCr tem sido o principal espaço de cor na compressão de vídeo. Existem também outros espaços de cor, como YCoCg, usados na compressão de vídeo. Nesta revelação, independentemente do espaço de cor real usado, o luma (ou L ou Y) e dois croma (Cb e Cr) são usados para representar os três componentes de cor no esquema de compressão de vídeo.
[0213] Por exemplo, quando a estrutura de amostragem de formato de croma é amostragem 4:2:0, cada um dos dois arranjos croma tem metade da altura e metade da largura do arranjo luma. As localizações relativas nominais verticais e horizontais das amostras de luma e croma nas imagens são mostradas na Figura 9A. A Figura 9B ilustra um exemplo de amostragem 4:2:0. A Figura 9B ilustra um exemplo de um bloco de luma e um bloco de croma colocalizados. Se o formato de vídeo for YUV4:2:0, haverá um bloco de luma de 16x16 e dois blocos de croma de 8x8.
[0214] Especificamente, um bloco de codificação ou um bloco de transformada contém um bloco de luma e dois blocos de croma.
[0215] Como mostrado, o bloco de luma contém quatro vezes mais amostras do que o bloco de croma. Especificamente, o bloco de croma contém N número de amostras por N número de amostras, enquanto o bloco de luma contém 2N número de amostras por 2N número de amostras. Portanto, o bloco de luma é quatro vezes a resolução do bloco de croma. Por exemplo, quando o formato YUV4:2:0 é usado, as amostras de luma podem ser reduzidas por um fator de quatro (por exemplo, largura por dois e altura por dois). YUV é um sistema de codificação de cor que emprega um espaço de cor em termos de componentes de luma Y e dois componentes de crominância U e V.
Cabeçalho de imagem:
[0216] O conceito de cabeçalho de imagem foi recentemente introduzido no padrão VVC (conforme apresentado em JVET-P1006, P0095, P0120, P0239). Consulte a seção 7.3.2.6 no JVET-P2001-VE para a sintaxe do cabeçalho de imagem.
[0217] No atual projeto do VVC, um conceito obrigatório de cabeçalho de imagem é proposto para ser transmitido uma vez por imagem como a primeira unidade VCL NAL de uma imagem. O projeto atual do VVC também move alguns dos elementos de sintaxe atualmente presentes no cabeçalho de fatia para esse cabeçalho de imagem. Elementos de sintaxe que funcionalmente só precisam ser transmitidos uma vez por imagem são movidos para o cabeçalho de imagem em vez de serem transmitidos várias vezes para uma determinada imagem, por exemplo, elementos de sintaxe no cabeçalho de fatia são transmitidos uma vez por fatia. Há um benefício observado ao mover elementos de sintaxe a partir do cabeçalho de fatia, pois a computação necessária para o processamento de cabeçalho de fatia pode ser um fator limitante para a taxa de transferência geral.
[0218] Para o filtro loop adaptativo (ALF), os seguintes elementos de sintaxe (elementos de sintaxe relacionados ao ALF) foram introduzidos no cabeçalho de imagem: 7.3.2.6 Sintaxe de RBSP de cabeçalho de imagem
[0219] Aqui, os elementos de sintaxe são pic_alf_enabled_present_flag, pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[i], pic_alf_chroma_idc, pic_alf_aps_id_chroma. Esses elementos de sintaxe são fornecidos no cabeçalho de imagem, em que sua presença depende potencialmente de outros elementos de sintaxe que foram sinalizados anteriormente ou de outra forma. Por exemplo, sps_alf_enabled_flag e ChromaArrayType são outros elementos de sintaxe.
[0220] A seguir, qualquer elemento de sintaxe indicado com um descritor em uma tabela e/ou fornecido em letras em negrito é um elemento de sintaxe que é sinalizado ou fornecido na estrutura de sintaxe atual.
[0221] No cabeçalho de fatia, as seguintes alterações de sintaxe são introduzidas para o ALF 7.3.7.1 Sintaxe de cabeçalho de fatia geral
[0222] A semântica das entradas de cabeçalho de imagem ALF e entradas de cabeçalho de fatia são as seguintes:
[0223] pic_alf_enabled_present_flag igual a 1 especifica que pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[i], pic_alf_chroma_idc e pic_alf_aps_id_chroma estão presentes no PH. pic_alf_enabled_present_flag igual a 0 especifica que pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[i], pic_alf_chroma_idc e pic_alf_aps_id_chroma não estão presentes no PH. Quando pic_alf_enabled_present_flag não está presente, infere-se que é igual a 0.
[0224] pic_alf_enabled_flag igual a 1 especifica que o filtro loop adaptativo está habilitado para todas as fatias associadas ao PH e pode ser aplicado ao componente de cor Y, Cb ou Cr nas fatias. pic_alf_enabled_flag igual a 0 especifica que o filtro loop adaptativo pode ser desabilitado para um, ou mais, ou todas as fatias associadas ao PH. Quando não está presente, pic_alf_enabled_flag é inferido como igual a 0.
[0225] pic_num_alf_aps_ids_luma especifica o número de ALF APSs aos quais as fatias associadas ao PH se referem.
[0226] pic_alf_aps_id_luma[i] especifica o adapter_parameter_set_id do i-ésimoALF APS ao qual o componente de luma das fatias associadas ao PH se refere.
[0227] O valor de alf_luma_filter_signal_flag da unidade APS NAL tendo aps_params_type igual a ALF_APS e adapter_parameter_set_id igual a pic_alf_aps_id_luma[i] deve ser igual a 1.
[0228] pic_alf_chroma_idc igual a 0 especifica que o filtro loop adaptativo não é aplicado aos componentes de cor Cb e Cr. pic_alf_chroma_idc igual a 1 indica que o filtro loop adaptativo é aplicado ao componente de cor Cb. pic_alf_chroma_idc igual a 2 indica que o filtro loop adaptativo é aplicado ao componente de cor Cr. pic_alf_chroma_idc igual a 3 indica que o filtro loop adaptativo é aplicado aos componentes de cor Cb e Cr. Quando pic_alf_chroma_idc não está presente, infere-se que é igual a 0.
[0229] pic_alf_aps_id_chroma especifica o adapter_parameter_set_id do ALF APS ao qual o componente de croma das fatias associadas ao PH se refere.
[0230] O valor de alf_chroma_filter_signal_flag da unidade APS NAL tendo aps_params_type igual a ALF_APS e adapter_parameter_set_id igual a pic_alf_aps_id_chroma deve ser igual a 1.
[0231] slice_alf_enabled_flag igual a 1 especifica que o filtro loop adaptativo está habilitado e pode ser aplicado ao componente de cor Y, Cb ou Cr em uma fatia. slice_alf_enabled_flag igual a 0 especifica que o filtro loop adaptativo está desabilitado para todos os componentes de cor em uma fatia. Quando não estiver presente, o valor de slice_alf_enabled_flag é inferido como igual a pic_alf_enabled_flag.
[0232] slice_num_alf_aps_ids_luma especifica o número de ALF APSs aos quais a fatia se refere. Quando slice_alf_enabled_flag é igual a 1 e slice_num_alf_aps_ids_luma não está presente, o valor de slice_num_alf_aps_ids_luma é inferido como igual ao valor de pic_num_alf_aps_ids_luma.
[0233] slice_alf_aps_id_luma[i] especifica o adapter_parameter_set_id do i-ésimoALF APS ao qual o componente de luma da fatia se refere. O TemporalId da unidade APS NAL tendo aps_params_type igual a ALF_APS e adapter_parameter_set_id igual a slice_alf_aps_id_luma[i] deve ser menor ou igual ao TemporalId da unidade NAL de fatia codificada. Quando slice_alf_enabled_flag é igual a 1 e slice_alf_aps_id_luma[i] não está presente, o valor de slice_alf_aps_id_luma[i] é inferido como igual ao valor de pic_alf_aps_id_luma[i].
[0234] O valor de alf_luma_filter_signal_flag da unidade APS NAL tendo aps_params_type igual a ALF_APS e adapter_parameter_set_id igual a slice_alf_aps_id_luma[i] deve ser igual a 1.
[0235] slice_alf_chroma_idc igual a 0 especifica que o filtro loop adaptativo não é aplicado aos componentes de cor Cb e Cr. slice_alf_chroma_idc igual a 1 indica que o filtro loop adaptativo é aplicado ao componente de cor Cb. slice_alf_chroma_idc igual a 2 indica que o filtro loop adaptativo é aplicado ao componente de cor Cr. slice_alf_chroma_idc igual a 3 indica que o filtro loop adaptativo é aplicado aos componentes de cor Cb e Cr. Quando slice_alf_chroma_idc não está presente, infere-se que seja igual a pic_alf_chroma_idc.
[0236] slice_alf_aps_id_chroma especifica o adapter_parameter_set_id do ALF APS ao qual o componente de croma da fatia se refere. O TemporalId da unidade APS NAL tendo aps_params_type igual a ALF_APS e adapter_parameter_set_id igual a slice_alf_aps_id_chroma deve ser menor ou igual ao TemporalId da unidade NAL de fatia codificada. Quando slice_alf_enabled_flag é igual a 1 e slice_alf_aps_id_chroma não está presente, o valor de slice_alf_aps_id_chroma é inferido como igual ao valor de pic_alf_aps_id_chroma.
[0237] O valor de alf_chroma_filter_signal_flag da unidade APS NAL tendo aps_params_type igual a ALF_APS e adapter_parameter_set_id igual a slice_alf_aps_id_chroma deve ser igual a 1.
[0238] Conforme descrito acima, quando todas as fatias têm os mesmos dados de filtragem ALF, em vez de transmitir os dados de filtragem ALF separadamente em cada um dos cabeçalhos de fatia, os dados comuns de filtragem ALF em todas as fatias são transmitidos apenas uma vez no cabeçalho de imagem e como um resultado, todas as fatias herdam os dados de filtragem ALF do cabeçalho de imagem. Desta forma, o overhead do cabeçalho de fatia (em termos de número de bits) é reduzido.
[0239] A presente revelação reúne todos os elementos de sintaxe comuns de CCALF que são sinalizados em cada cabeçalho de fatia de uma imagem e são definidos no cabeçalho de imagem. A presente revelação tenta estender o mesmo princípio de sinalização de ALF também para o ALF de componente cruzado (CCALF). Atualmente, para o CCALF, cada cabeçalho de fatia deve transmitir as seguintes informações da maneira convencional: 7.3.7.1 Sintaxe de cabeçalho de fatia geral
[0240] Portanto, cada fatia deve transmitir todos os elementos de sintaxe acima, mesmo que as informações sejam as mesmas em todas as fatias de uma determinada imagem.
[0241] Portanto, para reduzir o overhead do cabeçalho de fatia, a presente invenção define entradas de cabeçalho de imagem também para CCALF.
1.1 Problema(s) técnico(s) a ser(em) resolvido(s) pela presente revelação
[0242] A presente revelação introduz entradas de cabeçalho de imagem para CCALF para reduzir o overhead de fatia. Conforme mostrado na Figura 7, a fatia 1 até a fatia N contém as mesmas informações de filtro CCALF 7001. Portanto, cada cabeçalho de fatia tem que transmitir os mesmos dados resultando em redundância e overhead de sinalização de bit de fatia. Como mostrado na Figura 8, para remover esta redundância nos dados de CCALF, são introduzidas entradas de cabeçalho de imagem 8001 para CCALF que definem os dados de CCALF comuns (também chamados de informações relacionadas a CCALF) e todas as fatias podem então herdar essas informações comuns 8002. Portanto, isso remove a redundância na sinalização e reduz o overhead de análise de cabeçalhos de fatia.
1.2 Modalidades da implementação técnica da presente revelação
[0243] Note que cada uma das modalidades abaixo reveladas como "alternativas" pode ser fornecida em combinação com qualquer uma das outras modalidades (alternativas) e pode ser implementada especificamente usando qualquer um dos dispositivos descritos acima, como um codificador e/ou um decodificador como referidos nas figuras acima.
1.2.1. Modalidade Alternativa 1
[0244] Na primeira etapa, é introduzido um novo elemento de sintaxe do conjunto de parâmetros de sequência (SPS) chamado “segundo elemento de sintaxe” (denotado abaixo, por exemplo, com sps_ccalf_enabled_flag) que controla se o CCALF está habilitado ou não. A sintaxe é mostrada abaixo: o segundo elemento de sintaxe (sps_ccalf_enabled_flag) desacopla a operação ALF e a operação CCALF completamente e, portanto, permite que ALF e CCALF sejam ligados e desligados separadamente no nível de sequência. 7.3.2.3 Sintaxe de RBSP de conjunto de parâmetros de sequência
[0245] Aqui, sps_alf_enabled_flag é um exemplo de um primeiro elemento de sintaxe que também é fornecido na sintaxe de nível de SPS. O primeiro e o segundo elemento de sintaxe podem ser sinalizados independentemente um do outro, conforme fornecido exemplificativamente na tabela acima. No entanto, como por exemplo fornecido na modalidade alternativa 5 abaixo, o segundo elemento de sintaxe também pode ser sinalizado dependendo, por exemplo, de um valor que o primeiro elemento de sintaxe tenha ou receba.
[0246] As novas entradas de cabeçalho de imagem (marcadas em negrito e itálico) são mostradas abaixo: 7.3.2.6 Sintaxe de RBSP de cabeçalho de imagem
[0247] Aqui, elementos de sintaxe adicionais são introduzidos no cabeçalho de imagem, em que esses elementos de sintaxe adicionais só podem estar presentes se o primeiro e/ou segundo elementos de sintaxe assumirem valores específicos. Isso é indicado com a sintaxe “if”, dependendo do valor do primeiro elemento de sintaxe e/ou do segundo elemento de sintaxe.
[0248] Especificamente, no cabeçalho de imagem, um terceiro elemento de sintaxe (indicado aqui com pic_ccalf_enabled_flag) pode ser fornecido dependendo do valor do segundo elemento de sintaxe. Este elemento de sintaxe pode indicar (como explicado abaixo) se o CCALF deve ser habilitado para a imagem atual.
[0249] Um quarto elemento de sintaxe (como pic_cross_component_alf_cb_enabled_flag) pode ser adicionalmente fornecido no cabeçalho de imagem dependendo do segundo elemento de sintaxe.
[0250] Dependendo, por exemplo, do valor do segundo elemento de sintaxe e/ou do valor do terceiro elemento de sintaxe e/ou do quarto elemento de sintaxe, pode ser fornecido um quinto elemento de sintaxe, como pic_cross_component_alf_cb_aps_id. Além disso, um sexto elemento de sintaxe, denotado aqui com pic_cross_component_cb_filters_signalled_minus1 , pode ser fornecido no cabeçalho de imagem, potencialmente também dependendo do segundo elemento de sintaxe e/ou do terceiro elemento de sintaxe e/ou do quarto elemento de sintaxe.
[0251] Em paralelo a isso, um sétimo elemento de sintaxe, denotado acima com pic_cross_component_alf_cr_enabled_flag, pode ser fornecido, dependendo do segundo elemento de sintaxe e/ou do terceiro elemento de sintaxe.
[0252] Dependendo, por exemplo, do valor do sétimo elemento de sintaxe, mas potencialmente também dependendo do segundo elemento de sintaxe e/ou do terceiro elemento de sintaxe, um oitavo (como pic_cross_component_alf_cr_aps_id) e/ou um nono elemento de sintaxe (como pic_cross_component_cr_filters_signalled_minus1) podem ser fornecidos.
[0253] O significado do primeiro ao nono elemento de sintaxe e também o significado do décimo ao décimo quarto elemento de sintaxe especificado abaixo serão explicados posteriormente.
[0254] A sintaxe de cabeçalho de fatia é a seguinte: 7.3.7.1 Sintaxe de cabeçalho de fatia geral
[0255] Conforme fornecido acima, em algumas modalidades, os elementos de sintaxe adicionais fornecidos na sintaxe de cabeçalho de fatia podem ser fornecidos apenas se o primeiro e/ou segundo elemento de sintaxe e/ou um ou mais elementos de sintaxe adicionais fornecidos no cabeçalho de imagem assumirem valores apropriados.
[0256] Especificamente, como mostrado acima, um décimo elemento de sintaxe, como slice_cross_component_alf_cb_enabled_flag , pode ser fornecido dependendo do valor do segundo elemento de sintaxe e potencialmente também dependendo de um décimo quarto elemento de sintaxe (opcionalmente fornecido no nível de SPS e indicado aqui com ChromaArrayType) não sendo igual a 0. Além disso, pode ser fornecido um décimo primeiro elemento de sintaxe que é indicado acima com slice_cross_component_alf_cb_aps_id , dependendo do valor do segundo elemento de sintaxe e/ou dependendo do valor do décimo elemento de sintaxe.
[0257] Correspondentemente, um décimo segundo elemento de sintaxe, como slice_cross_component_alf_cr_enabled_flag , pode ser fornecido dependendo do valor do segundo elemento de sintaxe e potencialmente também dependendo do décimo quarto elemento de sintaxe não ser igual a 0. Além disso, um décimo terceiro elemento de sintaxe pode ser fornecido, indicado acima com slice_cross_component_alf_cr_aps_id , dependendo do valor do segundo elemento de sintaxe e/ou dependendo do valor do décimo segundo elemento de sintaxe.
[0258] No entanto, também está incluído que os elementos de sintaxe (especificamente o décimo ao décimo terceiro elementos de sintaxe) fornecidos no cabeçalho de fatia podem estar presentes independentemente do valor de outros elementos de sintaxe, como o segundo elemento de sintaxe ou o décimo quarto elemento de sintaxe. Especificamente, pode ser fornecido que os elementos de sintaxe pertencentes a CC-ALF no cabeçalho de fatia (como, por exemplo, o décimo ao décimo terceiro elementos de sintaxe) assumem um valor padrão se o primeiro elemento de sintaxe ou o segundo elemento de sintaxe ou outro elemento de sintaxe indica que CC-ALF não está habilitado.
[0259] A semântica dos elementos de sintaxe recém-introduzidos é a seguinte:
[0260] O segundo elemento de sintaxe é indicado aqui com sps_ccalf_enabled_flag. Isso é apenas exemplificativo e não limita a revelação. Nas modalidades, o valor do segundo elemento de sintaxe igual a 0 especifica que o filtro loop adaptativo de componente cruzado está desabilitado para uma sequência de vídeo atual. O valor do segundo elemento de sintaxe igual a 1 especifica que o filtro loop adaptativo de componente cruzado está habilitado para uma sequência de vídeo atual.
[0261] pic_ccalf_enabled_present_flag igual a 1 especifica que pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag, pic_cross_component_alf_cb_aps_id, pic_cross_component_alf_cb_filter_count_minus1, pic_cross_component_alf_cr_enabled_flag, pic_cross_component_alf_cr_aps_id e pic_cross_component_alf_cr_filter_count_minus1 estão presentes no PH (cabeçalho de imagem). pic_alf_enabled_present_flag igual a 0 especifica que pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag, pic_cross_component_alf_cb_aps_id, pic_cross_component_alf_cb_filter_count_minus1, pic_cross_component_alf_cr_enabled_flag, pic_cross_component_alf_cr_aps_id e pic_cross_component_alf_cr_filter_count_minus1 não estão presents no PH. Quando pic_ccalf_enabled_present_flag não está presente, infere-se que é igual a 0.
[0262] O valor do terceiro elemento de sintaxe (denotado aqui com pic_ccalf_enabled_flag) igual a 1 especifica que o filtro loop adaptativo de componente cruzado está habilitado para todas as fatias associadas ao PH e pode ser aplicado ao componente de cor Cb ou Cr nas fatias. O valor do terceiro elemento de sintaxe igual a 0 especifica que o filtro loop adaptativo de componente cruzado pode ser desabilitado para uma, ou mais, ou todas as fatias associadas ao PH (cabeçalho de imagem). Quando não estiver presente, o valor do terceiro elemento de sintaxe pode ser inferido igual a 0.
[0263] Um quarto elemento de sintaxe foi mencionado acima e pode ser denotado aqui com pic_cross_component_alf_cb_enabled_flag . O valor do quarto elemento de sintaxe igual a 0 especifica que o filtro Cb de componente cruzado não é aplicado ao componente de cor Cb de todas as fatias associadas ao PH. Quando o valor do quarto elemento de sintaxe é igual a 1, isso indica que o filtro de Cb de componente cruzado é aplicado ao componente de cor Cb de todas as fatias associadas ao PH. Quando o quarto elemento de sintaxe não está presente, infere-se que é igual a 0.
[0264] Um quinto elemento de sintaxe pode ser denotado aqui com pic_cross_component_alf_cb_aps_id . O quinto elemento de sintaxe especifica o adapter_parameter_set_id que é o componente de cor Cb de todas as fatias associadas ao PH.
[0265] Um sexto elemento de sintaxe pode ser denotado aqui com pic_cross_component_cb_filters_signalled_minus1 . O valor do sexto elemento de sintaxe mais 1 especifica o número de filtros de Cb de componente cruzado de todas as fatias associadas ao PH. O valor do sexto elemento de sintaxe deve estar na faixa de 0 a 3.
[0266] Quando o quarto elemento de sintaxe é igual a 1, é um requisito de conformidade de fluxo de bits que o sexto elemento de sintaxe deve ser menor ou igual ao valor de alf_cross_component_cb_filters_signalled_minus1 no ALF APS referido pelo quinto elemento de sintaxe da imagem atual.
[0267] Um sétimo elemento de sintaxe mencionado acima é indicado com pic_cross_component_alf_cr_enabled_flag. O valor do sétimo elemento de sintaxe igual a 0 especifica que o filtro de Cr de componente cruzado não é aplicado ao componente de cor Cr de todas as fatias associadas ao PH. O valor do sétimo elemento de sintaxe igual a 1 indica que o filtro de Cr de componente cruzado é aplicado ao componente de cor Cr de todas as fatias associadas ao PH. Quando o sétimo elemento de sintaxe não está presente, infere-se que é igual a 0.
[0268] Um oitavo elemento de sintaxe também foi mencionado e exemplarmente denotado com pic_cross_component_alf_cr_aps_id. O valor do elemento de sintaxe oitavo destina-se a especificar o adapter_parameter_set_id que o componente de cor Cr de todas as fatias associadas ao PH.
[0269] Além disso, é mencionado um nono elemento de sintaxe que pode ser denotado com pic_cross_component_cr_filters_signalled_minus1 . O valor do nono elemento de sintaxe mais 1 especifica o número de filtros de Cr de componente cruzado de todas as fatias associadas ao PH. O valor do nono elemento de sintaxe deve estar na faixa de 0 a 3.
[0270] Quando o valor do sétimo elemento de sintaxe é igual a 1, é um requisito de conformidade de fluxo de bits que o valor do nono elemento de sintaxe deve ser menor ou igual ao valor de alf_cross_component_cr_filters_signalled_minus1 no ALF APS referido pelo oitavo elemento de sintaxe da imagem atual.
[0271] A semântica dos elementos de sintaxe de cabeçalho de fatia CCALF é refinada da seguinte forma:
[0272] slice_ccalf_enabled_flag igual a 1 especifica que o filtro loop adaptativo de componente cruzado está habilitado e pode ser aplicado ao componente de cor Cb ou Cr em uma fatia. slice_alf_enabled_flag igual a 0 especifica que o filtro loop adaptativo de componente cruzado está desabilitado para todos os componentes de cor em uma fatia. Quando não está presente, o valor de slice_ccalf_enabled_flag é inferido como igual ao terceiro elemento de sintaxe.
[0273] O décimo elemento de sintaxe mencionado acima pode ser indicado com slice_cross_component_alf_cb_enabled_flag e pode ser fornecido que o valor do décimo elemento de sintaxe igual a 0 especifica que o filtro Cb de componente cruzado não é aplicado ao componente de cor Cb. O décimo elemento de sintaxe igual a 1 indica que o filtro Cb de componente cruzado é aplicado ao componente de cor Cb. Quando o décimo elemento de sintaxe não está presente, é inferido ser igual ao quarto elemento de sintaxe (como pic_cross_component_alf_cb_enabled_flag).
[0274] Um décimo primeiro elemento de sintaxe mencionado acima pode ser referido como slice_cross_component_alf_cb_aps_id. O valor do décimo primeiro elemento de sintaxe especifica o adapter_parameter_set_id ao qual o componente de cor Cb da fatia se refere.
[0275] Quando o décimo elemento de sintaxe tem um valor que é igual a 1, é um requisito de conformidade de fluxo de bits que, para todas as fatias da imagem atual, o ALF APS referido pelo décimo primeiro elemento de sintaxe seja o mesmo.
[0276] Quando o décimo elemento de sintaxe é igual a 1 e o décimo primeiro elemento de sintaxe não está presente, o valor do décimo primeiro elemento de sintaxe é inferido como igual ao valor do quinto elemento de sintaxe.
[0277] slice_cross_component_cb_filters_signalled_minus1 mais 1 especifica o número de filtros de Cb de componente cruzado. O valor de slice_cross_component_cb_filters_signalled_minus1 deve estar na faixa de 0 a 3.
[0278] Quando o décimo elemento de sintaxe for igual a 1, é um requisito de conformidade de fluxo de bits que slice_cross_component_cb_filters_signalled_minus1 deve ser menor ou igual ao valor de alf_cross_component_cb_filters_signalled_minus1 no ALF APS referido pelo décimo primeiro da fatia atual.
[0279] Quando o décimo elemento de sintaxe é igual a 1 e o décimo primeiro não está presente, o valor de slice_cross_component_cb_filters_signalled_minus1 é inferido como igual ao valor de pic_cross_component_cb_filters_signalled_minus1
[0280] Um décimo segundo elemento de sintaxe mencionado pode ser referido como slice_cross_component_alf_cr_enabled_flag . O valor do décimo segundo elemento de sintaxe igual a 0 especifica que o filtro de Cr de componente cruzado não é aplicado ao componente de cor Cr. O valor do décimo segundo elemento de sintaxe igual a 1 indica que o filtro loop adaptativo de componente cruzado é aplicado ao componente de cor Cr. Quando o décimo segundo elemento de sintaxe não está presente, infere-se que seja igual ao sétimo elemento de sintaxe, como pic_cross_component_alf_cr_enabled_flag .
[0281] Um décimo terceiro elemento de sintaxe foi mencionado e pode ser adicionalmente referido como slice_cross_component_alf_cr_aps_id . O valor do décimo terceiro elemento de sintaxe especifica o adapter_parameter_set_id ao qual o componente de cor Cr da fatia se refere.
[0282] Quando o valor do décimo segundo elemento de sintaxe é igual a 1, é um requisito de conformidade do fluxo de bits que, para todas as fatias da imagem atual, o ALF APS referido pelo décimo terceiro elemento de sintaxe seja o mesmo.
[0283] Quando o valor do décimo segundo elemento de sintaxe é igual a 1 e o décimo terceiro elemento de sintaxe não está presente, o valor do décimo terceiro elemento de sintaxe é inferido como igual ao valor do oitavo elemento de sintaxe.
[0284] slice_cross_component_cr_filters_signalled_minus1 mais 1 especifica o número de filtros de Cr de componente cruzado. O valor de slice_cross_component_cr_filters_signalled_minus1 deve estar na faixa de 0 a 3.
[0285] Quando o décimo segundo elemento de sintaxe é igual a 1, é um requisito de conformidade de fluxo de bits que slice_cross_component_cr_filters_signalled_minus1 deve ser menor ou igual ao valor de alf_cross_component_cr_filters_signalled_minus1 no ALF APS referenciado referido pelo décimo terceiro elemento de sintaxe da fatia atual.
[0286] Quando o décimo segundo elemento de sintaxe é igual a 1 e o décimo terceiro elemento de sintaxe não está presente, o valor de slice_cross_component_cr_filters_signalled_minus1 é inferido como igual ao valor de pic_cross_component_cr_filters_signalled_minus1.
Modalidade Alternativa 2:
[0287] Na alternativa 2, o segundo elemento de sintaxe no nível de SPS (como sps_ccalf_enabled_flag) não é mais introduzido, portanto o primeiro elemento de sintaxe (como sps_alf_enabled_flag) também controla a aplicação do filtro ccalf.
[0288] A sintaxe para a alternativa 2 é a seguinte: 7.3.2.6 Sintaxe de RBSP de cabeçalho de imagem
[0289] Nesta segunda modalidade, o segundo elemento de sintaxe, que pode ser sps_ccalf_enabled_flag, pode ser fornecido no nível de SPS. Se CCALF deve ou não ser habilitado pode, nesta modalidade, ser especificado com base em um elemento de sintaxe adicional, como pic_ccalf_enabled_present_flag, que especifica se CCALF que outros elementos de sintaxe pertencentes a CCALF estão presentes e a partir do qual pode ser adicionalmente obtido que, para a imagem atual à qual pic_ccalf_enabled_present_flag pertence, CCALF deve ser habilitado.
[0290] A sintaxe de cabeçalho de fatia é a seguinte: 7.3.7.1 Sintaxe de cabeçalho de fatia geral
[0291] Como visto acima, a presença de elementos de sintaxe no cabeçalho de fatia, como, por exemplo, slice_ccalf_enabled_flag, slice_cross_component_alf_cb_enabled_flag, slice_cross_component_alf_cb_aps_id, slice_cross_component_cb_filters_signalled_minus1, slice_cross_component_alf_cr_enabled_flag, slice_cross_component_alf_cr_aps_id e slice_cross_component_cr_filters_signalled_minus1 , e/ou o décimo ao décimo terceiro elementos de sintaxe já referidos acima podem depender do primeiro elemento de sintaxe fornecido no nível de SPS, como sps_alf_enabled_flag, e um elemento de sintaxe fornecido no cabeçalho de imagem, como pic_ccalf_enabled_present_flag e potencialmente em outro elemento de sintaxe fornecido no cabeçalho de fatia, como slice_ccalf_enabled_flag. Modalidade Alternativa 3:
[0292] A outra alternativa para as entradas de cabeçalho de imagem CCALF é a seguinte: nesta alternativa pic_alf_enabled_present_flag, pic_alf_enabled_flag controla as entradas de cabeçalho de imagem CCALF e de cabeçalho de fatia CCALF, respectivamente. 7.3.2.6 Sintaxe de RBSP de cabeçalho de imagem
[0293] A sintaxe de cabeçalho de fatia é a seguinte: 7.3.7.1 Sintaxe de cabeçalho de fatia geral
[0294] Pode-se notar que !(0) = 1 ou !(1) = 0.
Modalidade Alternativa 4:
[0295] Como, no projeto atual do CCALF, há uma restrição de que slice_cross_component_alf_cb_aps_id, slice_cross_component_alf_cr _aps_id deve ser o mesmo em todas as fatias, não faz sentido repetir este elemento de sintaxe no cabeçalho de fatia, mas apenas sinalizar o pic_cross_component_alf_cb_aps_id e pic_cross_component_alf_cr_aps_id no cabeçalho de imagem. Os valores dos elementos de sintaxe slice_cross_component_alf_cb_aps_id e slice_cross_component_alf_cr podem então ser inferidos como sendo os mesmos que pic_cross_component_alf_cb_aps_id e pic_cross_component_alf_cr_aps_id. Assim, a quantidade de informações no fluxo de bits pode ser adicionalmente reduzida.
[0296] A sintaxe possível é a seguinte: 7.3.2.6 Sintaxe de RBSP de cabeçalho de imagem
[0297] Aqui, os outros elementos de sintaxe que pertencem a CCALF (ou seja, pelo menos os elementos de sintaxe que compreendem um elemento ccalf ou cross_component_alf ou cc_alf são fornecidos dependendo de um valor do segundo elemento de sintaxe sinalizado no nível de SPS, ou seja, nesta modalidade sps_ccalf_enabled_flag.
[0298] Especificamente, dependendo do valor do segundo elemento de sintaxe, um terceiro elemento de sintaxe, como pic_ccalf_enabled_flag, pode ser fornecido no cabeçalho de imagem, em que esse terceiro elemento de sintaxe pode indicar se o CCALF está habilitado para as fatias da imagem atual.
[0299] Além disso, um quarto elemento de sintaxe, como pic_cross_component_alf_cb_enabled_flag, e um sétimo elemento de sintaxe, como pic_cross_component_alf_cb_enabled_flag, podem ser fornecidos no cabeçalho de imagem dependendo do valor do segundo elemento de sintaxe.
[0300] A sintaxe de cabeçalho de fatia pode ser a seguinte: 7.3.7.1 Sintaxe de cabeçalho de fatia geral
[0301] Também para esta modalidade, pode ser fornecido que os elementos de sintaxe no cabeçalho de fatia que pertencem a CCALF sejam fornecidos dependendo do valor do segundo elemento de sintaxe fornecido no nível de SPS e/ou dependendo de um valor de um ou mais elementos de sintaxe pertencentes a CCALF fornecido no cabeçalho de imagem, como por exemplo pic_ccalf_enabled_present_flag.
[0302] slice_cross_component_alf_cb_aps_id sempre pode ser inferido como o mesmo valor de pic_cross_component_alf_cb_aps_id.
[0303] slice_cross_component_alf_cr_aps_id sempre pode ser inferido como o mesmo valor de pic_cross_component_alf_cr_aps_id.
[0304] A outra sintaxe possível é a seguinte: 7.3.2.6 Sintaxe de RBSP de cabeçalho de imagem
[0305] Na sintaxe de acordo com a tabela acima, a presença de elementos de sintaxe que pertencem ao CCALF depende do valor do primeiro elemento de sintaxe fornecido no nível de SPS, como sps_alf_enabled_flag. O segundo elemento de sintaxe, como sps_ccalf_enabled_flag, pode ou não ser fornecido no nível de SPS nesta modalidade.
[0306] A sintaxe de cabeçalho de fatia pode ser a seguinte: 7.3.7.1 Sintaxe de cabeçalho de fatia geral
[0307] slice_cross_component_alf_cb_aps_id é sempre inferido como o mesmo que o valor de pic_cross_component_alf_cb_aps_id.
[0308] slice_cross_component_alf_cr_aps_id é sempre inferido como o mesmo que o valor de pic_cross_component_alf_cr_aps_id.
[0309] A outra sintaxe possível é a seguinte: Sintaxe de RBSP de cabeçalho de imagem
[0310] A sintaxe de cabeçalho de fatia é a seguinte: 7.3.7.1 Sintaxe de cabeçalho de fatia geral
[0311] Nesta modalidade, slice_cross_component_alf_cb_aps_id é sempre inferido como sendo o mesmo que o valor de pic_cross_component_alf_cb_aps_id.
[0312] Nesta modalidade, um décimo segundo elemento de sintaxe, como slice_cross_component_alf_cr_aps_id, é sempre inferido como sendo o mesmo que o valor do oitavo elemento de sintaxe, como pic_cross_component_alf_cr_aps_id).
[0313] Modalidade Alternativa 5:
[0314] A outra sintaxe alternativa é a possível abaixo: Nesta sintaxe, os parâmetros CCALF são sinalizados condicionalmente com base em um valor do segundo elemento de sintaxe, conforme já mencionado acima. Este segundo elemento de sintaxe pode ser fornecido como ou pode incluir uma flag, como sps_ccalf_enabled_flag. Sintaxe de RBSP de conjunto de parâmetros de sequência
[0315] Conforme visto na tabela acima, o segundo elemento de sintaxe sps_ccalf_enabled_flag é fornecido dependendo do valor do primeiro elemento de sintaxe sps_alf_enabled_flag e, opcionalmente, dependendo de um décimo quarto elemento de sintaxe, como ChromaArrayType. Especificamente, o segundo elemento de sintaxe pode, em algumas modalidades, ser sinalizado se o décimo quarto elemento de sintaxe assumir um valor diferente de zero. 7.3.2.3 Sintaxe de RBSP de conjunto de parâmetros de sequência
[0316] Notas: ChromaArrayType != 0, ou seja, não é componente de luma e Cb, Cr componente de croma
[0317] ChromaArrayType indica a amostragem de croma em relação à amostragem de luma conforme especificado na tabela a seguir.
[0318] Na amostragem monocromática existe apenas um arranjo de amostra, que é nominalmente considerado o arranjo luma.
[0319] Na amostragem 4:2:0, cada um dos dois arranjos croma tem metade da altura e metade da largura do arranjo luma.
[0320] Na amostragem 4:2:2, cada um dos dois arranjos croma tem a mesma altura e metade da largura do arranjo luma.
[0321] Na amostragem 4:4:4, cada um dos dois arranjos croma tem a mesma altura e largura do arranjo luma.
[0322] Conforme fornecido na tabela acima, o segundo elemento de sintaxe é fornecido se o primeiro elemento de sintaxe indicar “true”, ou seja, no caso do primeiro elemento de sintaxe ser sps_alf_enabled_flag e indicar que ALF deve ser habilitado. Além disso, o segundo elemento de sintaxe é fornecido se o décimo quarto elemento de sintaxe tiver um valor diferente de 0. 1.1.1.1 Sintaxe de RBSP de conjunto de parâmetros de sequência 1.1.1.2 Sintaxe de RBSP de conjunto de parâmetros de imagem Sintaxe de informações de restrição geral 7.3.3.2 Sintaxe de informações de restrição geral
[0323] Notas:
[0324] !(0) = 1
[0325] !(1) = 0 7.3.2.4 Sintaxe de RBSP de conjunto de parâmetros de imagem Sintaxe de RBSP de cabeçalho de imagem
[0326] alf_present_in_ph_flag igual a 1 especifica que os elementos de sintaxe para habilitar o uso de ALF podem estar presentes nos PHs (cabeçalhos de imagem) referentes ao PPS. alf_present_in_ph_flag igual a 0 especifica que os elementos de sintaxe para habilitar o uso de ALF podem estar presentes nos cabeçalhos de fatia referentes ao PPS. 7.3.2.6 Sintaxe de RBSP de cabeçalho de imagem
[0327] Conforme fornecido na tabela acima, a presença de outros elementos de sintaxe pertencentes a CCALF no cabeçalho de imagem, como um quarto elemento de sintaxe (como pic_cross_component_alf_cb_enabled_flag) e um sétimo elemento de sintaxe (como, por exemplo, pic_cross_component_alf_cr_enabled_flag), pode depender da presença e/ ou valor do segundo elemento de sintaxe. A presença de um quinto elemento de sintaxe, como pic_cross_component_alf_cb_aps_id pode então depender do segundo elemento de sintaxe e/ou a presença e/ou valor do quarto elemento de sintaxe, enquanto a presença e/ou valor de um oitavo elemento de sintaxe, como pic_cross_component_alf_cr_aps_id, pode depender na presença e/ou valor do segundo elemento de sintaxe e/ou presença e/ou valor do sétimo elemento de sintaxe. 7.3.7.1 Sintaxe de cabeçalho de fatia geral
[0328] Na tabela acima, outros elementos de sintaxe pertencentes a CCALF podem adicionalmente depender da presença e/ou valor do segundo elemento de sintaxe. Por exemplo, um décimo elemento de sintaxe, como slice_cross_component_alf_cb_enabled_flag, pode ser fornecido dependendo do segundo elemento de sintaxe. Dependendo da presença e/ou valor deste décimo elemento de sintaxe e/ou do segundo elemento de sintaxe, um décimo primeiro elemento de sintaxe, como slice_cross_component_alf_cb_aps_id, pode ser fornecido. Além disso, um décimo segundo elemento de sintaxe, como slice_cross_component_alf_cr_enabled_flag pode ser fornecido no cabeçalho de fatia dependendo do valor do segundo elemento de sintaxe. Dependendo da presença e/ou valor do décimo segundo elemento de sintaxe e/ou dependendo do segundo elemento de sintaxe, um décimo terceiro elemento de sintaxe, como slice_cross_component_alf_cr_aps_id, pode ser fornecido no cabeçalho de fatia.
[0329] Notas:
[0330] !(0) = 1
[0331] !(1) = 0
[0332] if(sps_alf_enabled_flag && !alf_present_in_ph_flag) significa “se sps_alf_enabled_flag for true (e) se alf_present_in_ph_flag for false)” Sintaxe de cabeçalho de fatia Sintaxe de cabeçalho de fatia geral
[0333] Na tabela acima, alguns elementos são mostrados como tachados. Isto significa dizer que, em uma primeira modalidade, esses elementos podem estar presentes. Em uma modalidade alternativa, esses elementos podem ser cancelados, deixando a sintaxe restante do jeito que está. Por exemplo, o elemento ChromaArrayType pode não ser fornecido. Correspondentemente, qualquer dependência deste elemento, incluindo também a presença condicional de outros elementos de sintaxe, pode ser fornecida em uma primeira modalidade. Em uma modalidade alternativa, essa dependência não existe, resultando, por exemplo, na presença de elementos de sintaxe em qualquer caso, enquanto na modalidade alternativa eles estavam presentes apenas se ChromaArrayType tivesse um valor específico.
[0334] Da mesma forma, elementos de sintaxe como slice_cross_component_cr_filters_signalled_minus1 e slice_cross_component_cb_filters_signalled_minus1 podem não ser fornecidos (independentemente de um elemento de sintaxe como ChromaArrayType estar presente).
[0335] A semântica dos elementos de sintaxe recém-introduzidos é a seguinte:
[0336] O valor do segundo elemento de sintaxe, como (sps_ccalf_enabled_flag) igual a 0 especifica que o filtro loop adaptativo de componente cruzado está desabilitado. O valor do primeiro elemento de sintaxe igual a 1 especifica que o filtro loop adaptativo de componente cruzado está habilitado. Isso também pode ser fornecido ao contrário, ou seja, se o segundo elemento de sintaxe tiver um valor igual a 1, CCALF pode ser desabilitado enquanto, se o segundo elemento de sintaxe tiver um valor igual a 0, CCALF pode ser habilitado.
[0337] no_ccalf_constraint_flag igual a 1 especifica que o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag) deve ser igual a 0. no_ccalf_constraint_flag igual a 0 não impõe tal restrição.
[0338] Nas modalidades, um processo de filtragem é apresentado como abaixo em detalhes.
[0339] Para as modalidades discutidas acima, algumas observações gerais são feitas abaixo em relação ao significado de elementos de sintaxe específicos e as consequências desses elementos de sintaxe assumindo valores específicos. A revelação apresentada abaixo destina-se a ser englobada por qualquer uma das modalidades acima, especificamente as modalidades alternativas 1 a 5.
8.8 Processo de filtro in-loop 8.8.1 Geral
[0340] ......
[0341] 4. Quando o primeiro elemento de sintaxe (indicado acima como sps_alf_enabled_flag) for igual a 1, aplica-se o seguinte: - Quando o segundo elemento de sintaxe (como sps_ccalf_enabled_flag) é igual a 1, o arranjo de amostra de imagem reconstruído (antes do filtro loop adaptativo) SL'é definido como igual ao arranjo de amostra de imagem reconstruído SL - O processo de filtro loop adaptativo conforme especificado na cláusula 8.8.5.1 é invocado com o arranjo de amostra de imagem reconstruído SL e, quando o décimo quarto elemento de sintaxe (nas tabelas acima, isso é denotado como ChromaArrayType) não é igual a 0, os arranjos SCb e SCr como entradas, e o arranjo de amostra de imagem reconstruído modificada S’L e, quando o décimo quarto elemento de sintaxe não for igual a 0, as arranjos S’Cb e S’Cr após o filtro loop adaptativo como saídas. - O arranjo S’L e, quando o décimo quarto elemento de sintaxe não for igual a 0, os arranjos S’Cb e S’Cr são atribuídos ao arranjo SL e, quando o décimo quarto elemento de sintaxe não for igual a 0, os arranjos SCb e SCr (que representam a imagem decodificada), respectivamente. - Quando o segundo elemento de sintaxe (como sps_ccalf_enabled_flag) é igual a 1, aplica-se o seguinte: - O processo de filtro loop adaptativo de componente cruzado conforme especificado na cláusula xxxx é invocado com o arranjo de amostra de imagem reconstruído SL e, quando o décimo quarto elemento de sintaxe (como ChromaArrayType) não é igual a 0, os arranjos SCb e SCr como entradas, e o arranjo de amostra de imagem reconstruído modificado S’L e, quando o décimo quarto elemento de sintaxe não é igual a 0, os arranjos S’Cb e S’Cr após o filtro loop adaptativo de componente cruzado como saídas. - O arranjo S’L e, quando o décimo quarto elemento de sintaxe não for igual a 0, os arranjos S’Cb e S’Cr são atribuídos ao arranjo SL e, quando o décimo quarto elemento de sintaxe não for igual a 0, os arranjos SCb e SCr (que representam a imagem decodificada), respectivamente.
[0342] Deve ser notado que a presente invenção não se limita às alternativas aqui apresentadas, mas sim a invenção de uma forma muito genérica permite que os dados de CCALF presentes no cabeçalho de fatia sejam sinalizados condicionalmente no cabeçalho de imagem. A principal vantagem de usar dados de CCALF no cabeçalho de imagem é que o overhead do sinal no cabeçalho de fatia é reduzido.
[0343] A invenção também abrange o caso em que um determinado elemento de sintaxe CCALF sinalizado no cabeçalho de fatia tem o mesmo valor em todas as fatias (por exemplo, devido a alguns requisitos de conformidade de fluxo de bits), então esse elemento de sintaxe específico não é mais sinalizado no cabeçalho de fatia, mas sim sinalizado apenas uma vez no cabeçalho de imagem associada a todas as fatias.
[0344] O filtro loop adaptativo de componente cruzado (CC-ALF) pode ser usado como filtro loop e como etapa de pós-processamento, respectivamente.
[0345] CC-ALF usa valores de amostra de luma para refinar cada componente de croma. CC_ALF é aplicado nas amostras de luma para derivar um fator de correção para a filtragem de amostra de croma.
[0346] JVET-P0080 e JVET-O0630 propõem um novo filtro in-loop chamado filtro ALF de componente cruzado. O CC-ALF opera como parte do processo de filtro loop adaptativo e faz uso de valores de amostra de luma para refinar cada componente de croma (componente Cr ou Cb). A ferramenta é controlada por informações no fluxo de bits, e essas informações incluem (a) coeficientes de filtro para cada componente de croma e (b) uma máscara que controla a aplicação do filtro para blocos de amostras. Os coeficientes de filtro são sinalizados no conjunto de parâmetros de adaptação (APS), enquanto os tamanhos de bloco e a máscara são sinalizados no nível de fatia.
[0347] Pode ser entendido que Máscara é um bit (0 ou 1). Aqui a máscara indica se o bloco de amostras deve ser filtrado ou não (máscara = 1 significa que está filtrado) e (máscara=0 significa que não está filtrado). Basicamente APS porta os coeficientes para ALF e outras informações.
[0348] O projeto geral do CC-ALF é mostrado na Figura 6 (a), Figura 6(b) e Figura 6(c). Este projeto geral pode ser aplicado a qualquer uma das modalidades acima que se referem a questões relacionadas a CC-ALF. Especificamente, o que é descrito aqui se destina a ser englobado por cada uma das modalidades alternativas 1 a 5.
[0349] A colocação do filtro é conforme mostrado na Figura 6a (veja o lado esquerdo). A forma do filtro é mostrada nas Figura6b e 6c.
[0350] O CC-ALF opera aplicando um filtro linear em forma de diamante (Figura 6b e 6c) ao canal de luma para cada componente de croma, que é expresso como, em que (%, y) é localização de componente de croma í sendo refinada (xc,yc) é a localização de luma com base em (%, y) 5,é suporte de filtro em luma para component de croma i Ci(x0,y0) representa os coeficientes de filtro
[0351] Note que há um primeiro componente de croma (como o componente de cor cb) quando i=1 para o componente de croma i, e há um segundo componente de croma (como o componente de cor cr) quando i=2 para o componente de croma i.
[0352] As principais características do CC-ALF incluem: • A localização de luma (xc,yc), em torno da qual a região de suporte está centralizada, é calculada com base no fator de escalonamento espacial entre os planos de luma e croma. Basicamente, o CCALF usa as amostras de Luma para refinar as amostras de Croma. Portanto, o filtro é aplicado nas amostras de Luma e, em seguida, o fator de correção para o Croma é derivado. • Todos os coeficientes de filtro são transmitidos no APS e possuem faixa dinâmica de 8 bits. • Um APS pode ser referenciado no cabeçalho de fatia. • Os coeficientes CC-ALF usados para cada componente de croma de uma fatia também são armazenados em um buffer correspondente a uma subcamada temporal. O reuso desses conjuntos de coeficientes de filtro de subcamada temporal é facilitada usando flags de nível de fatia. Pode ser entendido que as subcamadas temporais são basicamente definidas com base nas informações de referência. • A aplicação dos filtros CC-ALF é controlada em um tamanho de bloco variável e sinalizada por uma flag codificada pelo contexto recebida para cada bloco de amostras. O tamanho de bloco junto com uma flag de habilitação de CC-ALF é recebido no nível de fatia para cada componente de croma. • O preenchimento de fronteira para as fronteiras virtuais horizontais faz uso da repetição. Para as fronteiras restantes, o mesmo tipo de preenchimento é usado para ALF regular.
[0353] A Figura 8 é um diagrama de blocos mostrando entradas de cabeçalho de imagem para CCALF que são introduzidas que definem os dados comuns de CCALF e todas as fatias podem então herdar essas informações comuns comparadas com a Figura7.
[0354] A Figura 16 é um diagrama esquemático de uma estrutura de dados 5000, a estrutura de dados 5000 pode representar uma porção de um fluxo de bits 21 gerado por um codificador na Figura 2 e recebido por um decodificador na Figura 3. A estrutura de dados 5000 (isto é, o fluxo de bits de vídeo 5000) pode compreender um VPS 5005; um SPS 5010; um PPS 5015; e pelo menos quatro fatias 5020, 5025, 5030 e 5035. A fatia 5020 pode compreender um cabeçalho 5040 e dados 5045. As fatias 5025, 5030, 5035 são semelhantes à fatia 5020. Os dados 5045 podem compreender pelo menos três blocos 5050, 5055 e 5060, isto é, uma representação codificada de pelo menos três blocos 5050, 5055 e 5060. Embora sejam mostradas quatro fatias 5020-5035, o fluxo de bits de vídeo 5000 compreende qualquer número adequado de fatias. Embora três blocos 5050-5060 sejam mostrados, os dados 5045 compreendem qualquer número adequado de blocos. Além disso, cada fatia restante 5025, 5030, 5035 também compreende blocos. Assim, enquanto o fluxo de bits de vídeo 5000 compreende, isto é, uma representação codificada de vários blocos, o fluxo de bits de vídeo 5000 compreende um SPS 5010 e significativamente menos cabeçalhos de fatia do que blocos. Pode ser entendido que o fluxo de bits incluindo uma pluralidade de elementos de sintaxe relacionados a CC-ALF também pode ser mostrado na Figura16. Conforme mostrado pela sintaxe acima e abaixo, uma pluralidade de elementos de sintaxe relacionados a CC-ALF é claramente especificada. Além disso, o processo para codificar ou decodificar o fluxo de bits é claramente especificado na sintaxe e/ou semântica mencionada acima e abaixo.
[0355] O fluxo de bits mostrado aqui pode ser obtido codificando uma sequência de vídeo usando qualquer uma das modalidades descritas acima. Especificamente, este fluxo de bits pode ser obtido ou pode incluir os elementos de sintaxe e especificamente os elementos de sintaxe relacionados a CC-ALF conforme explicado nas modalidades alternativas 1 a 5 acima.
[0356] A Figura 14 mostra um fluxograma de um método 4200 de codificação, por exemplo, de um vídeo. Este método pode, por exemplo, ser implementado usando o codificador de acordo com a Figura 12, mas também qualquer outro codificador e dispositivo de codificação revelado neste documento pode ser usado para realizar este método.
[0357] O método 4200 de codificação compreende aplicar 4201 um filtro loop adaptativo de componente cruzado, CC-ALF para refinar um componente de croma e gerar 4202 um fluxo de bits incluindo uma pluralidade de elementos de sintaxe relacionados a CC-ALF, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF indica Informações relacionadas ao CC-ALF. Dentro do fluxo de bits gerado na etapa 4202, a pluralidade de elementos de sintaxe relacionados a CC-ALF é sinalizada em qualquer um ou mais dentre um nível de conjunto de parâmetros de sequência (SPS), um cabeçalho de imagem ou um cabeçalho de fatia. A pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um primeiro elemento de sintaxe que indica se um filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o primeiro elemento de sintaxe é sinalizado no nível de SPS, e um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS.
[0358] A Figura 15 mostra um fluxograma de um método 4300 de decodificação de, por exemplo, um vídeo de um fluxo de bits ou semelhantes. Este método 4300 pode, por exemplo, ser implementado usando o decodificador de acordo com a Figura 13. Além disso, qualquer outro decodificador e dispositivo de decodificação revelado neste documento pode ser usado para realizar o método 4300.
[0359] O método 4300 compreende analisar 4301 uma pluralidade de elementos de sintaxe relacionados a filtros de loop adaptativo de componente cruzado, CC-ALF, a partir de um fluxo de bits, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é obtida a partir de qualquer um ou mais dentre um conjunto de parâmetros de sequência (SPS), um cabeçalho de imagem ou um cabeçalho de fatia. A pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um primeiro elemento de sintaxe que indica se um filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o primeiro elemento de sintaxe é sinalizado no nível de SPS, e um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS. O método 4300 compreende adicionalmente uma etapa de realizar 4302 um processo de CC-ALF usando pelo menos um dentre a pluralidade de elementos de sintaxe relacionados a CC-ALF.
[0360] Em uma modalidade, é fornecido um método de codificação implementado por um dispositivo de codificação, o método compreendendo: realizar um processo de filtragem (como um processo de filtragem de componente cruzado) aplicando um filtro loop adaptativo de componente cruzado (CC-ALF); gerar um fluxo de bits incluindo uma pluralidade de CC-ALF elementos de sintaxe relacionados (como M elementos de sintaxe relacionados a CC-ALF e M>=1 e M é um número inteiro), em que a pluralidade de elementos de sintaxe relacionados a CC-ALF indica as informações relacionadas a CC- ALF, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é sinalizada em qualquer um ou mais dentre um nível de conjunto de parâmetros de vídeo (VPS), um nível de conjunto de parâmetros de sequência (SPS), um nível de conjunto de parâmetros de imagem (PPS), um cabeçalho de imagem, um cabeçalho de fatia ou um cabeçalho de tile; ou em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é sinalizada em um nível de conjunto de parâmetros de sequência (SPS) e/ou um cabeçalho de imagem.
[0361] Com este método, pode ser fornecido um fluxo de bits que é reduzido em tamanho, pois as informações relevantes, por exemplo, para todas as fatias de uma imagem podem ser fornecidas no cabeçalho de imagem apenas uma vez.
[0362] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende: um primeiro elemento de sintaxe (por exemplo, um primeiro indicador, como sps_ccalf_enabled_flag ou sps_alf_enabled_flag), em que o primeiro elemento de sintaxe (por exemplo, um primeiro indicador, como sps_ccalf_enabled_flag) é sinalizado em um nível de conjunto de parâmetros de sequência (SPS). Este indicador pode indicar se ALF ou CC-ALF ou ambos podem estar habilitados ou não para toda a sequência.
[0363] Em uma modalidade adicional, o primeiro elemento de sintaxe (por exemplo, um primeiro indicador, tal como sps_ccalf_enabled_flag) indica se o filtro loop adaptativo de componente cruzado (CC-ALF) está habilitado ou não em um nível de sequência, ou em que o primeiro elemento de sintaxe (por exemplo, um primeiro indicador, tal como sps_alf_enabled_flag) indica se o filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado (CC-ALF) está habilitado ou não em um nível de sequência. Com este primeiro elemento de sintaxe, os modos do filtro loop adaptativo podem ser fornecidos especificamente em nível de sequência para todas as imagens ou partes da sequência.
[0364] Além disso, pode ser fornecido que o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) seja definido como um primeiro valor (true ou 1) ou o primeiro elemento de sintaxe tenha um primeiro valor (true ou 1). Com este valor, pode ser indicado se ALF e/ou CC- ALF estão/está habilitado usando, preferencialmente, apenas um único valor de bit.
[0365] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende adicionalmente: um segundo elemento de sintaxe (por exemplo, um segundo indicador, como pic_ccalf_enabled_present_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) é definido como um primeiro valor (true ou 1) ou o primeiro elemento de sintaxe tem um primeiro valor (true ou 1), em que o segundo elemento de sintaxe (como pic_ccalf_enabled_present_flag) é sinalizado em um cabeçalho de imagem; ou um nono elemento de sintaxe (por exemplo, um nono indicador, como pic_alf_enabled_present_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) é definido como um primeiro valor (true ou 1) ou o primeiro elemento de sintaxe tem um primeiro valor (true ou 1), em que o nono elemento de sintaxe (como pic_alf_enabled_present_flag) é sinalizado em um cabeçalho de imagem.
[0366] Que o segundo elemento de sintaxe é fornecido se o primeiro elemento de sintaxe for definido como um primeiro valor (e correspondentemente para o nono elemento de sintaxe) pode ser entendido como significando que o respectivo elemento de sintaxe é fornecido apenas ou pelo menos se o primeiro elemento de sintaxe tiver o primeiro valor e não é fornecido em nenhum outro caso. Esta modalidade pode, no entanto, abranger que o segundo e o nono elemento de sintaxe sejam fornecidos ou presentes independentemente do valor do primeiro elemento de sintaxe. Este significado pode ser aplicado à presença ou não de todos os outros elementos de sintaxe aqui referidos, desde que esses elementos de sintaxe sejam referidos como presentes se outro elemento de sintaxe assumir um valor específico.
[0367] Com o segundo e nono elemento de sintaxe, pode-se especificar se ALF e/ou CC-ALF estão habilitados para as fatias da imagem usando uma quantidade reduzida de bits.
[0368] Em uma modalidade, o segundo elemento de sintaxe (por exemplo, um segundo indicador, tal como pic_ccalf_enabled_present_flag) indica se um terceiro elemento de sintaxe e/ou um quarto conjunto de elementos de sintaxe estão presentes em um cabeçalho de imagem.
[0369] Pode ser adicionalmente fornecido que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende adicionalmente: um terceiro elemento de sintaxe (por exemplo, um terceiro indicador, como pic_ccalf_enabled_flag ou pic_alf_enabled_flag) se o segundo elemento de sintaxe (como pic_ccalf_enabled_present_flag) ou o nono elemento de sintaxe (como pic_alf_enabled_present_flag) for definido como um primeiro valor (true ou 1) ou o segundo elemento de sintaxe ou o nono elemento de sintaxe tem um primeiro valor (true ou 1), em que o terceiro elemento de sintaxe (como pic_ccalf_enabled_flag ou pic_alf_enabled_flag) é sinalizado em um cabeçalho de imagem.
[0370] Em uma modalidade adicional, o terceiro elemento de sintaxe (por exemplo, um terceiro indicador, tal como pic_ccalf_enabled_flag) indica se o filtro loop adaptativo de componente cruzado (CCALF) está habilitado para todas as fatias associadas ao cabeçalho de imagem ou não, ou em que o terceiro elemento de sintaxe (por exemplo, um terceiro indicador, tal como pic_alf_enabled_flag) indica se o filtro loop adaptativo compreendendo o filtro loop adaptativo de componente cruzado (CCALF) está habilitado para todas as fatias associadas ao cabeçalho de imagem ou não. As informações sobre a aplicação de ALF ou CC-ALF podem assim ser sinalizadas para todas as fatias de uma imagem usando uma quantidade reduzida de informações.
[0371] Em uma modalidade adicional, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende adicionalmente: um quarto conjunto de elementos de sintaxe se o terceiro elemento de sintaxe (por exemplo, um terceiro indicador, como pic_ccalf_enabled_flag ou pic_alf_enabled_flag) for definido como um primeiro valor (true ou 1) ou o terceiro elemento de sintaxe tiver um primeiro valor (true ou 1), em que o quarto conjunto de elementos de sintaxe é sinalizado em um cabeçalho de imagem (por exemplo, em um nível de cabeçalho de imagem) ou o quarto conjunto de elementos de sintaxe é portado por entradas de cabeçalho de imagem.
[0372] Especificamente, em uma modalidade, o quarto conjunto de elementos de sintaxe compreende:
[0373] Pode adicionalmente ou alternativamente ser fornecido que o quarto conjunto de elementos de sintaxe compreende:
[0374] Além disso, adicionalmente ou alternativamente, o quarto conjunto de elementos de sintaxe compreende:
[0375] Com as modalidades acima, informações relevantes para os filtros a serem aplicados podem ser fornecidas para todas as fatias já no cabeçalho de imagem, reduzindo potencialmente o tamanho do fluxo de bits.
[0376] Em uma modalidade adicional, é fornecido que, para todas as fatias da mesma imagem, as mesmas informações relacionadas a CC-ALF (como aps_ids) são herdadas a partir do cabeçalho de imagem. As informações fornecidas no cabeçalho de imagem não precisam, portanto, ser incluídas nos cabeçalhos de fatia ou semelhantes em adição, reduzindo assim potencialmente a quantidade de informações que é fornecida no fluxo de bits.
[0377] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende: um primeiro elemento de sintaxe (por exemplo, um primeiro indicador, como sps_ccalf_enabled_flag ou sps_alf_enabled_flag), em que o primeiro elemento de sintaxe (por exemplo, um primeiro indicador, como sps_ccalf_enabled_flag) é sinalizado em um nível de conjunto de parâmetros de sequência (SPS), um segundo elemento de sintaxe (por exemplo, um segundo indicador, como pic_ccalf_enabled_present_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for definido como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1), em que o segundo elemento de sintaxe (como pic_ccalf_enabled_present_flag) é sinalizado em um cabeçalho de imagem.
[0378] Além disso, a pluralidade de elementos de sintaxe relacionados a CC-ALF pode compreender: um quinto elemento de sintaxe (por exemplo, um quinto indicador, como slice_ccalf_enabled_flag ou slice_alf_enabled_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for definido como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1) e se o segundo elemento de sintaxe (como pic_ccalf_enabled_present_flag ou pic_alf_enabled_present_flag) estiver definido como um segundo valor (false ou 0) ou tiver um segundo valor (false ou 0), em que o quinto elemento de sintaxe (como slice_ccalf_enabled_flag ou slice_alf_enabled_flag) é sinalizado em um cabeçalho de fatia.
[0379] Também pode ser fornecido que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende adicionalmente: um sexto conjunto de elementos de sintaxe se o quinto elemento de sintaxe (por exemplo, um quinto indicador, como slice_ccalf_enabled_flag ou slice_alf_enabled_flag) for definido como um primeiro valor (true ou 1) ou o quinto elemento de sintaxe tiver um primeiro valor (true ou 1), em que o sexto conjunto de elementos de sintaxe é sinalizado em um cabeçalho de fatia ou o sexto conjunto de elementos de sintaxe é portado por entradas de cabeçalho de fatia. Este conjunto de elementos de sintaxe pode, por exemplo, indicar parâmetros a serem usados em ALF ou CC-ALF. Ao fornecer este conjunto potencialmente dependente do valor do quinto elemento de sintaxe, o tamanho do fluxo de bits pode ser adicionalmente reduzido.
[0380] Especificamente, pode ser fornecido que o sexto conjunto de elementos de sintaxe compreende:
[0381] Adicionalmente ou alternativamente, pode ser fornecido que o sexto conjunto de elementos de sintaxe compreenda:
[0382] Além disso, pode ser fornecido que o sexto conjunto de elementos de sintaxe compreende:
[0383] Em uma modalidade adicional, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende adicionalmente: um sétimo elemento de sintaxe (por exemplo, um sétimo indicador, como pic_cross_component_alf_cb_aps_id) e um oitavo elemento de sintaxe (por exemplo, um oitavo indicador, como pic_cross_component_alf_cr_aps_id) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for definido como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1).
[0384] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende adicionalmente: um sétimo elemento de sintaxe (por exemplo, um sétimo indicador, como pic_cross_component_alf_cb_aps_id) e um oitavo elemento de sintaxe (por exemplo, um oitavo indicador, como pic_cross_component_alf_cr_aps_id) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for definido como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1) e se um nono elemento de sintaxe (como pic_alf_enabled_present_flag) for definido como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1).
[0385] Em uma modalidade, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende adicionalmente: um sétimo elemento de sintaxe (por exemplo, um sétimo indicador, como pic_cross_component_alf_cb_aps_id), um oitavo elemento de sintaxe (por exemplo, um oitavo indicador, tal como pic_cross_component_alf_cr_aps_id) e o segundo elemento de sintaxe (tal como pic_ccalf_enabled_present_flag) se o primeiro elemento de sintaxe (tal como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) é definido como um primeiro valor (true ou 1) ou tem um primeiro valor (true ou 1) e se um nono elemento de sintaxe (como pic_alf_enabled_present_flag) for definido como um primeiro valor (true ou 1) ou tem um primeiro valor (true ou 1).
[0386] Também pode ser fornecido que a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende adicionalmente: um sétimo elemento de sintaxe (por exemplo, um sétimo indicador, como pic_cross_component_alf_cb_aps_id), um oitavo elemento de sintaxe (por exemplo, um oitavo indicador, como pic_cross_component_alf_cr_aps_id) e o nono elemento de sintaxe (como pic_alf_enabled_present_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for definido como um primeiro valor (true ou 1) ou tem um primeiro valor (true ou 1).
[0387] Além disso, em uma modalidade, o CC-ALF é aplicado para realizar o processamento de filtragem em uma ou mais amostras de luma de um componente de luma de um bloco de imagem atual, para refinar uma amostra de croma (como cada amostra de croma) de um componente de croma do bloco de imagem atual.
[0388] Especificamente, pode ser fornecido que o CC-ALF é configurado para refinar cada componente de croma usando valores de amostra de luma.
[0389] Em uma modalidade, o CC-ALF opera como parte do processo de filtro loop adaptativo.
[0390] Também pode ser fornecido que o bloco de imagem compreende um bloco de luma e blocos de croma, em que um primeiro bloco de croma é um primeiro componente de croma (tal como componente Cb) do bloco de imagem e um segundo bloco de croma é um segundo componente de croma (tal como componente Cr) do bloco de imagem.
[0391] A presente revelação se refere adicionalmente a um método de codificação implementado por um dispositivo de codificação, compreendendo: determinar se o ALF de Componente Cruzado (CC-ALF) está habilitado ou não; gerar um fluxo de bits incluindo um ou mais elementos de sintaxe (por exemplo, elemento de sintaxe relacionado a CC-ALF, como pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag ou pic_cross_component_alf_cr_enabled_flag), em que os um ou mais elementos de sintaxe indicam se o ALF de Componente Cruzado (CC-ALF) está habilitado ou não em um nível de cabeçalho de imagem e informações relacionadas a CC-ALF correspondentes, em que os elementos de sintaxe são sinalizados em um nível de cabeçalho de imagem. Assim, informações relevantes para a decodificação posterior podem ser fornecidas com tamanho reduzido no fluxo de bits.
[0392] Também pode ser fornecido que o CC-ALF seja aplicado para realizar o processamento de filtragem em uma ou mais amostras de luma de um componente de luma de um bloco de imagem atual, para refinar uma amostra de croma (como cada amostra de croma) de um componente de croma do bloco de imagem atual.
[0393] Em uma modalidade, o método compreende adicionalmente: realizar processamento de filtragem em um componente de luma de um bloco de imagem atual que pertence a uma imagem usando o filtro CC- ALF, em que uma ou mais amostras de luma do componente de luma do bloco de imagem atual são usadas para refinar pelo menos uma amostra de croma (como cada amostra de croma) de um componente de croma do bloco de imagem atual.
[0394] Também pode ser fornecido que o CC-ALF é configurado para refinar cada componente de croma usando valores de amostra de luma.
[0395] Em uma modalidade adicional, o CC-ALF opera como parte do processo de filtro loop adaptativo.
[0396] Também pode ser fornecido que o bloco de imagem compreende um bloco de luma e blocos de croma, em que um primeiro bloco de croma é um primeiro componente de croma (tal como componente Cb) do bloco de imagem e um segundo bloco de croma é um segundo componente de croma (tal como componente Cr) do bloco de imagem.
[0397] A presente revelação se refere adicionalmente a um método de decodificação implementado por um dispositivo de decodificação, o método compreendendo: analisar um ou mais elementos de sintaxe a partir de um fluxo de bits de um sinal de vídeo, em que os um ou mais elementos de sintaxe indicam informações relacionadas a Filtro loop Adaptativo de Componente Cruzado (CC- ALF), em que os um ou mais elementos de sintaxe são obtidos a partir de qualquer um ou mais dentre um nível de conjunto de parâmetros de vídeo (VPS), um nível de conjunto de parâmetros de sequência (SPS), um nível de conjunto de parâmetros de imagem (PPS), um cabeçalho de imagem, um cabeçalho de fatia ou um cabeçalho de tile do fluxo de bits; ou em que os um ou mais elementos de sintaxe são obtidos a partir de um nível de conjunto de parâmetros de sequência (SPS) e/ou um cabeçalho de imagem; e realizar um processo de filtragem (como um processo de filtragem de componente cruzado) aplicando um CC-ALF com base nos elementos de sintaxe ou com base no valor dos elementos de sintaxe.
[0398] As informações que podem ser necessárias para determinar o método de filtragem a ser aplicado e como ele deve ser aplicado podem ser fornecidas com isso em um fluxo de bits que tem tamanho reduzido e ainda permite uma decodificação confiável.
[0399] A presente revelação descreve adicionalmente um método de decodificação implementado por um dispositivo de decodificação, o método compreendendo: analisar uma pluralidade de elementos de sintaxe a partir de um fluxo de bits de um sinal de vídeo, em que os elementos de sintaxe são obtidos a partir de qualquer um ou mais dentre um nível de conjunto de parâmetros de vídeo (VPS), um nível de conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS)), um cabeçalho de imagem, um cabeçalho de fatia ou um cabeçalho de tile do fluxo de bits; ou em que os elementos de sintaxe são obtidos a partir de um nível de conjunto de parâmetros de sequência (SPS) e/ou um cabeçalho de imagem; determinar informações relacionadas a Filtro loop Adaptativo de Componente Cruzado (CC-ALF) com base em um ou mais elementos de sintaxe da pluralidade de elementos de sintaxe, em que realizar um processo de filtragem (como um processo de filtragem de componente cruzado) aplicando um CC-ALF com base nas informações relacionadas a CC-ALFs.
[0400] As informações que podem ser necessárias para determinar o método de filtragem a ser aplicado e como ele deve ser aplicado podem ser fornecidas com isso em um fluxo de bits que tem tamanho reduzido e ainda permite uma decodificação confiável.
[0401] Pode ser fornecido que os um ou mais elementos de sintaxe ou a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreendem: um primeiro elemento de sintaxe (por exemplo, um primeiro indicador, como sps_ccalf_enabled_flag ou sps_alf_enabled_flag), em que o primeiro elemento de sintaxe (por exemplo, um primeiro indicador, como sps_ccalf_enabled_flag) é obtido a partir de um nível de conjunto de parâmetros de sequência (SPS).
[0402] Especificamente, pode ser adicionalmente fornecido que o primeiro elemento de sintaxe (por exemplo, um primeiro indicador, como sps_ccalf_enabled_flag) indica se o filtro loop adaptativo de componente cruzado (CC-ALF) está habilitado ou não em um nível de sequência, ou em que o primeiro elemento de sintaxe (por exemplo, um primeiro indicador, tal como sps_alf_enabled_flag) indica se o filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado (CC-ALF) está habilitado ou não em um nível de sequência.
[0403] Assim, informações sobre qual método de filtro deve ser aplicado podem ser fornecidas com uma quantidade reduzida de informações ao decodificador no fluxo de bits.
[0404] Em uma modalidade, o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) é derivado como um primeiro valor (true ou 1) ou o primeiro elemento de sintaxe tem um primeiro valor (true ou 1).
[0405] Também pode ser fornecido que a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreende adicionalmente: um segundo elemento de sintaxe (por exemplo, um segundo indicador, como pic_ccalf_enabled_present_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) é derivado como um primeiro valor (true ou 1) ou o primeiro elemento de sintaxe tem um primeiro valor (true ou 1), em que o segundo elemento de sintaxe (como pic_ccalf_enabled_present_flag) é obtido a partir de um cabeçalho de imagem; ou um nono elemento de sintaxe (por exemplo, um nono indicador, como pic_alf_enabled_present_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) é derivado como um primeiro valor (true ou 1) ou o primeiro elemento de sintaxe tem um primeiro valor (true ou 1), em que o nono elemento de sintaxe (como pic_alf_enabled_present_flag) é obtido a partir de um cabeçalho de imagem.
[0406] Em uma modalidade adicional, o segundo elemento de sintaxe (por exemplo, um segundo indicador, tal como pic_ccalf_enabled_present_flag) indica se um terceiro elemento de sintaxe e/ou um quarto conjunto de elementos de sintaxe estão presentes em um cabeçalho de imagem.
[0407] A pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) pode compreender ainda: um terceiro elemento de sintaxe (por exemplo, um terceiro indicador, como pic_ccalf_enabled_flag ou pic_alf_enabled_flag) se o segundo elemento de sintaxe (como pic_ccalf_enabled_present_flag) ou o nono elemento de sintaxe (como pic_alf_enabled_present_flag) for derivado como um primeiro valor (true ou 1) ou o segundo elemento de sintaxe ou o nono elemento de sintaxe tem um primeiro valor (true ou 1), em que o terceiro elemento de sintaxe (como pic_ccalf_enabled_flag ou pic_alf_enabled_flag) é obtido a partir de um cabeçalho de imagem.
[0408] Especificamente, pode ser fornecido que o terceiro elemento de sintaxe (por exemplo, um terceiro indicador, como pic_ccalf_enabled_flag) indica se o filtro loop adaptativo de componente cruzado (CCALF) está habilitado para todas as fatias associadas ao cabeçalho de imagem ou não, ou em que o terceiro elemento de sintaxe (por exemplo, um terceiro indicador, tal como pic_alf_enabled_flag) indica se o filtro loop adaptativo compreendendo o filtro loop adaptativo de componente cruzado (CCALF) está habilitado para todas as fatias associadas ao cabeçalho de imagem ou não.
[0409] Em uma modalidade, a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreende adicionalmente: um quarto conjunto de elementos de sintaxe se o terceiro elemento de sintaxe (por exemplo, um terceiro indicador, como pic_ccalf_enabled_flag ou pic_alf_enabled_flag) for derivado como um primeiro valor (true ou 1) ou o terceiro elemento de sintaxe tiver um primeiro valor (true ou 1), em que o quarto conjunto de elementos de sintaxe é obtido a partir de um cabeçalho de imagem (por exemplo, em um nível de cabeçalho de imagem) ou o quarto conjunto de elementos de sintaxe é portado por entradas de cabeçalho de imagem.
[0410] Este conjunto de elementos de sintaxe só pode ser fornecido se o terceiro elemento de sintaxe tomar ou for derivado como o primeiro valor e não estiver presente de outra forma ou os valores do conjunto de elementos de sintaxe podem ser definidos para um valor padrão, como 0, se o terceiro elemento de sintaxe assume um valor diferente. Em ambos os casos, fornecimento confiável de informações relevantes para a decodificação pode ser assegurado em tamanho reduzido do fluxo de bits.
[0411] Especificamente, o quarto conjunto de elementos de sintaxe pode compreender:
[0412] Alternativamente ou adicionalmente, o quarto conjunto de elementos de sintaxe pode compreender:
[0413] Em uma modalidade adicional, o quarto conjunto de elementos de sintaxe pode compreender:
[0414] Pode ser fornecido que, para todas as fatias d a mesma imagem, as mesmas informações relacionadas a CC-ALF (como, aps_ids) são herdadas a partir do cabeçalho de imagem. Deste modo, a quantidade de informações fornecidas no fluxo de bits para indicar ao decodificador as informações relacionadas a CC-ALF para as fatias de uma imagem pode ser reduzida.
[0415] Em uma modalidade, a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreende: um primeiro elemento de sintaxe (por exemplo, um primeiro indicador, como sps_ccalf_enabled_flag ou sps_alf_enabled_flag), em que o primeiro elemento de sintaxe (por exemplo, um primeiro indicador, como sps_ccalf_enabled_flag) é obtido a partir de um nível de conjunto de parâmetros de sequência (SPS), um segundo elemento de sintaxe (por exemplo, um segundo indicador, como pic_ccalf_enabled_present_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for derivado como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1), em que o segundo elemento de sintaxe (como pic_ccalf_enabled_present_flag) é obtido a partir de um cabeçalho de imagem.
[0416] Em uma modalidade adicional, a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreende adicionalmente: um quinto elemento de sintaxe (por exemplo, um quinto indicador, como slice_ccalf_enabled_flag ou slice_alf_enabled_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for derivado como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1) e se o segundo elemento de sintaxe (como pic_ccalf_enabled_present_flag ou pic_alf_enabled_present_flag) for derivado como um segundo valor (false ou 0) ou tiver um segundo valor (false ou 0), em que o quinto elemento de sintaxe (como slice_ccalf_enabled_flag ou slice_alf_enabled_flag) é obtido a partir de um cabeçalho de fatia.
[0417] Pode ser fornecido que a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreende adicionalmente: um sexto conjunto de elementos de sintaxe se o quinto elemento de sintaxe (por exemplo, um quinto indicador, como slice_ccalf_enabled_flag ou slice_alf_enabled_flag) for derivado como um primeiro valor (true ou 1) ou o quinto elemento de sintaxe tiver um primeiro valor (true ou 1), em que o sexto conjunto de elementos de sintaxe é obtido a partir de um cabeçalho de fatia ou o sexto conjunto de elementos de sintaxe é portado por entradas de cabeçalho de fatia.
[0418] Especificamente, pode ser fornecido que o sexto conjunto de elementos de sintaxe compreende:
[0419] Pode, alternativamente ou adicionalmente, ser fornecido que o sexto conjunto de elementos de sintaxe compreende:
[0420] Da mesma forma, pode ser fornecido que o sexto conjunto de elementos de sintaxe compreende:
[0421] Em uma modalidade, a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreende adicionalmente: um sétimo elemento de sintaxe (por exemplo, um sétimo indicador, como pic_cross_component_alf_cb_aps_id) e um oitavo elemento de sintaxe (por exemplo, um oitavo indicador, como pic_cross_component_alf_cr_aps_id) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for derivado como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1).
[0422] Também pode ser fornecido que a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreende adicionalmente: um sétimo elemento de sintaxe (por exemplo, um sétimo indicador, como pic_cross_component_alf_cb_aps_id) e um oitavo elemento de sintaxe (por exemplo, um oitavo indicador, como pic_cross_component_alf_cr_aps_id) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for derivado como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1) e se um nono elemento de sintaxe (como pic_alf_enabled_present_flag) for derivado como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1).
[0423] Em uma modalidade adicional, a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreende adicionalmente: um sétimo elemento de sintaxe (por exemplo, um sétimo indicador, como pic_cross_component_alf_cb_aps_id), um oitavo elemento de sintaxe (por exemplo, um oitavo indicador, como pic_cross_component_alf_cr_aps_id) e o segundo elemento de sintaxe (como pic_ccalf_enabled_present_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for derivado como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1) e se um nono elemento de sintaxe (como pic_alf_enabled_present_flag) for derivado como um primeiro valor (true ou 1) ou tiver um primeiro valor (true ou 1).
[0424] Também pode ser fornecido que a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) compreende adicionalmente: um sétimo elemento de sintaxe (por exemplo, um sétimo indicador, como pic_cross_component_alf_cb_aps_id), um oitavo elemento de sintaxe (por exemplo, um oitavo indicador, como pic_cross_component_alf_cr_aps_id) e o nono elemento de sintaxe (como pic_alf_enabled_present_flag) se o primeiro elemento de sintaxe (como sps_ccalf_enabled_flag ou sps_alf_enabled_flag) for derivado como um primeiro valor (true ou 1) ou tiver um primeiro valor (verdadeiro ou 1).
[0425] Em uma modalidade, o CC-ALF é aplicado para realizar o processamento de filtragem em uma ou mais amostras de luma de um componente de luma de um bloco de imagem atual, para refinar uma amostra de croma (como cada amostra de croma) de um componente de croma do bloco de imagem atual.
[0426] O CC-ALF pode ser configurado para refinar cada componente de croma usando valores de amostra de luma.
[0427] Também pode ser fornecido que o CC-ALF opere como parte do processo de filtro loop adaptativo.
[0428] Em uma modalidade, o bloco de imagem compreende um bloco de luma e blocos de croma, em que um primeiro bloco de croma é um primeiro componente de croma (tal como componente Cb) do bloco de imagem e um segundo bloco de croma é um segundo componente de croma (tal como componente Cr) do bloco de imagem.
[0429] A presente revelação se refere adicionalmente a um método de decodificação implementado por um dispositivo de decodificação, compreendendo: analisar a partir de um fluxo de bits de um sinal de vídeo um ou mais elementos de sintaxe (por exemplo, M elementos de sintaxe relacionados a CC- ALF, M é um número inteiro e M>=1, como pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag ou pic_cross_component_alf_cr_enabled_flag), em que os um ou mais elementos de sintaxe indicam se o ALF de Componente Cruzado (CCALF) está habilitado ou não em um nível de cabeçalho de imagem e as informações relacionadas a CCALF correspondentes, em que os um ou mais elementos de sintaxe são obtidos a partir de um nível de cabeçalho de imagem. realizar um processo de filtragem (como um processo de filtragem de componente cruzado) aplicando um CC-ALF em resposta à determinação de que CC-ALF está habilitado.
[0430] Este método pode aplicar apropriadamente o CC-ALF durante a decodificação, enquanto permitindo reduzir o tamanho do fluxo de bits
[0431] Em uma modalidade, o CC-ALF é aplicado para realizar o processamento de filtragem em uma ou mais amostras de luma de um componente de luma de um bloco de imagem atual, para refinar uma amostra de croma (como cada amostra de croma) de um componente de croma do bloco de imagem atual.
[0432] Também pode ser fornecido que o CC-ALF é configurado para refinar cada componente de croma usando valores de amostra de luma.
[0433] Em uma modalidade adicional, o CC-ALF opera como parte do processo de filtro loop adaptativo.
[0434] As modalidades podem abranger adicionalmente que o bloco de imagem compreende um bloco de luma e blocos de croma, em que um primeiro bloco de croma é um primeiro componente de croma (tal como componente Cb) do bloco de imagem e um segundo bloco de croma é um segundo componente de croma (tal como componente Cr) do bloco de imagem.
[0435] A presente revelação fornece adicionalmente um dispositivo para codificar dados de vídeo, o dispositivo compreendendo: uma memória de dados de vídeo; e um codificador de vídeo, em que o codificador de vídeo é configurado para: realizar um processo de filtragem (como um processo de filtragem de componente cruzado) aplicando um filtro loop adaptativo de componente cruzado (CC-ALF); gerar um fluxo de bits para o sinal de vídeo incluindo uma pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF), em que a pluralidade de elementos de sintaxe indica as informações relacionadas a CC-ALF, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é obtida a partir de qualquer um ou mais dentre um nível de conjunto de parâmetros de vídeo (VPS), um nível de conjunto de parâmetros de sequência (SPS), um nível de conjunto de parâmetros de imagem (PPS), um cabeçalho de imagem, um cabeçalho de fatia ou um cabeçalho de tile; ou em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é obtida a partir de um nível de conjunto de parâmetros de sequência (SPS) e/ou um cabeçalho de imagem.
[0436] Este dispositivo pode realizar uma codificação que resulta em um fluxo de bits tendo tamanho reduzido.
[0437] Além disso, é fornecido um dispositivo para decodificação de dados de vídeo, o dispositivo compreendendo: uma memória de dados de vídeo; e um decodificador de vídeo, em que o decodificador de vídeo é configurado para: analisar uma pluralidade de elementos de sintaxe a partir de um fluxo de bits de um sinal de vídeo, em que a pluralidade de elementos de sintaxe é obtida a partir de qualquer um ou mais dentre um nível de conjunto de parâmetros de vídeo (VPS), um nível de conjunto de parâmetros de sequência (SPS), um nível de conjunto de parâmetros de imagem (PPS), um cabeçalho de imagem, um cabeçalho de fatia ou um cabeçalho de tile do fluxo de bits, ou em que a pluralidade de elementos de sintaxe é obtida a partir de um nível de conjunto de parâmetros de sequência (SPS) e/ou um cabeçalho de imagem do fluxo de bits; determinar informações relacionadas a Filtro loop Adaptativo de Componente Cruzado (CC-ALF) com base em um ou mais elementos de sintaxe a partir da pluralidade de elementos de sintaxe; e realizar um processo de filtragem (como um processo de filtragem de componente cruzado) aplicando um CC-ALF com base nas informações relacionadas a CC-ALFs.
[0438] Este decodificador pode ser capaz de realizar uma decodificação confiável enquanto requer um fluxo de bits com tamanho reduzido para obter as informações referentes ao filtro a ser aplicado durante a decodificação.
[0439] A presente revelação fornece adicionalmente um codificador, o codificador compreendendo circuitos de processamento para realizar o método de acordo com qualquer uma das modalidades acima.
[0440] A presente revelação também se refere a um decodificador, o decodificador compreendendo circuitos de processamento para realizar o método de acordo com qualquer uma das modalidades acima.
[0441] Além disso, é fornecido um produto de programa de computador compreendendo um código de programa para realizar o método de acordo com qualquer uma das modalidades acima.
[0442] A presente revelação se refere adicionalmente a um decodificador, o decodificador compreendendo: 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, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com qualquer uma das modalidades acima.
[0443] Além disso, um codificador é fornecido na presente revelação, o codificador compreendendo: 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, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método de acordo com qualquer uma das modalidades acima.
[0444] Além disso, é fornecido um meio de gravação não transitório que inclui um fluxo de bits codificado decodificado por um dispositivo de decodificação de imagem, o fluxo de bits sendo gerado pela divisão de um quadro de um sinal de vídeo ou de um sinal de imagem em uma pluralidade de blocos e incluindo uma pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF), em que a pluralidade de elementos de sintaxe indica as informações relacionadas a CC-ALF, em que a pluralidade de elementos de sintaxe (como elementos de sintaxe relacionados a CC-ALF) é obtida a partir de qualquer um ou mais dentre um nível de conjunto de parâmetros de vídeo (VPS), um nível de conjunto de parâmetros de sequência (SPS), um nível de conjunto de parâmetros de imagem (PPS), um cabeçalho de imagem, um cabeçalho de fatia ou um cabeçalho de tile ou em que a pluralidade de elementos de sintaxe (tais como elementos de sintaxe relacionados a CC-ALF) é obtida a partir de pelo menos um nível de conjunto de parâmetros de sequência (SPS) ou um cabeçalho de imagem.
[0445] A presente revelação também se refere a um aparelho, o aparelho compreendendo: uma mídia legível por computador não transitória tendo nela instruções armazenadas que, quando executadas por um ou mais processadores, fazem com que um ou mais processadores realizem operações para gerar dados de imagem correspondentes a um fluxo de bits de vídeo, os dados de imagem compreendendo: uma pluralidade de imagens no fluxo de bits de vídeo incluindo uma imagem compreendendo N fatias; e um cabeçalho de imagem associado às N fatias da imagem, em que uma ou mais de ou cada uma das N fatias compreende uma pluralidade de blocos de amostras que são codificadas por entropia, em que as informações de filtragem CC-ALF ou os parâmetros de filtro CC-ALF são herdados pelas N fatias do cabeçalho de imagem ou as N fatias herdam os dados de filtragem ALF a partir do cabeçalho de imagem.
[0446] De acordo com qualquer uma das modalidades acima, pode ser adicionalmente fornecido que valores slice_cross_component_alf_cr_aps_id e slice_cross_component_alf_cb_aps_id são iguais aos valores pic_cross_component_alf_cb_aps_id e pic_cross_component_alf_cr_aps_id.
[0447] Em uma modalidade adicional, pic_cross_component_alf_cb_aps_id e pic_cross_component_alf_cr_aps_id são obtidos a partir do cabeçalho de imagem.
[0448] Também pode ser fornecido que um elemento de sintaxe relacionado a CCALF é obtido apenas uma vez no cabeçalho de imagem associado a todas as N fatias.
[0449] Em uma modalidade, N é um número inteiro positivo e maior que 1.
[0450] Em uma modalidade, é fornecido um método para codificação de um fluxo de bits de vídeo implementado por um dispositivo de codificação, o método de codificação compreendendo: gerar um fluxo de bits para o sinal de vídeo incluindo uma pluralidade de elementos de sintaxe (por exemplo, um elemento de sintaxe relacionado a ALF, como sps_alf_enabled_flag e/ou um elemento de sintaxe relacionado a CCALF, como sps_ccalf_enabled_flag), em que a pluralidade de elementos de sintaxe compreende uma flag habilitada de filtro loop adaptativo de componente cruzado (CC-ALF) (como sps_ccalf_enabled_flag) e em que os parâmetros relacionados a CC-ALF são sinalizados condicionalmente pelo menos com base em um valor da flag habilitada de CC-ALF (como sps_ccalf_enabled_flag).
[0451] Isso pode fornecer um fluxo de bits compreendendo informações relevantes para a decodificação, mas tendo tamanho reduzido.
[0452] Além disso, um método para decodificação de um fluxo de bits de vídeo implementado por um dispositivo de decodificação é fornecido de acordo com a presente revelação, o método de decodificação compreendendo: obter (S110) uma pluralidade de elementos de sintaxe a partir do fluxo de bits de vídeo; em que a pluralidade de elementos de sintaxe compreende uma flag habilitada de filtro loop adaptativo de componente cruzado (CC-ALF) (tal como sps_ccalf_enabled_flag), e em que parâmetros relacionados a CC-ALF são sinalizados condicionalmente pelo menos com base em um valor da flag habilitada de CCALF (como sps_ccalf_enabled_flag).
[0453] Este método permite realizar uma decodificação confiável mesmo quando o fluxo de bits é reduzido em tamanho.
[0454] Em uma modalidade, no caso de uma ou mais condições serem satisfeitas, a flag habilitada de CCALF (como sps_ccalf_enabled_flag) é sinalizada um nível de conjunto de parâmetros de sequência (SPS) do fluxo de bits, em que uma ou mais condições compreendem: quando o valor de uma primeira flag (tal como sps_alf_enabled_flag) que é sinalizada em um nível de conjunto de parâmetros de sequência (SPS) do fluxo de bits é um valor de habilitação (como um primeiro valor, por exemplo, true ou 1), e em que a flag habilitada de CCALF indica se o filtro loop adaptativo de componente cruzado (CCALF) está habilitado ou não em um nível de sequência ou nível de SPS.
[0455] Também pode ser fornecido que os elementos de sintaxe compreendem uma terceira flag (como alf_present_in_ph_flag) e a terceira flag é sinalizada como um nível de conjunto de parâmetros de imagem (PPS) do fluxo de bits e em que a terceira flag indica se um ou mais elementos de sintaxe para habilitar uso de ALF está presente nos PHs (cabeçalhos de imagem) referentes ao PPS ou não.
[0456] Também pode ser fornecido que a terceira flag (alf_present_in_ph_flag) igual a 1 especifica que os elementos de sintaxe para habilitar o uso de ALF podem estar presentes nos PHs (cabeçalhos de imagem) referentes ao PPS. A terceira flag (alf_present_in_ph_flag) igual a 0 especifica que os elementos de sintaxe para habilitar o uso de ALF podem estar presentes nos cabeçalhos de fatia referentes ao PPS.
[0457] Em uma modalidade, é fornecido que, se o valor da primeira flag (como sps_alf_enabled_flag) for um valor de habilitação (como um primeiro valor, por exemplo, true ou 1) e o valor da terceira flag (alf_present_in_ph_flag) for um valor de habilitação (como um primeiro valor, por exemplo, true ou 1), e se o valor da flag habilitada de CCALF (como sps_ccalf_enabled_flag) for um valor de habilitação (como um primeiro valor, por exemplo, true ou 1), os parâmetros relacionados a Filtragem loop adaptativa de Componente Cruzado (CCALF) (como os elementos de sintaxe para habilitar uso de CCALF) são sinalizados um nível de picture_header do fluxo de bits.
[0458] Em uma modalidade adicional, é fornecido que, se o valor da primeira flag (como sps_alf_enabled_flag) for um valor de habilitação (como um primeiro valor, por exemplo, true ou 1) e o valor da terceira flag (alf_present_in_ph_flag) for um valor de desabilitação (como um segundo valor, por exemplo, falso ou 0), e se o valor da flag habilitada de CCALF (como sps_ccalf_enabled_flag) for um valor de habilitação (como um primeiro valor, por exemplo, true ou 1), os parâmetros relacionados a Filtragem loop adaptativa de Componente Cruzado (CCALF) (como os elementos de sintaxe para habilitar uso de CCALF) são sinalizados um nível de slice_header do fluxo de bits.
[0459] Em uma modalidade adicional, é fornecido que a flag habilitada de CC-ALF (como sps_ccalf_enabled_flag) igual a 0 especifica que o filtro loop adaptativo de componente cruzado está desabilitado; ou a flag habilitada de CC-ALF (como sps_ccalf_enabled_flag) igual a 1 especifica que o filtro loop adaptativo de componente cruzado está habilitado.
[0460] Pode ser adicionalmente fornecido que os elementos de sintaxe compreendem: uma segunda flag (como no_ccalf_constraint_flag) igual a 1 especifica que a flag habilitada de CCALF (como sps_ccalf_enabled_flag) é igual a 0; ou a segunda flag (como no_ccalf_constraint_flag) igual a 0 não impõe tal restrição.
[0461] Em uma modalidade, o método compreende adicionalmente: realizar um processo de filtragem (tal como um processo de filtro loop adaptativo de componente cruzado) em uma imagem reconstruída (tal como, um arranjo de amostra de croma reconstruído SL, um arranjo de amostra de croma reconstruído SCb e/ou, um arranjo de amostra de croma reconstruído SCr), para obter uma imagem reconstruída filtrada (tal como, um arranjo de amostra de croma reconstruído modificado S’L, um arranjo de amostra de croma reconstruído modificado S’Cb e/ou, um arranjo de amostra de croma reconstruído modificado S’Cr).
[0462] A presente revelação fornece adicionalmente um fluxo de bits codificado para o sinal de vídeo incluindo uma pluralidade de elementos de sintaxe (por exemplo, um elemento de sintaxe relacionado a ALF, como sps_alf_enabled_flag e/ou um elemento de sintaxe relacionado a CCALF, como sps_ccalf_enabled_flag), em que a pluralidade de elementos de sintaxe compreende uma flag habilitada para filtro loop adaptativo de componente cruzado (CCALF) (como sps_ccalf_enabled_flag) e em que os parâmetros relacionados a CCALF são sinalizados condicionalmente pelo menos com base em um valor da flag habilitada de CCALF (como sps_ccalf_enabled_flag).
[0463] O fluxo de bits pode ser reduzido em tamanho enquanto fornece informações a serem usadas na decodificação ao aplicar CC-ALF de maneira confiável.
[0464] A Figura 12 mostra uma modalidade de um codificador 4000. O codificador 4000 pode ser implementado usando quaisquer circuitos de processamento aqui indicados com 4001 para realizar um método de codificação de um vídeo. Especificamente, os circuitos de processamento 4001 podem ser adaptados para aplicar um filtro loop adaptativo de componente cruzado, CC- ALF para refinar um componente de croma. Os circuitos de processamento podem ser adicionalmente adaptados para gerar um fluxo de bits incluindo uma pluralidade de elementos de sintaxe relacionados a CC-ALF, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF indica informações relacionadas a CC-ALF, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é sinalizada em qualquer um ou mais dentre um nível de conjunto de parâmetros de sequência (SPS), um cabeçalho de imagem ou um cabeçalho de fatia.
[0465] A pluralidade de elementos de sintaxe relacionados a CC-ALF neste contexto compreende um primeiro elemento de sintaxe que indica se um filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o primeiro elemento de sintaxe é sinalizado no nível de SPS, e um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS.
[0466] O codificador pode adicionalmente compreender um receptor 4002 para receber um vídeo a ser codificado e um transmissor 4003 para transmitir um fluxo de bits compreendendo pelo menos a pluralidade de elementos de sintaxe.
[0467] A Figura 13 mostra uma modalidade de um decodificador 4100. O decodificador 4100 pode ser implementado usando quaisquer circuitos de processamento 4101 para realizar um método de decodificação de um vídeo. Especificamente, os circuitos de processamento 4101 podem ser adaptados para analisar uma pluralidade de elementos de sintaxe relacionados a filtros de loop adaptativo de componente cruzado, CC-ALF, a partir de um fluxo de bits, em que a pluralidade de elementos de sintaxe relacionados a CC-ALF é obtida a partir de qualquer um ou mais dentre um nível de conjunto de parâmetros de sequência (SPS), um cabeçalho de imagem ou um cabeçalho de fatia.
[0468] Especificamente, a pluralidade de elementos de sintaxe relacionados a CC-ALF compreende um primeiro elemento de sintaxe que indica se um filtro loop adaptativo (ALF) compreendendo o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o primeiro elemento de sintaxe é sinalizado no nível de SPS, e um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS.
[0469] Os circuitos de processamento podem adicionalmente ser adaptados para realizar um processo de CC-ALF usando pelo menos um dentre a pluralidade de elementos de sintaxe relacionados a CC-ALF.
[0470] Além disso, o decodificador 4100 pode compreender um receptor 4102 para receber um fluxo de bits. Adicionalmente, o decodificador pode compreender um transmissor 4103 para enviar o vídeo decodificado, por exemplo, para um dispositivo de saída não mostrado aqui.
[0471] A seguir está uma explicação das aplicações do método de codificação, bem como do método de decodificação, conforme mostrado nas modalidades acima mencionadas, e um sistema que os usa.
[0472] A Figura 10 é um diagrama de blocos mostrando um sistema de abastecimento de conteúdo 3100 para realizar o serviço de distribuição de conteúdo. Este sistema de abastecimento de conteúdo 3100 inclui dispositivo de captura 3102, dispositivo terminal 3106 e opcionalmente inclui exibição 3126. O dispositivo de captura 3102 se comunica com o dispositivo terminal 3106 através do enlace de comunicação 3104. O enlace de comunicação pode incluir o canal de comunicação 13 descrito acima. O enlace de comunicação 3104 inclui, mas não se limita a WIFI, Ethernet, Cabo, sem fio (3G/4G/5G), USB ou qualquer tipo de combinação dos mesmos, ou similares.
[0473] O dispositivo de captura 3102 gera dados e pode codificar os dados pelo método de codificação como mostrado nas modalidades acima. Alternativamente, o dispositivo de captura 3102 pode distribuir os dados para um servidor de streaming (não mostrado nas Figuras) e o servidor codifica os dados e transmite os dados codificados para o dispositivo terminal 3106. O dispositivo de captura 3102 inclui, mas não se limita a, câmera, smartphone ou Pad, computador ou laptop, sistema de videoconferência, PDA, dispositivo montado em veículo ou uma combinação de qualquer um deles, ou similares. Por exemplo, o dispositivo de captura 3102 pode incluir o dispositivo de origem 12 conforme descrito acima. Quando os dados incluem vídeo, o codificador de vídeo 20 incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de vídeo. Quando os dados incluem áudio (isto é, voz), um codificador de áudio incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de áudio. Para alguns cenários práticos, o dispositivo de captura 3102 distribui os dados de áudio e vídeo codificados multiplexando-os juntos. Para outros cenários práticos, por exemplo no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. O dispositivo de captura 3102 distribui os dados de áudio codificados e os dados de vídeo codificados para o dispositivo terminal 3106 separadamente.
[0474] No sistema de abastecimento de conteúdo 3100, o dispositivo terminal 310 recebe e reproduz os dados codificados. O dispositivo terminal 3106 pode ser um dispositivo com capacidade de recebimento e recuperação de dados, como smartphone ou Pad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, decodificador (STB) 3116, sistema de videoconferência 3118, sistema de vigilância por vídeo 3120, assistente digital pessoal (PDA) 3122, dispositivo montado em veículo 3124, ou uma combinação de qualquer um deles, ou similar capaz de decodificar os dados codificados acima mencionados. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14 como descrito acima. Quando os dados codificados incluem vídeo, o decodificador de vídeo 30 incluído no dispositivo terminal é priorizado para realizar a decodificação de vídeo. Quando os dados codificados incluem áudio, um decodificador de áudio incluído no dispositivo terminal é priorizado para realizar o processamento de decodificação de áudio.
[0475] Para um dispositivo terminal com seu display, por exemplo, smartphone ou Pad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, assistente digital pessoal (PDA) 3122 ou dispositivo montado em veículo 3124, o dispositivo terminal pode alimentar os dados decodificados para o seu display. Para um dispositivo terminal equipado sem display, por exemplo, STB 3116, sistema de videoconferência 3118 ou sistema de vigilância por vídeo 3120, um display externo 3126 é contactado para receber e mostrar os dados decodificados.
[0476] Quando cada dispositivo nesse sistema realiza codificação ou decodificação, o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem, conforme mostrado nas modalidades acima mencionadas, pode ser usado.
[0477] A Figura 11 é um diagrama mostrando uma estrutura de um exemplo do dispositivo terminal 3106. Após o dispositivo terminal 3106 receber o fluxo a partir do dispositivo de captura 3102, a unidade de procedimento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui, mas não se limita a Protocolo de Streaming em Tempo Real (RTSP), Protocolo de Transferência de Hipertexto (HTTP), protocolo de streaming em tempo real de HTTP (HLS), MPEG-DASH, Protocolo de Transporte em Tempo Real (RTP), Protocolo de Mensagens em Tempo Real (RTMP)), ou qualquer tipo de combinação dos mesmos, ou semelhantes.
[0478] Após a unidade de procedimento de protocolo 3202 processar o fluxo, o arquivo de fluxo é gerado. O arquivo é enviado para uma unidade de demultiplexação 3204. A unidade de demultiplexação 3204 pode separar os dados multiplexados em dados de áudio codificados e dados de vídeo codificados. Conforme descrito acima, para alguns cenários práticos, por exemplo no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. Nesta situação, os dados codificados são transmitidos para o decodificador de vídeo 3206 e o decodificador de áudio 3208 sem ser através da unidade de demultiplexação 3204.
[0479] Através do processamento de demultiplexação, são gerados fluxo elementar de vídeo (ES), ES de áudio e, opcionalmente, legendas. O decodificador de vídeo 3206, que inclui o decodificador de vídeo 30 conforme explicado nas modalidades acima mencionadas, decodifica o ES de vídeo pelo método de decodificação conforme mostrado nas modalidades acima mencionadas para gerar o quadro de vídeo, e alimenta esses dados para a unidade síncrona 3212. O decodificador de áudio 3208 decodifica o ES de áudio para gerar o quadro de áudio, e alimenta esses dados para a unidade síncrona 3212. Alternativamente, o quadro de vídeo pode ser armazenado em um buffer (não mostrado na Figura Y) antes de alimentá-lo para a unidade síncrona 3212. Da mesma forma, o quadro de áudio pode ser armazenado em um buffer (não mostrado na Figura Y) antes de alimentá-lo para a unidade síncrona 3212.
[0480] A unidade síncrona 3212 sincroniza o quadro de vídeo e o quadro de áudio, e abastece o vídeo/áudio a um display de vídeo/áudio 3214. Por exemplo, a unidade síncrona 3212 sincroniza a apresentação das informações de vídeo e áudio. As informações podem codificar na sintaxe usando carimbos de tempo relativos à apresentação de dados de áudio e visuais codificados e carimbos de tempo relativos à entrega do próprio fluxo de dados.
[0481] Se a legenda estiver incluída no fluxo, o decodificador de legenda 3210 decodifica a legenda, e a sincroniza com o quadro de vídeo e o quadro de áudio, e abastece o vídeo/áudio/legenda a um display de vídeo/áudio/legenda 3216.
[0482] A presente invenção não está limitada ao sistema acima mencionado, e tanto o dispositivo de codificação de imagem quanto o dispositivo de decodificação de imagem nas modalidades acima mencionadas podem ser incorporados em outro sistema, por exemplo, um sistema de carro. Operadores matemáticos
[0483] Os operadores matemáticos usados neste pedido são semelhantes aos usados na linguagem de programação C. No entanto, os resultados das operações de divisão de inteiro e deslocamento aritmético são definidos com mais precisão, e operações adicionais são definidas, como exponenciação e divisão de valor real. As convenções de numeração e contagem geralmente começam em 0, por exemplo, "o primeiro"é equivalente ao 0-ésimo, "o segundo" é equivalente ao 1°, etc. Operadores aritméticos
[0484] Os seguintes operadores aritméticos são definidos da seguinte maneira: + 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 x y Exponenciação. Especifica x elevado a y. Em outros contextos, essa notação é usada para sobrescrito, não pretendendo ser interpretado como exponenciação. / Divisão de 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 em que nenhum truncamento ou arredondamento é pretendido. x/yUsado para denotar divisão em equações matemáticas em que nenhum truncamento ou arredondamento é pretendido. A soma de f (i) com i levando todos os valores inteiros de x até e incluindo y. x%y Módulo. Restante de x dividido por y, definido apenas para inteiros x e y com x > = 0 e y > 0.
Operadores lógicos
[0485] Os seguintes operadores lógicos são definidos da seguinte maneira: x && y Booleano lógico "e" de x e y x || y Booleano lógico "ou" de x e y ! Booleano lógico "não" x ? y: z Se x for TRUE ou diferente de 0, avalia o valor de y; de outro modo, avalia o valor de z. Operadores relacionais
[0486] Os seguintes operadores relacionais são definidos da seguinte maneira: > Maior que >= Maior ou igual a < Menor que <= Menor ou igual a == Igual a != Diferente de
[0487] Quando um operador relacional é aplicado a um elemento ou variável de sintaxe ao qual foi atribuído o valor "na"(não aplicável), o valor "na"é tratado como um valor distinto para o elemento ou variável de sintaxe. O valor "na"não é considerado igual a nenhum outro valor. Operadores Bitwise
[0488] Os seguintes operadores Bitwise são definidos da seguinte maneira: &"e" Bitwise. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significativos iguais a 0. | "ou" Bitwise. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significativos iguais a 0. A"ou exclusivo"Bitwise. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significativos iguais a 0. x >> y Deslocamento aritmético para a direita de uma representação de inteiro de complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados para os bits mais significativos (MSBs) como resultado do deslocamento para a 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 inteiro de complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados para os bits menos significativos (LSBs) como resultado do deslocamento para a esquerda têm um valor igual a 0. Operadores de atribuição
[0489] Os seguintes operadores aritméticos são definidos da seguinte maneira: = Operador de atribuição + + Incremento, ou seja, x + + é equivalente a x = x + 1; quando usado em um índice de matriz, avalia o valor da variável antes da operação de incremento. - - Decremento, ou seja, x - - é equivalente a x = x - 1; quando usado em um índice de matriz, avalia o valor da variável antes da operação de decremento. + = Incremento pela quantidade especificada, ou seja, x + = 3 é equivalente a x = x + 3 e x + = (-3) é equivalente a x = x + (-3). - = Decremento pela quantidade especificada, ou seja, x - = 3 é equivalente a x = x - 3, e x - = (-3) é equivalente a x = x - (-3). Notação de faixa
[0490] A seguinte notação é usada para especificar uma faixa de valores: x = y..z x assume valores inteiros 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
[0491] As seguintes funções matemáticas são definidas: Asin (x) a função 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 Ceil (x) o menor inteiro maior ou igual a x. Clip1Y(x) = Clip3 (0, (1 << BitDepth Y) - 1, x) Clip1C(x) = Clip3 (0, (1 << BitDepth C) - 1, x) Cos (x) a função trigonométrica cosseno operando em um argumento x em unidades de radianos. Floor (x) o maior inteiro menor ou igual a x. Ln (x) o logaritmo natural de x (o logaritmo de base e, em que e é o logaritmo natural constante de base 2,718 281 828...). Log2 (x) o logaritmo de base 2 de x. Log10 (x) o logaritmo de base 10 de x. Round (x) = Sinal (x) * Floor (Abs (x) + 0,5) Sin (x) a função seno trigonométrica operando em um argumento x em unidades de radianos Sqrt (x) = √x Swap (x, y) = (y, x) Tan (x) a função tangente trigonométrica operando em um argumento x em unidades de radianos Ordem de precedência de operação
[0492] 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 precedência superior são avaliadas antes de qualquer operação de precedência inferior. - Operações da mesma precedência são avaliadas sequencialmente da esquerda para a direita.
[0493] A tabela abaixo especifica a precedência de operações a partir da mais alta para a mais baixa; uma posição mais alta na tabela indica uma precedência mais alta.
[0494] Para os operadores que também são usados na linguagem de programação C, a ordem de precedência usada neste Relatório Descritivo é a mesma usada na linguagem de programação C. Tabela: precedência de operação da mais alta (no topo da tabela) para a mais baixa (na parte inferior da tabela)
Descrição de texto de operações lógicas
[0495] No texto, uma declaração de operações lógicas que seriam descritas matematicamente da seguinte forma: if (condition 0) statement 0 else if (condition 1) statement 1 ... else / * informative remark on remaining condition * / statement n pode ser descrito da seguinte maneira: ... como segue /... aplica-se o seguinte: - Se a condição 0, declaração 0 - Caso contrário, se a condição 1, declaração 1 - Caso contrário (observação informativa sobre a condição restante), declaração n
[0496] Cada declaração "Se... Caso contrário, se... Caso contrário,..." no texto é introduzida com "... como segue" ou "... o seguinte se aplica" imediatamente seguido por” Se...". A última condição de "Se... Caso contrário, se... Caso contrário,..."é sempre um "Caso contrário,...". As declarações intercaladas "Se... Caso contrário, se... Caso contrário,..." podem ser identificadas por corresponder “... como segue" ou "... o seguinte se aplica" com a terminação "Caso contrário,...".
[0497] No texto, uma declaração de operações lógicas que seriam descritas matematicamente da seguinte forma: if (condition 0a && condition 0b) statement 0 else if (condition 1a | | condition 1b) statement 1 else statement n pode ser descrito da seguinte maneira: ... como segue /... aplica-se o seguinte: - Se todas as seguintes condições forem verdadeiras, declaração 0: - condição 0a - condição 0b - Caso contrário, se uma ou mais das seguintes condições forem verdadeiras, declaração 1: - condição 1a - condição 1b - Caso contrário, declaração n
[0498] No texto, uma declaração de operações lógicas que seriam descritas matematicamente da seguinte forma: if (condition 0) statement 0 if (condition 1) statement 1 pode ser descrito da seguinte maneira: Quando a condição 0, declaração 0 Quando a condição 1, declaração 1
[0499] Embora as modalidades da invenção tenham sido descritas principalmente com base na codificação de vídeo, deve ser notado que as modalidades do sistema de codificação 10, codificador 20 e decodificador 30 (e correspondentemente o sistema 10) e as outras modalidades descritas neste documento também podem ser configuradas para processamento ou codificação de imagem, isto é, o processamento ou codificação de uma imagem individual independente de qualquer imagem precedente ou consecutiva como na codificação de vídeo. Em geral, apenas as unidades de predição inter 244 (codificador) e 344 (decodificador) podem não estar disponíveis no caso da codificação de processamento de imagem ser limitada a uma única imagem 17. Todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 20 e decodificador de vídeo 30 podem igualmente ser usadas para processamento de imagens estáticas, por exemplo, cálculo residual 204/304, transformada 206, quantização 208, quantização inversa 210/310, transformada (inversa) 212/312, particionamento 262/362, predição intra 254 / 354 e/ou filtragem loop 220, 320 e codificação de entropia 270 e decodificação de entropia 304.
[0500] Modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções descritas neste documento, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em uma mídia legível por computador ou transmitidas por meio de comunicação como uma ou mais instruções ou código, e executadas por uma unidade de processamento baseada em hardware. O meio legível por computador pode incluir mídia de armazenamento legível por computador, que corresponde a um meio tangível, como mídia de armazenamento de dados ou meio de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, o meio legível por computador geralmente pode corresponder a (1) mídia de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação, como um sinal ou onda portadora. A mídia de armazenamento de dados pode ser qualquer meio disponível que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0501] A título de exemplo, e não limitação, tal mídia de armazenamento legível por computador pode 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 outro meio que pode ser usado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada meio legível por computador. Por exemplo, se as instruções são transmitidas de um site, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra ótica, par trançado, DSL ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, estão incluídos na definição de meio. Deve ser entendido, no entanto, que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outras mídias transitórias, mas são direcionados para mídias de armazenamento tangíveis não transitórias. Disco (disk) e disco (disc), conforme usados neste documento, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, em que os discos (disks) geralmente reproduzem dados magneticamente, enquanto os discos (discs) reproduzem dados opticamente com lasers. As combinações dos itens acima também devem ser incluídas no escopo da mídia legível por computador.
[0502] As instruções podem ser executadas por um ou mais processadores, 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 em campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo "processador", conforme usado neste documento, pode se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade descrita neste 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 implementadas em um ou mais circuitos ou elementos lógicos.
[0503] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho portátil sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas reveladas, mas não necessariamente requerem a realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com software e/ou firmware adequados.

Claims (15)

1. Método (4200) de codificação implementado por um dispositivo de codificação, CARACTERIZADO pelo fato de que compreende: aplicar (4201) um filtro loop adaptativo de componente cruzado, CC- ALF para refinar um componente de croma; gerar um fluxo de bits incluindo elementos de sintaxe relacionados a CC-ALF, em que os elementos de sintaxe relacionados a CC-ALF indicam informações relacionadas a CC-ALF; em que os elementos de sintaxe relacionados a CC-ALF compreendem um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elementos de sintaxe é sinalizado no nível de SPS.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que os elementos de sintaxe relacionados a CC-ALF compreendem um sétimo elemento de sintaxe quando o segundo elemento de sintaxe indicar que CC-ALF está habilitado, em que o sétimo elemento de sintaxe é sinalizado no cabeçalho de imagem e o sétimo elemento de sintaxe especifica se CC-ALF para um componente de cor Cr está habilitado para uma imagem atual de uma sequência de vídeo associada ao fluxo de bits.
3. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que se o sétimo elemento de sintaxe tiver um valor de 1, isso indica que CC-ALF para o componente de cor Cr está habilitado para a imagem atual e/ou se o sétimo elemento de sintaxe tiver um valor de 0, isso indica que CC-ALF para o componente de cor Cr está desabilitado para a imagem atual.
4. Método, de acordo com a reivindicação 2 ou 3, CARACTERIZADO pelo fato de que os elementos de sintaxe relacionados a CC-ALF compreendem um oitavo elemento de sintaxe quando o sétimo elemento de sintaxe for obtido como indicando que CC-ALF para o componente de cor Cr está habilitado para a imagem atual, em que o oitavo elemento de sintaxe é obtido a partir do cabeçalho de imagem e o oitavo elemento de sintaxe indica um conjunto de parâmetros que está associado ao componente de cor Cr de todas as fatias na imagem atual.
5. Método, de acordo com qualquer uma das reivindicações 1 a 4, CARACTERIZADO pelo fato de que os elementos de sintaxe relacionados a CC- ALF compreendem um décimo elemento de sintaxe quando o segundo elemento de sintaxe for obtido como indicando que CC-ALF está habilitado, em que o décimo elemento de sintaxe é obtido a partir de um cabeçalho de fatia e o décimo elemento de sintaxe indica se CC-ALF para um componente de cor Cb está habilitado para uma fatia atual de uma imagem atual de uma sequência de vídeo associada ao fluxo de bits.
6. Método (4300) de decodificação implementado por um dispositivo de decodificação, CARACTERIZADO pelo fato de que compreende: analisar (4301) elementos de sintaxe relacionados a filtro loop adaptativo de componente cruzado, CC-ALF, a partir de um fluxo de bits; em que os elementos de sintaxe relacionados a CC-ALF compreendem um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS; e realizar (4302) um processo de CC-ALF usando o segundo elemento de sintaxe.
7. Método, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que os elementos de sintaxe relacionados a CC-ALF compreendem um sétimo elemento de sintaxe quando o segundo elemento de sintaxe for obtido como indicando que CC-ALF está habilitado, em que o sétimo elemento de sintaxe é obtido a partir do cabeçalho de imagem e o sétimo elemento de sintaxe especifica se CC-ALF está habilitado para um componente de cor Cr para uma imagem atual de uma sequência de vídeo associada ao fluxo de bits.
8. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que se o sétimo elemento de sintaxe tiver um valor de 1, isso indica que CC-ALF para o componente de cor Cr está habilitado para a imagem atual e/ou se o sétimo elemento de sintaxe tiver um valor de 0, isso indica que CC-ALF para o componente de cor Cr está desabilitado para a imagem atual.
9. Método, de acordo com a reivindicação 7 ou 8, CARACTERIZADO pelo fato de que os elementos de sintaxe relacionados a CC-ALF compreendem um oitavo elemento de sintaxe quando o sétimo elemento de sintaxe for obtido como indicando que CC-ALF para o componente de cor Cr está habilitado para a imagem atual, em que o oitavo elemento de sintaxe é obtido a partir do cabeçalho de imagem e o oitavo elemento de sintaxe indica um conjunto de parâmetros que está associado ao componente de cor Cr de todas as fatias na imagem atual.
10. Método, de acordo com qualquer uma das reivindicações 6 a 9, CARACTERIZADO pelo fato de que os elementos de sintaxe relacionados a CC- ALF compreendem um décimo elemento de sintaxe quando o segundo elemento de sintaxe for obtido como indicando que CC-ALF está habilitado, em que o décimo elemento de sintaxe é obtido a partir de um cabeçalho de fatia e o décimo elemento de sintaxe indica se CC-ALF para um componente de cor Cb está habilitado para uma fatia atual de uma imagem atual de uma sequência de vídeo associada ao fluxo de bits.
11. Dispositivo para codificação de dados de vídeo, CARACTERIZADO pelo fato de que compreende: uma memória de dados de vídeo; e um codificador de vídeo, em que o codificador de vídeo é configurado para: gerar um fluxo de bits incluindo elementos de sintaxe relacionados a filtro loop adaptativo de componente cruzado, CC-ALF; em que os elementos de sintaxe relacionados a CC-ALF compreendem um segundo elemento de sintaxe que indica se o filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS.
12. Dispositivo para decodificação de dados de vídeo, CARACTERIZADO pelo fato de que compreende: uma memória de dados de vídeo; e um decodificador de vídeo, em que o decodificador de vídeo é configurado para: analisar elementos de sintaxe relacionados a filtro loop adaptativo de componente cruzado, CC- ALF, a partir de um fluxo de bits; em que os elementos de sintaxe relacionados a CC-ALF compreendem um segundo elemento de sintaxe que indica se filtro loop adaptativo de componente cruzado CC-ALF está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS; e realizar um processo de CC-ALF usando o segundo elemento de sintaxe.
13. Mídia de armazenamento legível por computador, CARACTERIZADA pelo fato de que compreende na mesma instruções executáveis por computador que, quando executadas por um dispositivo de computação, fazem com que o dispositivo de computação realize um método conforme definido em qualquer uma das reivindicações 1 a 10.
14. Mídia de armazenamento não transitória, CARACTERIZADA pelo fato de que compreende um fluxo de bits codificado/decodificado pelo método conforme definido em qualquer uma das reivindicações precedentes.
15. Fluxo de bits codificado, CARACTERIZADO pelo fato de que o fluxo de bits compreende: incluir elementos de sintaxe relacionados a filtro loop adaptativo de componente cruzado, CC-ALF; em que os elementos de sintaxe relacionados a CC-ALF compreendem um segundo elemento de sintaxe que indica se filtro loop adaptativo de componente cruzado está habilitado ou não em um nível de sequência e o segundo elemento de sintaxe é sinalizado no nível de SPS.
BR122023025769-3A 2019-12-23 2020-12-23 Filtragem loop adaptativa de componente cruzado para codificação de vídeo BR122023025769A2 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EPPCT/EP2019/086984 2019-12-23
US62/960,147 2020-01-13

Publications (1)

Publication Number Publication Date
BR122023025769A2 true BR122023025769A2 (pt) 2024-05-21

Family

ID=

Similar Documents

Publication Publication Date Title
EP3868101B1 (en) An encoder, a decoder and corresponding methods for performing chroma deblocking for blocks which use joint chroma coding
BR112021009848A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
CA3131289A1 (en) An encoder, a decoder and corresponding methods using ibc dedicated buffer and default value refreshing for luma and chroma component
WO2021129690A1 (en) Cross-component adaptive loop filtering for video coding
BR122023024004A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112020026818A2 (pt) codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio
WO2021155740A1 (en) An encoder, a decoder and corresponding methods about signaling high level syntax
WO2021159962A1 (en) An encoder, a decoder and corresponding methods for subpicture signalling in sequence parameter set
BR112021003999A2 (pt) relação entre elementos de restrição de partição
CA3120795A1 (en) An encoder, a decoder and corresponding methods using ibc merge list
BR122022009445A2 (pt) Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem
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
WO2021170132A1 (en) An encoder, a decoder and corresponding methods simplifying signalling slice header syntax elements
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
WO2021169859A1 (en) A decoder and corresponding methods to signal picture partitioning information for slices
WO2021141519A2 (en) Method and apparatus of high-level syntax for smoothing intra-prediction techniques
EP3991435A1 (en) Method and apparatus of sample adaptive offset in-loop filter with application region size constraint
BR122023025769A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023025774A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023025787A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023021074A2 (pt) Método de desblocagem, dispositivo para uso em um codificador e/ou um decodificador de imagem, codificador, decodificador, e meio legível por computador não transitório
EP4059220A2 (en) Method and apparatus of position dependent prediction combination
WO2021006773A1 (en) Motion field storage optimization for the line buffer