BR112014009431B1 - Método para codificar dados de vídeo, aparelho para codificar vídeo e memória legível por computador - Google Patents

Método para codificar dados de vídeo, aparelho para codificar vídeo e memória legível por computador Download PDF

Info

Publication number
BR112014009431B1
BR112014009431B1 BR112014009431-4A BR112014009431A BR112014009431B1 BR 112014009431 B1 BR112014009431 B1 BR 112014009431B1 BR 112014009431 A BR112014009431 A BR 112014009431A BR 112014009431 B1 BR112014009431 B1 BR 112014009431B1
Authority
BR
Brazil
Prior art keywords
video
edge
video block
samples
video encoder
Prior art date
Application number
BR112014009431-4A
Other languages
English (en)
Other versions
BR112014009431A2 (pt
Inventor
Marta Karczewicz
Geert Van der Auwera
Xianglin Wang
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112014009431A2 publication Critical patent/BR112014009431A2/pt
Publication of BR112014009431B1 publication Critical patent/BR112014009431B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Abstract

DETERMINAR VALORES DE FORÇA DE FRONTEIRA PARA FILTRAGEM DE DESBLOQUEIO EM CODIFICAÇÃO DE VÍDEO. Um codificador de vídeo associa um primeiro valor de força de fronteira com uma borda em resposta à determinação de que um primeiro bloco de vídeo ou um segundo bloco de vídeo está associado com uma unidade de codificação intrapredita (CU), em que a borda ocorre em uma fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo. O codificador de vídeo pode associar um segundo ou um terceiro valor de força de fronteira com a borda quando nem o primeiro bloco de vídeo nem o segundo bloco de vídeo estão associados com uma CU intrapredita. O codificador de vídeo pode aplicar um ou mais filtros de desbloqueio às amostras associadas com a borda quando a borda está associada com o primeiro valor de força de fronteira ou o segundo valor de força de fronteira. O terceiro valor de força de fronteira indica que os filtros de desbloqueio estão desligados para as amostras associadas com a borda.

Description

[0001] Este pedido reivindica o benefício de do Pedido de Patente Provisório U.S. No. 61/551,325, depositado em 25 de outubro de 2011, pedido de Patente Provisório U.S. No. 61/554,887, depositado em 2 de novembro de 2011, pedido de Patente Provisório U.S. 61/579,488, depositado em 22 de dezembro de 2011, e o Pedido de Patente Provisório U.S. 61/589,143, depositado em 20 de Janeiro de 2012, todo o conteúdo dos quais está aqui incorporado para referência.
CAMPO TÉCNICO
[0002] Esta divulgação refere-se à codificação de vídeo e, mais particularmente, à filtragem de dados de vídeo decodificados.
FUNDAMENTOS
[0003] Capacidades de vídeo digitais podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de broadcast direto digital, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores desktop ou laptop, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, consoles de videogames, telefones celulares ou de rádio por satélite, dispositivos de vide teleconferência, e assim por diante. Dispositivos de vídeo digitais implementam técnicas de compressão de vídeo, tais como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG- 4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em fase de desenvolvimento e extensão de tais padrões, para transmitir, receber e armazenar as informações de vídeo digital de forma mais eficiente.
[0004] As técnicas de compressão de vídeo executam predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo pode ser dividida em blocos de vídeo, que também podem ser referidas como blocos em árvore, unidades de codificação (CUs) e/ou nós de codificação. Blocos de vídeo em uma fatia (I) intracodificada de uma imagem são codificados usando a predição espacial em relação às amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem pode usar predição espacial em relação a amostras de referência em blocos vizinhos da mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e imagens de referência podem ser referidas como quadros de referência.
SUMÁRIO
[0005] De um modo geral, esta divulgação descreve técnicas para a aplicação de um filtro de desbloqueio em uma borda que ocorre entre um primeiro bloco de vídeo e um segundo bloco de vídeo. Aplicar o filtro de desbloqueio na borda pode reduzir o aparecimento de artefatos visuais causados pela codificação baseada em blocos. Tal como aqui descrito, um codificador de vídeo pode associar um primeiro valor de intensidade limítrofe com uma borda em resposta à determinação de que um primeiro bloco de vídeo ou um segundo bloco de vídeo está associado com uma unidade de codificação intrapredita (CU), em que a borda ocorre em uma fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo. O codificador de vídeo pode associar um segundo ou um terceiro valor de intensidade limítrofe com a borda quando nem o primeiro bloco de vídeo, nem o segundo bloco de vídeo estão associados com uma CU intrapredita. O codificador de vídeo pode aplicar um ou mais filtros de desbloqueio em amostras associadas com a borda quando a borda está associada com o primeiro valor de intensidade limítrofe ou o segundo valor de intensidade limítrofe. O terceiro valor de intensidade limítrofe indica que os filtros de desbloqueio estão desligados para as amostras associadas com a borda.
[0006] Este documento descreve um método para codificação de dados de vídeo. O método compreende a associação de um primeiro valor de intensidade limítrofe com uma borda em resposta à determinação de que um primeiro bloco de vídeo ou um segundo bloco de vídeo está associado com uma unidade de codificação intrapredita (CU), a borda ocorrendo em uma fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo. O método também compreende a associação de um segundo valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que uma ou mais condições adicionais são satisfeitas. Além disso, o método compreende a associação de um terceiro valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que as uma ou mais condições adicionais não são satisfeitas. O método também compreende a aplicação de um ou mais filtros de desbloqueio às amostras associadas com a borda quando a borda está associada com o primeiro valor de intensidade limítrofe ou o segundo valor de intensidade limítrofe, mas não o terceiro valor de intensidade limítrofe.
[0007] Além disso, esta divulgação descreve um aparelho de codificação de vídeo que compreende um ou mais processadores configurados para associar um primeiro valor de intensidade limítrofe com uma borda em resposta à determinação de que um primeiro bloco de vídeo ou um segundo bloco de vídeo está associado com uma unidade de codificação intrapredita (CU), a borda ocorrendo em uma fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo. Os um ou mais processadores são configurados para associar um segundo valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que uma ou mais condições adicionais são satisfeitas. Os um ou mais processadores são configurados para associar um terceiro valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que as uma ou mais condições adicionais não são satisfeitas. Além disso, um ou mais processadores são configurados para aplicar um filtro de desbloqueio às amostras associadas com a borda quando a borda está associada com o primeiro valor de intensidade limítrofe ou o segundo valor de intensidade limítrofe, mas não o terceiro valor de intensidade limítrofe.
[0008] Esta divulgação descreve também um aparelho de codificação de vídeo, que compreende meios para associar um primeiro valor de intensidade limítrofe com uma borda em resposta à determinação de que um primeiro bloco de vídeo ou um segundo bloco de vídeo está associado com uma unidade de codificação intrapredita (CU), a borda ocorrendo em uma fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo. O aparelho de codificação de vídeo também inclui meios para associar um segundo valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que uma ou mais condições adicionais são satisfeitas. Além disso, o aparelho de codificação de vídeo compreende meios para associar um terceiro valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que as uma ou mais condições adicionais não estão satisfeitas. O aparelho de codificação de vídeo compreende também meios para a aplicação de um ou mais filtros de desbloqueio às amostras associadas com a borda quando a borda está associada com o primeiro valor de intensidade limítrofe ou o segundo valor de intensidade limítrofe, mas não o terceiro valor de intensidade limítrofe.
[0009] Esta descrição também descreve um produto de programa de computador que compreende um ou mais meios de armazenamento legível por computador que armazena instruções executáveis por computador que, quando executadas, fazem com que um ou mais processadores associem um primeiro valor de intensidade limítrofe com uma borda em resposta à determinação de que um primeiro bloco de vídeo ou um segundo bloco de vídeo está associado com uma unidade de codificação intrapredita (CU). A borda ocorrendo em uma fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo. As instruções também fazem com que os um ou mais processadores associem um segundo valor de intensidade limítrofe à borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que uma ou mais condições adicionais são satisfeitas. As instruções também fazem com que os um ou mais processadores associem um terceiro valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que as uma ou mais condições adicionais não estão satisfeitas. Além disso, as instruções fazem com que os um ou mais processadores apliquem um ou mais filtros de desbloqueio às amostras associadas com a borda quando a borda está associada com o primeiro valor de intensidade limítrofe ou o segundo valor de intensidade limítrofe, mas não o terceiro valor de intensidade limítrofe.
[0010] Os detalhes de um ou mais exemplos são estabelecidos nos desenhos anexos e descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição e desenhos, e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0011] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplar que pode utilizar as técnicas desta divulgação.
[0012] A figura 2 é um diagrama de blocos ilustrando um codificador de vídeo exemplar que pode implementar as técnicas desta divulgação.
[0013] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar que pode implementar as técnicas desta divulgação.
[0014] A figura 4 é um fluxograma que ilustra uma operação de desbloqueio exemplar para reduzir os artefatos de bloqueio associados a uma unidade de codificação.
[0015] A figura 5 é um fluxograma que ilustra uma operação exemplar para associar um valor de intensidade limítrofe com uma borda de luminância entre dois blocos de vídeo.
[0016] A figura 6 é um fluxograma que ilustra uma operação exemplar para associar um valor de intensidade limítrofe é uma borda de croma entre dois blocos de vídeo.
[0017] A figura 7 é um fluxograma que ilustra uma operação exemplar para desbloquear bordas de luminância de uma unidade de codificação.
[0018] A figura 8 é um fluxograma que ilustra uma operação de desbloqueio exemplar realizada por um codificador de vídeo em uma borda de luma individual.
[0019] A figura 9 é um diagrama conceitual que indica etiquetas exemplares de amostras em cada borda vertical entre um primeiro bloco de vídeo "A" e um segundo bloco de vídeo "B".
[0020] A figura 10 é um fluxograma que ilustra uma operação exemplar para determinar se deve aplicar um filtro de desbloqueio forte ou fraco em um segmento de uma borda de luminância.
[0021] A figura 11 é um fluxograma que ilustra uma operação exemplar para desbloquear bordas de croma de uma unidade de codificação.
[0022] A figura 12 é um fluxograma que ilustra uma operação de desbloqueio exemplar realizada por um codificador de vídeo em Amostras Cb ou Cr associadas com uma borda de croma individual.
[0023] As Figuras 13A-13D são diagramas conceituais que ilustram exemplos de gráficos de valores daamostra.
[0024] As Figuras 14A-C são diagramas conceituais que ilustram exemplos de gráficos de valores da amostra.
DESCRIÇÃO DETALHADA
[0025] Os desenhos em anexo ilustram exemplos. Elementos indicados por números de referência os desenhos anexos correspondem aos elementos indicados por números de referência como na descrição a seguir. Nesta divulgação, elementos que têm nomes que começam com palavras ordinais (por exemplo, "primeiro", "segundo", "terceiro", e assim por diante) não implicam necessariamente que os elementos têm uma ordem particular. Pelo contrário, essas palavras ordinais são meramente usadas para referirem-se a diferentes elementos de um mesmo tipo ou similar.
[0026] Uma borda pode ocorrer em uma fronteira entre um primeiro bloco de vídeo e um segundo bloco de vídeo. Nesta divulgação, o termo "bloco de vídeo" pode ser utilizadopara se referir a um bloco de amostras bidimensional (2D). Por exemplo, os primeiro e segundo blocos de vídeo podem ser blocos de vídeo decodificados associados com unidades de codificação vizinhas (CUs), ou unidades de transformada (TU) ou unidades de predição (PU) das CU. Um codificador de vídeo pode associar um primeiro valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo ou o segundo bloco de vídeo está associado com uma CU intrapredita. O codificador de vídeo pode associar um segundo ou um terceiro valor de intensidade limítrofe com a borda quando nem o primeiro nem o segundo bloco de vídeo está associado com uma CU intrapredita. Quando a borda está associada com o primeiro valor de intensidade limítrofe ou o segundo valor de intensidade limítrofe, o codificador de vídeo pode aplicar um ou mais filtros de desbloqueio às amostras associadas com a borda. As amostras associadas com a borda podem incluir amostras em linhas de amostras que correm perpendicularmente à borda. Os filtros de desbloqueio podem reduzir a visibilidade de artefatos de bloqueio associados com a borda. Artefatos de bloqueio podem incluir descontinuidades bruscas em amostras de brilho (luma) e/ou cor (croma) que não estavam originalmente presentes nos blocos de vídeo. Tal como aqui utilizado, o termo "amostra" pode ser utilizado alternadamente com o termo "pixels".
[0027] A associação da borda com o primeiro valor de intensidade limítrofe em resposta à determinação de que o primeiro bloco de vídeo ou o segundo bloco de vídeo estão associados com uma CU intrapredita pode simplificar um processo de associação de um valor de intensidade limítrofe com a borda, e assim pode reduzir a complexidade e aumentar o desempenho do codificador de vídeo. Em contrapartida, se o codificador de vídeo fosse fazer determinações adicionais sobre qual valor de intensidade limítrofe associar com a borda depois de determinar que o primeiro bloco de vídeo ou o segundo bloco de vídeo está associado a uma CU intrapredita, o codificador de vídeo pode ser mais complicado e pode ter um desempenho inferior.
[0028] A figura 1 é um diagrama de blocos que ilustra um exemplo do sistema de codificação de vídeo 10 que pode utilizar as técnicas desta divulgação. Como utilizado aqui descrito, o termo "codificador de vídeo" refere-se genericamente a ambos os codificadores de vídeo e decodificadores de vídeo. Nesta divulgação, os termos "codificação de vídeo" ou "codificação" pode referir-se genericamente a codificação de vídeo e decodificação de vídeo.
[0029] Os dispositivo de origem 12 e dispositivo de destino 14 podem incluir uma vasta gama de dispositivos, incluindo computadores desktop, dispositivos de computação móvel, computadores notebook (por exemplo, laptop), tablets, set-top boxes, aparelhos telefônicos, tais como os chamados "smart phones”, televisores, câmeras, dispositivos de vídeo, reprodutores de mídia digital, consoles de jogos de vídeo, computadores em carro, ou similares. Em alguns exemplos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicações sem fio.
[0030] Dispositivo de destino 14 pode receber dados de vídeo codificados de dispositivo de origem 12 através de um canal 16. Canal 16 pode compreender um tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o canal 16 pode compreender um meio de comunicação que permite que dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14, em tempo real. Neste exemplo, o dispositivo de origem 12 pode modular os dados de vídeo codificados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e pode transmitir os dados de vídeo modulados para o dispositivo de destino 14. O meio de comunicação pode compreender um meio de comunicação com ou sem fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, switches, estações base, ou outro equipamento que facilita a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0031] Em outro exemplo, o canal 16 pode corresponder a um meio de armazenamento que armazena os dados de vídeo codificados gerados pelo dispositivo de origem 12. Neste exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento via acesso ao disco ou acesso ao cartão. O meio de armazenamento pode incluir uma variedade de meios de armazenamento de dados acessados localmente, tais como discos Blu-ray, DVDs, CD-ROMs, memória flash, ou outros meios de armazenamento digital adequados para o armazenamento de dados de vídeo codificados. Em um outro exemplo, o canal 16 pode incluir um servidor de arquivo ou outro dispositivo de armazenamento intermediário que armazena o vídeo codificado gerado pelo dispositivo de origem 12. Neste exemplo, o dispositivo de destino 14 pode acessar aos dados de vídeo codificados armazenados no servidor de arquivo ou outro dispositivo de armazenamento intermediário via streaming ou download. O servidor de arquivos pode ser um tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir os dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivos exemplares incluem servidores de web (por exemplo, para um site), servidores de protocolo de transferência de arquivos (FTP), dispositivos de armazenamento anexados à rede (NAS) e unidades de disco local. Dispositivo de destino 14 pode acessar os dados de vídeo codificados por meio de uma conexão de dados padrão, incluindo conexão com a Internet. Tipos exemplares de conexões de dados podem incluir canais sem fio (por exemplo, conexões Wi-Fi), conexões com fio (por exemplo, DSL, modem a cabo, etc.), ou a combinação de ambos que seja adequada para o acesso a dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados a partir do servidor de arquivos pode ser uma transmissão por streaming, uma transmissão de download, ou uma combinação de ambos.
[0032] As técnicas da presente divulgação não se limitam a aplicações ou configurações sem fio. As técnicas podem ser aplicadas a codificação de vídeo em apoio a qualquer uma de uma variedade de aplicações multimídia, como transmissões através do ar de TV, transmissões de televisão por cabo, transmissões de televisão via satélite, streaming de transmissões de vídeo, por exemplo, através da Internet, codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outras aplicações. Em alguns exemplos, sistema de codificação devídeo 10 pode ser configurado para suportar uma forma ou de transmissão de vídeo de duas vias para suportar aplicações como streaming de vídeo, reprodução de vídeo, transmissão de vídeo e/ou de vídeo telefonia.
[0033] No exemplo da figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, o codificador de vídeo 20, e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador / demodulador (modem) e/ou um transmissor. No dispositivo de origem 12, fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém dados de vídeo capturados anteriormente, uma interface de transmissão de vídeo para receber dados de vídeo a partir de um provedor de conteúdo de vídeo, e/ou um sistema de gráficos do computador para gerar os dados de vídeo, ou uma combinação de tais fontes.
[0034] Codificador de vídeo 20 pode codificar os dados de vídeo capturados, pré-capturados, ou gerados por computador. Os dados de vídeo codificados podem ser transmitidos diretamente para o dispositivo de destino 14 via interface de saída 22 do dispositivo de origem 12. Os dados de vídeo codificados também podem ser armazenados em um meio de armazenamento ou um servidor de arquivos para acesso posterior pelo dispositivo de destino 14 para decodificação e/ou reprodução.
[0035] No exemplo da figura 1, o dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. Interface de entrada 28 do dispositivo de destino 14 recebe dados de vídeo codificados sobre o canal 16. Os dados de vídeo codificados podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 que representam os dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos a um meio de comunicação, armazenados em um meio de armazenamento, ou armazenados em um servidor de arquivo
[0036] Dispositivo de exibição 32 pode ser integrado com ou pode ser externo ao dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e pode também ser configurado para interagir com um dispositivo externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário. Dispositivo de exibição 32 pode compreender qualquer um de uma variedade de dispositivos de exibição, tais como um display de cristal líquido (LCD), uma tela de plasma, um diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0037] Codificador de vídeo 20 e decodificador de vídeo 30 pode funcionar de acordo com um padrão de compressão de vídeo, como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e pode estar de acordo com um modelo de teste HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 pode funcionar de acordo com outros padrões de propriedade ou da indústria, tais como o padrão ITU-T H.264, alternativamente conhecido como MPEG-4 Parte 10, Codificação de Vídeo Avançada (AVC), ou extensões de tais padrões. As técnicas da presente divulgação, no entanto, não estão limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de compressão de vídeo MPEG-2 incluem e ITU-T H.263.
[0038] Embora não esteja representado no exemplo da figura 1, o codificador de vídeo 20 e o decodificador de vídeo 30 pode cada um ser integrado com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separado. Se for o caso, em alguns exemplos, as unidades MUX-DEMUX podem estar de acordo com o protocolo multiplexador ITU H.223, ou outros protocolos, como o Protocolo de Datagrama de Usuário (UDP).
[0039] Mais uma vez, a figura 1 é apenas um exemplo e as técnicas desta divulgação podem ser aplicadas às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente incluem qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados podem ser recuperados a partir de uma memória local, transmitidos através de uma rede, ou algo semelhante. Um dispositivo de codificação pode codificar e armazenar os dados para a memória, e/ou um dispositivo de decodificação pode recuperar e decodificar dados a partir da memória. Em muitos exemplos, a codificação e decodificação é realizada por meio de dispositivos que não se comunicam um com o outro, mas simplesmente codificam os dados de memória e/ou recuperam e decodificam dados da memória.
[0040] O codificador de vídeo 20 e o decodificador de vídeo 30 cada um pode ser implementado como qualquer um de uma variedade de circuitos adequados, tais como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASIC), arranjos de porta programável em campo (FPGAs), lógica discreta, hardware, ou qualquer combinação destes. Quando as técnicas são aplicadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento legível por computador adequado, não transitório e pode executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta divulgação. Cada um de codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais transdutores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo.
[0041] Como mencionado brevemente acima, o codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada uma das imagens é uma imagem parada que faz parte de um vídeo. Em alguns casos, uma imagem pode ser referida como um "quadro" de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que forma uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir imagens codificadas e dados associados. Uma imagem codificada é uma representação codificada de uma imagem.
[0042] Para gerar o fluxo de bits, o codificador de vídeo 20 pode executar operações de codificação em cada imagem nos dados de vídeo. Quando o codificador de vídeo 20 executa operações de codificação nas imagens, o codificador de vídeo 20 pode gerar uma série de imagens codificadas e dados associados. Os dados associados podem incluir conjuntos de parâmetro de sequência, conjuntos de parâmetro de imagem, conjuntos de parâmetro de adaptação, e outras estruturas de sintaxe. Um conjunto de parâmetro de sequência (SPS) pode conter parâmetros aplicáveis a zero ou mais sequências de imagem. Um conjunto de parâmetro de imagem (PPS) pode conter parâmetros aplicáveis a zero ou mais imagens. Um conjunto de parâmetro de adaptação (APS) pode conter parâmetros aplicáveis a zero ou mais imagens.
[0043] Para gerar uma imagem codificada, o codificador de vídeo 20 pode particionar uma imagem em blocos de vídeo. Um bloco de vídeo pode ser uma matriz bidimensional de amostras. Cada um dos blocos de vídeo está associado com um bloco em árvore. Em alguns casos, um bloco em árvore pode ser referido como uma maior unidade de codificação (LCU). Os blocos em árvore de HEVC podem ser amplamente análogos aos macroblocos dos padrões anteriores, tais como H.264/AVC. No entanto, um bloco em árvore não é, necessariamente, limitado a um determinado tamanho e pode incluir uma ou mais unidades de codificação (CU). Codificador de vídeo 20 por usar o particionamento quadtree para particionar os blocos de bloco de vídeos em árvore em blocos de vídeo associados a CUs, daí o nome "blocos em árvore".
[0044] Em alguns exemplos, o codificador de vídeo 20 pode particionar uma imagem em uma pluralidade de fatias. Cada uma das fatias pode incluir um número inteiro de CUs. Em alguns casos, uma fatia inclui um número inteiro de blocos em árvore. Em outros casos, um limite de uma fatia pode estar dentro de um bloco em árvore.
[0045] Como parte de realizar uma operação de codificação em uma imagem, o codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Quando codificador de vídeo 20 realiza uma operação de codificação em uma fatia, o codificador de vídeo 20 pode gerar dados codificados associados à fatia. Os dados codificados associados com a fatia podem ser referidos como uma "fatia codificada".
[0046] Para gerar uma fatia codificada, o codificador de vídeo 20 pode executar operações de codificação em cada bloco em árvore em uma fatia. Quando codificador de vídeo 20 realiza uma operação de codificação em um bloco em árvore, o codificador de vídeo 20 pode gerar um bloco em árvore codificado. O bloco em árvore codificado pode incluir os dados que representam uma versão codificada do bloco em árvore.
[0047] Para gerar um bloco em árvore codificado, o codificador de vídeo 20 pode de forma recursiva executar o particionamento quadtree no bloco de vídeo do bloco em árvore dividindo o bloco de blocos de vídeo de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado com uma CU diferente. Por exemplo, o codificador de vídeo 20 pode particionar o bloco de vídeo de um bloco em árvore em quatro sub-blocos de tamanho igual, particionar um ou mais dos sub-blocos em quatro sub-sub- blocos de tamanho igual, e assim por diante. Um ou mais elementos de sintaxe no fluxo de bits pode indicar um número máximo de vezes de codificador de vídeo 20 pode particionar o bloco de vídeo de um bloco em árvore. Um bloco de vídeo de uma CU pode ser em formato quadrado. O tamanho do bloco de vídeo de uma CU (ou seja, o tamanho da CU) pode variar de 8x8 pixels até o tamanho de um bloco de vídeo de um bloco em árvore (ou seja, o tamanho do bloco em árvore) com um máximo de 64x64 pixels ou maior.
[0048] Codificador de vídeo 20 pode realizar as operações de codificação em cada CU não particionada de um bloco em árvore. A CU não particionada é uma CU cujo bloco de vídeo não é dividido em blocos de vídeo para outras CUs. Como parte da realização de uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 pode gerar uma ou mais unidades de predição (PUs) para a CU. Cada uma das PUs da CU pode ser associada com um bloco de vídeo diferente no interior do bloco de vídeo da CU. Codificador de vídeo 20 pode gerar um bloco de vídeo predito para cada PU da CU. O bloco de vídeo predito de uma PU pode ser um bloco de amostras. Codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar o bloco de vídeo predito para a PU.
[0049] Quando o codificador de vídeo 20 utiliza intrapredição para gerar o bloco de vídeo predito de uma PU, o codificador de vídeo 20 pode gerar o bloco de vídeo predito da PU com base em amostras decodificadas da imagem associada à PU. Quando codificador de vídeo 20 usa interpredição para gerar o bloco de vídeo predito da PU, o codificador de vídeo 20 pode gerar o bloco de vídeo predito da PU com base em valores decodificados de imagens diferentes da imagem associada com PU. Se o codificador de vídeo 20 usa intrapredição para gerar blocos de vídeo preditos das PUs de uma UC, a CU é uma CU intrapredita.
[0050] Quando codificador de vídeo 20 usa interpredição para gerar um bloco de vídeo predito para a PU, o codificador de vídeo 20 pode gerar informações de movimento para a PU. A informação de movimento para uma PU pode indicar uma porção de uma outra imagem que corresponde ao bloco de vídeo da PU. Em outras palavras, a informação de movimento para uma PU pode indicar uma "amostra de referência" para a PU. Codificador de vídeo 20 pode gerar o bloco de vídeo predito para a PU com base nas porções das outras imagens que são indicadas pela informação de movimento para a PU. Se codificador de vídeo 20 usa interpredição para gerar blocos de vídeo preditos para as PUs de uma UC, a CU é uma CU interpredita.
[0051] Depois de codificador de vídeo 20 gerar blocos de vídeo preditos para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar dados residuais para a CU com base nos blocos de vídeo preditos para as PUs da CU. Os dados residuais para a CU podem indicar as diferenças entre as amostras em blocos de vídeo preditos para a PU da CU e o bloco de vídeo original da CU.
[0052] Além disso, como parte da realização de uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 pode executar o particionamento quadtree recursivo nos dados residuais da CU para particionar os dados residuais da CU em um ou mais blocos de dados residual (ou seja, blocos de vídeo residuais) associados a unidades de transformada (TUs) da CU. Cada TU de uma CU pode ser associada com um bloco de vídeo residual diferente. Codificador de Vídeo 20 pode executar as operações de transformada em cada TU da CU.
[0053] Quando codificador de vídeo 20 executa a operação de transformada em uma TU, o codificador de vídeo 20 pode aplicar uma ou mais transformadas em um bloco de vídeo residual associado com a TU para gerar um ou mais blocos de coeficiente de transformada (ou seja, blocos de coeficientes de transformada) associados com a TU. Conceitualmente, um bloco de coeficiente de transformada pode ser uma matriz bidimensional (2D) de coeficientes de transformada.
[0054] Depois de gerar um bloco de coeficientes de transformada, o codificador de vídeo 20 pode realizar uma operação de quantização no bloco de coeficiente de transformada. Quantização geralmente refere-se a um processo em que os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes de transformada, proporcionando a compressão adicional. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes de transformada. Por exemplo, um n-bit coeficiente de transformada pode ser arredondado para um m-bit coeficiente de transformada durante a quantificação, em que n é maior do que m.
[0055] Codificador de vídeo 20 pode associar cada CU com um parâmetro de valor de quantização (QP). O valor QP associado a uma CU pode determinar como codificador de vídeo 20 quantifica blocos de coeficiente de transformada associados à CU. Codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente de transformada associados com uma CU, ajustando o valor QP associado com a CU.
[0056] Após o codificador de vídeo 20 quantificar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode varrer coeficientes de transformada quantificados para produzir um vetor unidimensional de níveis de coeficiente de transformada. Codificador de vídeo 20 pode codificar por entropia o vetor unidimensional. Codificador de vídeo 20 pode codificar por entropia também outros elementos de sintaxe associados com os dados de vídeo.
[0057] O fluxo de bits gerado pelo codificador de vídeo 20 pode incluir uma série de unidades de Camada de Abstração de Rede (NAL). Cada uma das unidades de NAL pode ser uma estrutura de sintaxe contendo uma indicação de um tipo de dados na unidade de NAL e bytes que contêm os dados. Por exemplo, uma unidade de LNA pode conter dados que representam um conjunto de parâmetros de sequência, um conjunto de parâmetro de imagem, uma fatia codificada, informações de aprimoramento suplementares (SEI), um delimitador de unidade de acesso, dados de preenchimento, ou outro tipo de dados. Os dados de uma unidade de LNA podem incluir estruturas de sintaxe codificadas por entropia, como por exemplo, blocos de coeficiente de transformada codificados por entropia, informação de movimento, e assim por diante.
[0058] O decodificador de vídeo 30 pode receber o fluxo de bits gerado pelo codificador de vídeo 20. O fluxo de bits pode incluir uma representação codificada dos dados de vídeo codificados pelo codificador de vídeo 20. Quando o decodificador de vídeo 30 recebe o fluxo de bits, o decodificador de vídeo 30 pode executar uma operação de análise no fluxo de bits. Quando o decodificador de vídeo 30 executa a operação de análise, o decodificador de vídeo 30 pode extrair elementos de sintaxe no fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo para reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser geralmente recíproco ao processo realizado pelo codificador de vídeo 20 para gerar os elementos de sintaxe.
[0059] Depois de decodificador de vídeo 30 extrair os elementos de sintaxe associados com uma CU, o decodificador de vídeo 30 pode gerar blocos de vídeo preditos para a PU da CU com base nos elementos de sintaxe. Além disso, o decodificador de vídeo 30 pode quantizar inversamente os blocos de coeficiente de transformada associados às TUs da CU. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficiente de transformada para reconstruir blocos de vídeo residuais associados à TUs da CU. Depois de gerar os blocos de vídeo preditos e reconstruir os blocos de vídeo residuais, o decodificador de vídeo 30 pode reconstruir o bloco de vídeo da CU com base nos blocos de vídeo preditos e nos blocos de vídeo residuais. Desta maneira, o decodificador de vídeo 30 pode determinar os blocos de vídeo da UC com base nos elementos de sintaxe no fluxo de bits.
[0060] Depois de reconstruir o bloco de vídeo de uma CU, o decodificador de vídeo 30 pode realizar uma operação de desbloqueio para reduzir artefatos de bloqueio associados com a CU. Para realizar esta operação de desbloqueio, o decodificador de vídeo 30 pode identificar bordas de TU e bordas de PU associadas com a CU. As bordas de TU podem corresponder a segmentos ou bordas completas dos blocos de vídeo residuais associados às TUs da CU. As bordas de PU podem corresponder a segmentos ou bordas completas dos blocos de vídeo preditos associados com a PU da CU. Os artefatos de bloqueio associados a CU tendem a ocorrer nas bordas de TU e o bordas de PU associadas com a CU.
[0061] Depois de identificar as bordas de TU e PU, o decodificador de vídeo 30 pode associar valores de intensidade limítrofe com as bordas de TU e PU. Conforme descrito abaixo, o decodificador de vídeo 30 pode utilizar os valores de intensidade limítrofe associados às bordas de TU e PU para determinar se e como aplicar filtros de desbloqueio a amostras associadas com as bordas de TU e PU.
[0062] De acordo com as técnicas desta divulgação, o decodificador de vídeo 30 pode associar um primeiro valor de intensidade limítrofe com uma borda em resposta à determinação de que um primeiro bloco de vídeo ou um segundo bloco de vídeo está associado com uma CU intrapredita. A borda pode ser uma borda TU ou borda PU que ocorre na fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo. O decodificador de vídeo 30 pode associar-se a um segundo valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que uma ou mais condições adicionais são satisfeitas. O decodificador de vídeo 30 pode associar-se a um terceiro valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intrapredita e que as uma ou mais condições adicionais não são satisfeitas. O decodificador de vídeo 30 pode aplicar um ou mais filtros de desbloqueio às amostras associadas com a borda quando a borda está associada com o primeiro valor de intensidade limítrofe ou o segundo valor de intensidade limítrofe, mas não o terceiro valor de intensidade limítrofe.
[0063] Codificador de vídeo 20 pode realizar uma operação de desbloqueio semelhante para reduzir artefatos de bloqueio em blocos de vídeo reconstruídos associados com a CU antes de armazenar os blocos de vídeo reconstruídos em um armazenador (buffer) de imagem decodificado. Assim, um "codificador de vídeo" (ou seja, um codificador de vídeo ou um decodificador de vídeo) pode executar a operação de desbloqueio acima descrita.
[0064] A figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20, que é configurado para implementar as técnicas desta divulgação. A figura 2 é provida para fins de explicação e não deve ser considerada como limitativa das técnicas como amplamente exemplificadas e descritas nesta divulgação. Para efeitos da explicação, esta divulgação descreve o codificador de vídeo 20, no contexto da codificação HEVC. No entanto, as técnicas da presente divulgação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0065] No exemplo da figura 2, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais de codificador de vídeo 20 incluem um módulo de predição 100, um módulo de geração de resíduo 102, um módulo de transformada 104, um módulo de quantificação 106, um módulo de quantificação inversa 108, um módulo de transformada inversa 110, um módulo de reconstrução 112, um módulo de filtro 113, um armazenador de imagem decodificada 114, e um módulo de codificação de entropia 116. O módulo de predição 100 inclui um módulo de estimação de movimento 122, um módulo de compensação de movimento 124, e um módulo de intrapredição 126. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos, ou diferentes componentes funcionais. Além disso, o módulo de estimação de movimento 122 e o módulo de compensação de movimento 124 podem ser altamente integrados, mas são representados no exemplo da figura 2 separadamente, para fins de explicação.
[0066] Codificador de vídeo 20 pode receber dados de vídeo. Codificador de vídeo 20 pode receber os dados de vídeo a partir de várias fontes. Por exemplo, o codificador de vídeo 20 pode receber os dados de vídeo a partir de fonte de vídeo 18 (figura 1) ou uma outra fonte. Os dados de vídeo podem representar uma série de imagens. Para codificar os dados de vídeo, o codificador de vídeo 20 pode realizar uma operação de codificação em cada uma das imagens. Como parte de executar a operação de codificação em uma imagem, o codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Como parte da realização de uma operação de codificação em uma fatia, o codificador de vídeo 20 pode executar operações de codificação em blocos em árvore na fatia.
[0067] Como parte da realização de uma operação de codificação em um bloco em árvore, módulo de predição 100 pode executar o particionamento quadtree no bloco de vídeo do bloco em árvore dividindo no bloco de blocos de vídeo de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado com uma CU diferente. Por exemplo, o módulo de predição 100 pode particionar um bloco de vídeo de um bloco em árvore em quatro sub-blocos de tamanho igual, particionar um ou mais dos sub-blocos em quatro sub-sub- blocos de tamanho igual, e assim por diante.
[0068] Os tamanhos dos blocos de vídeo associados com a CU podem variar de 8x8 amostras até o tamanho do bloco em árvore com um máximo de 64x64 amostras ou maior. Nesta divulgação, "NxN" e "N por N" podem ser utilizados indiferentemente para designar as dimensões de amostra de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, 16x16 amostras ou 16 por 16 amostras. Em geral, um bloco de vídeo de 16x16 tem dezesseis amostras em uma direção vertical (Y = 16) e dezesseis amostras na direção horizontal (x = 16). Da mesma forma, um bloco NxN geralmente tem N amostras em uma direção vertical e N amostras em uma direção horizontal, onde N representa um valor inteiro não negativo.
[0069] Além disso, como parte de realizar a operação de codificação em um bloco em árvore, módulo de predição 100 pode gerar uma estrutura de dados quadtree hierárquica para o bloco em árvore. Por exemplo, um bloco em árvore pode corresponder a um nó de raiz da estrutura de dados quadtree. Se o módulo de predição 100 divide o bloco de vídeo do bloco em árvore em quatro sub-blocos, o nó raiz tem quatro nós filhos na estrutura de dados quadtree. Cada um dos nós filhos corresponde a uma CU associada com um dos sub-blocos. Se o módulo de predição 100 divide um dos sub- blocos em quatro sub-sub-blocos, o nó correspondente a CU associada com o sub-bloco pode ter quatro nós filhos, cada um dos quais corresponde a uma CU associada com um dos sub- sub-blocos.
[0070] Cada nó da estrutura de dados quadtree pode conter dados de sintaxe (por exemplo, os elementos de sintaxe) para o bloco em árvore ou CU correspondente. Por exemplo, um nó no quadtree pode incluir um flag de divisão que indica que o bloco de vídeo da CU correspondente ao nó é dividido (isto é, dividido) em quatro sub-blocos. Elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender de se o bloco de vídeo da CU é dividido em sub-blocos. A CU cujo bloco de vídeo não está particionado pode corresponder a um nó folha na estrutura de dados quadtree. Um bloco em árvore codificado pode incluir dados com base na estrutura de dados quadtree para um bloco em árvore correspondente.
[0071] Codificador de vídeo 20 pode realizar operações de codificação em cada CU não particionada de um bloco em árvore. Quando codificador de vídeo 20 realiza uma operação de codificação em uma CU não particionada, codificador de vídeo 20 gera dados que representam uma representação codificada da CU não particionada.
[0072] Como parte de realizar uma operação de codificação em uma CU, módulo de predição 100 pode dividir o bloco de vídeo da CU entre uma ou mais PUs da CU. O Codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar vários tamanhos de PU. Assumindo que o tamanho de uma dada CU seja 2Nx2N, codificador de vídeo 20 e decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN para a intrapredição e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, ou similar para a interpredição. Codificador de vídeo 20 e decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para interpredição. Em alguns exemplos, módulo de predição 100 pode executar o particionamento geométrico para particionar o bloco de vídeo de uma CU entre PUs da CU ao longo de uma fronteira que não atende os lados do bloco de vídeo da CU em ângulos retos.
[0073] O módulo de estimação de movimento 122 e módulo de compensação de movimento 124 podem realizar interpredição em cada PU da CU. Interpredição pode prover compressão temporal. Ao realizar interpredição em uma PU, o módulo de estimação de movimento 122 e o módulo de compensação de movimento 124 podem gerar dados de predição para a PU com base em amostras decodificadas de imagens de referência diferentes da imagem associada a CU. Os dados de predição para a PU podem incluir um bloco de vídeo predito e vários elementos de sintaxe.
[0074] Além disso, quando o módulo de estimação de movimento 122 executa uma operação de estimação de movimento em relação a uma PU, módulo de estimação de movimento 122 pode gerar um ou mais vetores de movimento para a PU. Por exemplo, fatias podem ser intrafatias (ou seja, fatias I), fatias preditas (ou seja, fatias P), ou fatias bipreditas (isto é, fatias B). Módulo de estimação de movimento 122 e o módulo de compensação de movimento 124 podem realizar diferentes operações de PU de uma CU dependendo de se a PU é uma fatia I, uma fatia P, ou uma fatia B. Em uma fatia I, todas as PUs são intrapreditas. Assim, se a PU está em uma fatia I, o módulo de estimação de movimento 122 e módulo de compensação de movimento 124 não realizam interpredição sobre a PU.
[0075] Se a PU está em uma fatia P, a imagem que contém a PU é associada a uma lista de imagens de referência referidas como “lista 0”. Cada uma das imagens de referência na lista 0 contém exemplos que podem ser utilizados para a interpredição de imagens subsequentes em ordem de decodificação. Quando o módulo de estimação de movimento 122 executa a operação de estimação de movimento em relação a uma PU em uma fatia P, o módulo de estimação de movimento 122 pode buscar as imagens de referência na lista 0 para uma amostra de referência para a PU. A amostra de referência da PU pode ser um conjunto de amostras, por exemplo, um bloco de amostras, que mais se aproxima das amostras no bloco de vídeo da PU. Módulo de estimação de movimento 122 pode utilizar uma variedade de indicadores para determinar a proximidade de um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, o módulo de estimação de movimento 122 pode determinar quão perto um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU por soma de diferença absoluta (SAD), soma de diferença quadrada (SSD), ou outra métrica de diferença.
[0076] Após a identificação de uma amostra de referência de uma PU em uma fatia P, módulo de estimação de movimento 122 pode gerar um índice de referência que indica a imagem de referência na lista 0 contendo a amostra de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e a amostra de referência. Em vários exemplos, o módulo de estimação de movimento 122 pode gerar vetores de movimento em diferentes graus de precisão. Por exemplo, o módulo de estimação de movimento 122 pode gerar vetores de movimento em precisão de amostra de um quarto, precisão da amostra de um oitavo, ou outra precisão de amostra fracionada. No caso de precisão de amostra fracionada, os valores de amostra de referência podem ser interpolados a partir de valores de amostra de posição de inteiro na imagem de referência. Módulo de estimação de movimento 122 pode emitir informações de movimento para a PU para o módulo de codificação de entropia 116 e o módulo de compensação de movimento 124. As informações de movimento para a PU podem incluir o índice de referência e o vetor de movimento da PU. Módulo de compensação de movimento 124 pode utilizar as informações de movimento de uma PU para identificar e recuperar a amostra de referência da PU.
[0077] Se a PU é uma fatia B, a imagem que contém a PU pode ser associada com duas listas de imagens de referência, referidas como "lista 0" e "lista 1". Cada uma das imagens de referência na lista 0 contém exemplos que podem ser utilizados para a interpredição de imagens subsequentes em ordem de decodificação. As imagens de referência na lista 1 ocorrem antes da imagem na ordem de decodificação, mas depois da imagem em ordem de apresentação. Em alguns exemplos, uma imagem que contém uma fatia B pode ser associada com uma lista de combinação que é uma combinação da lista 0 e lista 1.
[0078] Além disso, se a PU está em uma fatia B, o módulo de estimação de movimento 122 pode executar predição unidirecional ou predição bidirecional para a PU. Quando o módulo de estimação de movimento 122 realiza predição unidirecional para a PU, o módulo de estimação de movimento 122 pode buscar as imagens de referência da lista 0 ou lista 1 para uma amostra de referência para a PU. Módulo de estimação de movimento 122 pode, então, gerar um índice de referência que indica a imagem de referência na lista 0 ou lista 1 que contém a amostra de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e a amostra de referência. Módulo de estimação de movimento 122 pode emitir elementos de sintaxe que indicam a informação de movimento para a PU para o módulo de codificação de entropia 116 e módulo de compensação de movimento 124. As informações de movimento para a PU podem incluir o índice de referência, um indicador de direção de predição, e o vetor de movimento da PU. O indicador de direção de predição pode indicar se o índice de referência indica uma imagem de referência na lista 0 ou lista 1. Módulo de compensação de movimento 124 pode utilizar as informações de movimento da PU para identificar e recuperar a amostra de referência da PU.
[0079] Quando o módulo de estimação de movimento 122 realiza predição bidirecional para uma PU, o módulo de estimação de movimento 122 pode buscar as imagens de referência na lista 0 para uma amostra de referência para a PU e também pode buscar as imagens de referência na lista 1 para outra amostra de referência para a PU. Módulo de estimação de movimento 122 pode, então, gerar índices de referência que indicam as imagens de referência na lista 0 e lista 1, que contêm as amostras de referência e vetores de movimento que indicam deslocamentos espaciais entre as amostras de referência e a PU. Módulo de estimação de movimento 122 pode emitir elementos de sintaxe que indicam a informação de movimento da PU para o módulo de codificação de entropia 116 e o módulo de compensação de movimento 124. A informação de movimento para a PU pode incluir os índices de referência e os vetores de movimento da PU. Módulo de compensação de movimento 124 pode utilizar as informações de movimento para identificar e recuperar a amostra de referência da PU.
[0080] Em alguns casos, o módulo de estimação de movimento 122 não emite um conjunto completo de informações de movimento para uma PU para o módulo de codificação de entropia 116. Pelo contrário, o módulo de estimação de movimento 122 pode sinalizar a informação de movimento de uma PU com referência à informação de movimento de outra PU. Por exemplo, o módulo de estimação de movimento 122 pode determinar que a informação de movimento da PU é suficientemente semelhante às informações de movimento de uma PU vizinha. Neste exemplo, o módulo de estimação de movimento 122 pode indicar, em um nó quadtree para uma CU associada à PU, um valor que indica para o decodificador de vídeo 30 que a PU tem a mesma informação de movimento que a PU vizinha. Em outro exemplo, o módulo de estimação de movimento 122 pode identificar, em um nó quadtree associado com a CU associada com a PU, uma PU vizinha e uma diferença de vetor de movimento (MVD). A diferença de vetor de movimento indica uma diferença entre o vetor de movimento da PU e o vetor de movimento da PU vizinha indicada. O decodificador de vídeo 30 pode utilizar o vetor de movimento da PU vizinha indicada e a diferença de vetor de movimento para predizer o vetor de movimento da PU. Referindo-se a informação de movimento de uma primeira PU ao sinalizar a informação de movimento de uma segunda PU, o codificador de vídeo 20 pode ser capaz de sinalizar a informação de movimento da segunda PU utilizando menos bits.
[0081] Como parte da realização de uma operação de codificação em uma CU, módulo de intrapredição 126 pode executar intrapredição em PUs da CU. Intrapredição pode prover compressão espacial. Quando o módulo de intrapredição 126 realiza intrapredição em uma PU, módulo de intrapredição 126 pode gerar dados de predição para a PU com base em amostras decodificadas de outras PUs na mesma imagem. Os dados de predição para a PU podem incluir um bloco de vídeo predito e vários elementos de sintaxe. Módulo de intrapredição 126 pode executar intrapredição em PUs em fatias I, fatias P, e fatias B.
[0082] Para executar intrapredição em uma PU, módulo de intrapredição 126 pode usar vários modos de intrapredição para gerar vários conjuntos de dados de predição para a PU. Quando o módulo de intrapredição 126 utiliza um modo de intrapredição para gerar um conjunto de dados de predição para a PU, módulo de intrapredição 126 pode estender amostras dos blocos de vídeo de PUs vizinhas através do bloco de vídeo da PU numa direção e/ou gradiente associado o modo de intrapredição. A PU vizinha pode estar acima, acima e à direita, acima e à esquerda, à esquerda da PU, assumindo uma ordem de codificação da esquerda para a direita, de cima para baixo para PUs, CUs e blocos em árvore. Módulo de intrapredição 126 pode usar vários números de modos de intrapredição, por exemplo, 33 modos de intrapredição direcional, dependendo do tamanho da PU.
[0083] Módulo de predição 100 pode selecionar os dados de predição para uma PU entre os dados de predição gerados pelo módulo de compensação de movimento 124 para a PU ou os dados de predição gerados pelo módulo de intrapredição 126 para a PU. Em alguns exemplos, módulo de predição 100 seleciona os dados de predição para a PU com base em métricas de taxa / distorção dos conjuntos de dados de predição.
[0084] Se o módulo de predição 100 seleciona os dados de predição gerados pelo módulo de intrapredição 126, módulo de predição 100 pode sinalizar o modo de intrapredição que foi utilizado para gerar os dados de predição para a PU, ou seja, o modo de intrapredição selecionado.Módulo de predição 100 pode sinalizar o modo de intrapredição selecionado de várias maneiras. Por exemplo, é provável que o modo de intrapredição selecionado seja o mesmo que o modo de intrapredição de uma PU vizinha. Em outras palavras, o modo de intrapredição da PU vizinha pode ser o modo mais provável para a PU atual. Assim, o módulo de predição 100 pode gerar um elemento de sintaxe para indicar que o modo de intrapredição selecionado é o mesmo que o modo de intrapredição da PU vizinha.
[0085] Depois de módulo de predição 100 seleciona os dados de predição para PUs de CU, módulo de geração residual 102 pode gerar dados residuais para a CU subtraindo os blocos de vídeo preditos das PUs da CU do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir blocos de vídeo 2D residuais que correspondem a diferentes componentes de amostra das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que corresponde à diferença entre as componentes de luminância de amostras em blocos de vídeo preditos das PUs da CU e as componentes de luminância de amostras no bloco de vídeo original da CU. Além disso, os dados residuais da CU podem incluir blocos de vídeo residuais que correspondem às diferenças entre as componentes de crominância de amostras em blocos de vídeo preditos da PU da CU e as componentes de crominância das amostras no bloco de vídeo original da CU.
[0086] Módulo de predição 100 pode executar o particionamento quadtree para particionar os blocos de vídeo residuais de uma CU em sub-blocos. Cada bloco de vídeo residual não dividido pode ser associado com uma TU diferente da CU. Os tamanhos e posições dos blocos de vídeo residuais associados a TUs de uma CU podem ou não podem ser baseados nos tamanhos e posições dos blocos de vídeo associados com a PU da CU. Uma estrutura quadtree conhecida como uma "quadtree residual" (RQT) pode incluir os nós associados com cada um dos blocos de vídeo residuais. As TUs de uma CU podem corresponder a nós folha da RQT.
[0087] O módulo de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU, aplicando uma ou mais transformadas para um bloco de vídeo residual associado à TU. Cada um dos blocos de coeficiente de transformada pode ser uma matriz 2D de coeficientes de transformada. O módulo de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, módulo de transformada 104 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional ou transformada conceitualmente similar a do bloco de vídeo residual associado a uma TU.
[0088] Depois do módulo de transformada 104 gerar um bloco de coeficiente de transformada associado a uma TU, módulo de quantização 106 pode quantificar os coeficientes de transformada no bloco de coeficiente de transformada. Módulo de quantificação 106 pode quantizar um bloco de coeficiente de transformada associado com uma TU de uma CU com base em um valor QP associado com a CU.
[0089] Codificador de vídeo 20 pode associar um valor QP com uma CU de várias maneiras. Por exemplo, o codificador de vídeo 20 pode realizar uma análise da taxa de distorção em um bloco em árvore associado a CU. Na análise das taxas de distorção, o codificador de vídeo 20 pode gerar múltiplas representações codificadas do bloco em árvore realizando uma operação de codificação várias vezes no bloco em árvore. Codificador de vídeo 20 pode associar diferentes valores de QP com a CU quando codificador de vídeo 20 gera diferentes representações codificadas do bloco em árvore. Codificador de vídeo 20 pode sinalizar que um determinado valor QP está associado com a CU quando o valor QP dado está associado com a CU em uma representação codificada do bloco em árvore que tem uma menor taxa de bits e métrica de distorção.
[0090] O módulo de quantização inversa 108 e módulo de transformada inversa 110 pode aplicar quantização inversa e transforma inversa ao bloco de coeficiente de transformada, respectivamente, para reconstruir um bloco de vídeo residual a partir do bloco de coeficiente de transformada. Módulo de reconstrução 112 pode adicionar o bloco de vídeo residual reconstruído a partir de amostras correspondentes de um ou mais blocos de vídeo preditos gerados pelo módulo de predição 100 para produzir um bloco de vídeo reconstruído associado com uma TU. Ao reconstruir blocos de vídeo para cada TU de uma CU, desta forma, o codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[0091] Depois de módulo de reconstrução 112 reconstruir o bloco de vídeo de uma CU, módulo de filtro 113 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio do bloco de vídeo associado com a CU. Módulo de filtração 113 pode executar várias operações de desbloqueio. Por exemplo, o módulo de filtro 113 pode executar a operação de desbloqueio exemplar ilustrada na figura 4. Em outros exemplos, o módulo de filtro 113 pode executar operações de desbloqueio que são diferentes da operação de desbloqueio exemplar ilustrada na figura 4.
[0092] Após a realização de uma ou mais operações de desbloqueio, o módulo de filtro 113 pode armazenar o bloco de vídeo reconstruído da CU no armazenador de imagem decodificada 114. Módulo de estimação de movimento 122 e o módulo de compensação de movimento 124 podem utilizar uma imagem de referência, que contém o bloco de vídeo reconstruído realizando interpredição nas Pus de imagens subsequentes. Além disso, o módulo de intrapredição 126 pode usar blocos de vídeo reconstruídos no armazenador de imagem decodificada 114 para realizar a intrapredição em outras PUs na mesma imagem, como a CU.
[0093] Desta forma, depois do módulo de filtro 113 aplicar um filtro de desbloqueio nas amostras associadas com uma borda, o módulo de predição 100 pode gerar um bloco de vídeo predito com base, pelo menos em parte, nas amostras associadas com a borda. Codificador de vídeo 20 pode emitir um fluxo de bits que inclui um ou mais elementos de sintaxe, cujos valores são baseados, pelo menos em parte no bloco de vídeo predito.
[0094] O módulo de codificação de entropia 116 pode receber os dados dos outros componentes funcionais do codificador de vídeo 20. Por exemplo, o módulo de codificação de entropia 116 pode receber os blocos de coeficiente de transformada a partir do módulo de quantificação 106 e pode receber os elementos de sintaxe de módulo de predição 100. O módulo de codificação de entropia 116 recebe os dados, o módulo de codificação de entropia 116 pode executar uma ou mais operações de codificação de entropia para gerar dados codificados por entropia. Por exemplo, o codificador de vídeo 20 pode realizar uma operação de codificação de comprimento variável adaptativa de contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), uma operação de codificação de Entropia de Particionamento de Intervalo de Probabilidade (PIPE), ou outro tipo de operação de codificação de entropia nos dados. Módulo de codificação de entropia 116 pode gerar um fluxo de bits que inclui os dados codificados por entropia.
[0095] Como parte da realização de uma operação de codificação de entropia dos dados, módulo de codificação de entropia 116 pode selecionar um modelo de contexto. Se o módulo de codificação de entropia 116 está executando uma operação CABAC, o modelo de contexto pode indicar as estimativas de probabilidades de feixes específicos com valores particulares. No contexto CABAC, o termo "feixe" é utilizado para se referir a um bit de uma versão binarizada de um elemento de sintaxe.
[0096] Se o módulo de codificação de entropia 116 está executando uma operação CAVLC, o modelo de contexto pode mapear coeficientes de palavras código correspondentes. Palavras código em CAVLC podem ser construídas de tal modo que os códigos relativamente curtos correspondem a mais símbolos prováveis, enquanto códigos relativamente longos correspondem a símbolos menos prováveis. A seleção de um modelo de contexto apropriado pode afetar a eficiência de codificação da operação de codificação de entropia.
[0097] A figura 3 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30 que pode implementar as técnicas desta divulgação. A figura 3 é proporcionada para fins de explicação e não é limitativa das técnicas como amplamente exemplificadas e descritas nesta divulgação. Para efeitos da explicação, esta divulgação descreve decodificador de vídeo 30, no contexto da codificação HEVC. No entanto, as técnicas da presente divulgação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0098] No exemplo da figura 3, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem um módulo de decodificação de entropia 150, um módulo de predição 152, um módulo de quantificação inversa 154, um módulo de transformada inversa 156, um módulo de reconstrução 158, um módulo de filtro 159, e um armazenador de imagem decodificada 160. O módulo de predição 152 inclui um módulo de compensação de movimento 162, e um módulo de intrapredição 164. Em alguns exemplos, o decodificador de vídeo 30 pode realizar uma passagem de decodificação geralmente recíproca para a passagem de codificação descrita em relação ao codificador de vídeo 20 da figura 2. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou diferentes componentes funcionais.
[0099] O decodificador de vídeo 30 pode receber um fluxo contínuo de dados que compreende dados de vídeo codificados. O fluxo contínuo de dados pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 recebe o fluxo de bits, módulo de decodificação de entropia 150 pode executar uma operação de análise sobre o fluxo de bits. Como resultado de realizar a operação de análise de fluxo de bits, o módulo de decodificação de entropia 150 pode extrair os elementos de sintaxe no fluxo de bits. Como parte de realizar a operação de análise, módulo de decodificação de entropia 150 pode decodificar por entropia elementos de sintaxe codificados por entropia no fluxo de bits. Módulo de predição 152, módulo de quantificação inversa 154, módulo de transformada inversa 156, o módulo de reconstrução 158, e módulo de filtro 159 podem executar uma operação de reconstrução, que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0100] Como discutido acima, o fluxo de bits pode compreender uma série de unidades de NAL. As unidades de NAL do fluxo de bits podem incluir unidades de NAL definidas por parâmetros de sequência, unidades de NAL definidas por parâmetros de imagem, unidades SEI NAL, e assim por diante. Como parte de realizar a operação de análise no fluxo de bits, o módulo de decodificação de entropia 150 pode executar operações de análise que extraem e decodificação por entropia conjuntos de parâmetros de sequência das unidades de NAL definidas pelo parâmetro de sequência, conjuntos de parâmetros de imagem das unidades de NAL definidas pelo parâmetro de imagem, dados SEI de unidades SEI NAL, e assim por diante.
[0101] Além disso, as unidades de NAL do fluxo de bits podem incluir unidades NAL de fatia codificada. Como parte de realizar a operação de análise no fluxo de bits, o módulo de decodificação de entropia 150 pode executar operações de análise que extraem e decodificam por entropia fatias codificadas das unidades de NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatias. O cabeçalho da fatia pode conter elementos de sintaxe que pertencem a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um conjunto de parâmetros de imagem associada a uma imagem que contém a fatia. Módulo de decodificação de entropia 150 pode executar uma operação de decodificação de entropia, tal como uma operação de decodificação CAVLC, no cabeçalho da fatia codificada para recuperar o cabeçalho de fatia.
[0102] Depois de extrair os dados de fatia de unidades NAL de fatia codificada, módulo de decodificação de entropia 150 pode extrair blocos em árvore codificados a partir dos dados da fatia. Módulo de decodificação de entropia 150 pode, então, extrair CUs codificadas dos blocos em árvore codificados. Módulo de decodificação de entropia 150 pode executar operações de análise que extraem elementos de sintaxe de Cus codificadas. Os elementos de sintaxe extraídos podem incluir blocos de coeficiente de transformada codificados por entropia. Módulo de decodificação de entropia 150 pode, em seguida, executar operações de decodificação de entropia dos elementos de sintaxe. Por exemplo, o módulo de decodificação de entropia 150 pode executar operações CABAC nos blocos de coeficiente de transformada.
[0103] Depois de módulo de decodificação de entropia 150 realizar uma operação de análise em uma CU não particionada, decodificador de vídeo 30 pode realizar uma operação de reconstrução na CU não particionada. Para executar a operação de reconstrução em uma CU não particionada, decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada UT da CU, decodificador de vídeo 30 pode reconstruir um bloco de vídeo residual associado com a CU.
[0104] Como parte de realizar uma operação de reconstrução em uma TU, módulo de quantização inversa 154 pode quantizar inversamente, ou seja, dequantização, um bloco de coeficiente de transformada associado à TU. Módulo de quantificação inversa 154 pode quantificar inversamente o coeficiente de bloco de transformada de um modo semelhante aos processos de quantização inversa propostos para HEVC ou definidos pelo padrão de codificação ITU-T H.264. Módulo de quantificação inversa 154 pode usar um parâmetro de quantificação QP calculado pelo codificador de vídeo 20, para uma CU do bloco de coeficiente de transformada para determinar um grau de quantificação e, do mesmo modo, um grau de quantificação inversa para o módulo de quantificação inversa 154 para aplicar.
[0105] Após o módulo de quantificação inversa 154 quantificar inversamente o bloco de coeficiente de transformada, módulo de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associada com o bloco de coeficiente de transformada. Módulo de transformada inversa 156 pode aplicar uma transformada inversa ao bloco de coeficiente de transformada, a fim de gerar o bloco de vídeo residual para a TU. Por exemplo, módulo de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada inversa de inteiro, transformada inversa de Karhunen-Loeve (KLT), uma transformada inversa de rotação, transformada inversa direcional ou outra transformar inversa ao bloco de coeficiente de transformada.
[0106] Em alguns exemplos, o módulo de transformada inversa 156 pode determinar uma transformação inversa para aplicar o bloco de coeficientes de transformada com base na sinalização a partir do codificador de vídeo 20. Nesses exemplos, módulo de transformada inversa 156 pode determinar a transformada inversa com base em uma transformar sinalizada no nó raiz de um quadtree para um bloco em árvore associado com o bloco de coeficiente de transformada. Em outros exemplos, módulo de transformada inversa 156 pode inferir a transformada inversa a partir de uma ou mais características de codificação, tais como o tamanho do bloco, o modo de codificação, ou semelhantes. Em alguns exemplos, módulo de transformada inversa 156 pode aplicar uma transformada inversa em cascata.
[0107] Se uma PU da CU foi codificada utilizando interpredição, módulo de compensação de movimento 162 pode gerar uma lista de candidatos para a PU. O fluxo de bits pode incluir dados que identificam a posição de um candidato selecionado na lista de candidatos da PU. Depois de gerar a lista de candidatos para a PU, módulo de compensação de movimento 162 pode gerar um bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência indicados pela informação de movimento da PU. Os blocos de referência da PU podem ser em diferentes imagens temporais da PU. Módulo de compensação de movimento 162 pode determinar a informação de movimento da PU com base em informações de movimento indicadas pelo candidato selecionado na lista de candidatos da PU.
[0108] Em alguns exemplos, o módulo de compensação de movimento 162 pode refinar o bloco de vídeo preditivo de uma PU realizando interpolação com base em filtros de interpolação. Identificadores para filtros de interpolação a ser utilizados para a compensação de movimento com precisão de subamostra podem ser integrados nos elementos de sintaxe. Módulo de compensação de movimento 162 pode usar os mesmos filtros de interpolação utilizados pelo codificador de vídeo 20 durante a geração do bloco de vídeo preditivo da PU para calcular os valores interpolados para as amostras de subinteiros de um bloco de referência. Módulo de compensação de movimento 162 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 de acordo com informações de sintaxe recebidas e usar os filtros de interpolação para produzir o bloco de vídeo predito.
[0109] Se uma PU é codificada utilizando intrapredição, módulo de intrapredição 164 pode realizar intrapredição para gerar um bloco de vídeo preditivo para a PU. Por exemplo, o módulo de intrapredição 164 pode determinar um modo de intrapredição para a PU com base em elementos de sintaxe no fluxo de bits. O fluxo de bits pode incluir elementos de sintaxe que módulo de intrapredição 164 pode usar para determinar o modo de intrapredição da PU.
[0110] Em alguns casos, os elementos de sintaxe podem indicar que o módulo de intrapredição 164 deve usar o modo de intrapredição de outra PU para determinar o modo de intrapredição da PU atual. Por exemplo, pode ser provável que o modo de intrapredição da PU atual seja o mesmo que o modo de intrapredição de uma PU vizinha. Em outras palavras, o modo de intrapredição da PU vizinha pode ser o modo mais provável para a PU atual. Assim, neste exemplo, o fluxo de bits pode incluir um elemento de sintaxe pequeno que indica que o modo de intrapredição da PU é o mesmo que o modo de intrapredição da PU vizinha. Módulo de intrapredição 164 pode, então, usar o modo de intrapredição para gerar dados de predição (por exemplo, amostras de predição) para a PU, com base nos blocos de vídeo de PUs espacialmente vizinhas.
[0111] Módulo de reconstrução 158 pode usar os blocos de vídeo residuais associados às TUs de uma CU e os blocos de vídeo preditivos da PU da CU, ou seja, qualquer um dos dados de intrapredição ou dados de interpredição, conforme o caso, para reconstruir o bloco de vídeo da CU. Assim, o decodificador de vídeo 30 pode gerar um bloco de vídeo preditivo e um bloco de vídeo residual com base em elementos de sintaxe do fluxo de bits e pode gerar um bloco de vídeo baseado no bloco de vídeo preditivo e no bloco de vídeo residual.
[0112] Depois de módulo de reconstrução 158 reconstruir o bloco de vídeo da CU, módulo de filtro 159 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio associados com a CU. Módulo de filtração 159 pode executar várias operações de desbloqueio para reduzir artefatos de bloqueio associados com a CU. Por exemplo, o módulo de filtro 159 pode executar a operação de desbloqueio exemplar ilustrada na figura 4. Em outros exemplos, o módulo de filtro 159 pode executar operações de desbloqueio que são diferentes da operação de desbloqueio representada na figura 4.
[0113] O armazenador de imagem decodificada 160 pode armazenar amostras decodificadas para imagens dos dados de vídeo. Assim, depois de módulo de filtro 159 realizar uma operação de desbloqueio para reduzir artefatos de bloqueio associados com a CU, o decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU no armazenador de imagem decodificada 160. O armazenador de imagem decodificada 160 pode prover um imagem de referência para compensação de movimento subsequente, intrapredição e apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da figura 1. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos de vídeo decodificados no armazenador de imagem 160, operações de intrapredição ou interpredição na PU de outra CU.
[0114] A figura 4 é um fluxograma que ilustra uma operação exemplar 200 para reduzir os artefatos de bloqueio associados a uma CU. Um codificador de vídeo, como codificador de vídeo 20 ou um decodificador de vídeo 30, pode executar a operação 200. Em outros exemplos, o codificador de vídeo pode usar outras operações diferentes da operação 200 para reduzir artefatos de bloqueio associados com a CU. Por exemplo, em outros exemplos, o codificador de vídeo pode executar uma operação para reduzir os artefatos de bloqueio na qual o codificador de vídeo realiza mais, menos ou diferentes etapas da operação 200. Em outros exemplos, o codificador de vídeo pode executar as etapas de operação 200 em diferentes ordens ou em paralelo.
[0115] Após o codificador de vídeo começar a operação 200, o codificador de vídeo pode identificar bordas de TU associadas a uma CU atual (202). A CU atual é uma CU que o codificador de vídeo está atualmente codificando (ou seja, codificação ou decodificação). Para facilidade de explicação, esta divulgação pode referir-se ao bloco de vídeo associado com a CU atual como o bloco de vídeo de CU atual. As bordas associadas com o bloco de vídeo de CU atual podem corresponder às bordas de PUs e TUs da CU atual. Além disso, as bordas associadas com o bloco de vídeo de CU atual podem ser as bordas de luma e bordas de croma. Uma borda de luminância pode ser uma borda em uma fronteira entre blocos de amostras de luminância. Uma borda de croma pode ser uma borda em uma fronteira entre blocos de amostras de croma. O codificador de vídeo pode identificar as bordas de TU com base em dados de um quadtree residual da CU atual.
[0116] Além disso, o codificador de vídeo pode identificar bordas de PU associadas com a CU atual (204). O codificador de vídeo pode identificar as bordas de PU, de várias maneiras. Por exemplo, o codificador de vídeo pode identificar bordas de PU com base em um modo de particionamento de PU da CU atual e um flag de bordas internas de filtro associado com a CU atual. O flag de bordas internas de filtro pode indicar se o desbloqueio é habilitado para bordas internas da CU atual. As bordas internas da CU atual são bordas que não ocorrem em uma fronteira entre o bloco de vídeo da CU atual e um bloco de vídeo de uma CU vizinha.
[0117] Após a identificação das bordas de TU e bordas de PU (ou seja, as bordas) associadas com a CU atual, o codificador de vídeo pode associar os valores de intensidade limítrofe com as bordas de luminância (206). O codificador de vídeo pode associar os valores de intensidade limítrofe com as bordas de luminância de várias maneiras. Por exemplo, o codificador de vídeo pode realizar a operação exemplar ilustrada na figura 5 para associar um valor a intensidade limítrofe com uma borda de luma. Em outros exemplos, o codificador de vídeo pode executar operações exemplares diferentes da figura 5 para associar um valor de intensidade limítrofe a uma borda de luma. Depois de associar as bordas com valores de intensidade limítrofe, o codificador de vídeo pode executar um processo de desbloqueio de borda de luma (208). O processo de desbloqueio de borda de luma pode reduzir os artefatos de bloqueio em amostras de luminância. O codificador de vídeo pode executar vários processos de desbloqueio de borda de luma. Por exemplo, o codificador de vídeo pode realizar o processo de desbloqueio de borda de luma exemplar ilustrado na figura 7. Em outros exemplos, o codificador de vídeo pode executar processos de desbloqueio de borda de luma que são diferentes do processo de desbloqueio de borda de luma exemplar ilustrado na figura 7.
[0118] Além disso, o codificador de vídeo pode associar os valores de intensidade limítrofe com bordas de croma (210). O codificador de vídeo pode associar valores de intensidade limítrofe com bordas de croma de várias maneiras. Por exemplo, o codificador de vídeo pode realizar a operação exemplar ilustrada na figura 6 para associar um valor de intensidade limítrofe com uma borda de croma. Em outros exemplos, o codificador de vídeo pode executar operações exemplares diferentes da figura 6 para associar um valor de intensidade limítrofe com uma borda de croma.
[0119] O codificador de vídeo pode, em seguida, executar um processo de desbloqueio de borda de croma (210). O processo de desbloqueio de borda de croma pode reduzir os artefatos de bloqueio em amostras de crominância. O codificador de vídeo pode executar vários processos de desbloqueio de borda de croma. Por exemplo, o codificador de vídeo pode realizar o processo de desbloqueio de borda de croma exemplar ilustrado na figura 11. Em outros exemplos, o codificador de vídeo pode executar processos de desbloqueio de borda de croma que são diferentes do processo de desbloqueio de borda de croma exemplar ilustrado na figura 11.
[0120] A figura 5 é um fluxograma que ilustra uma operação exemplar 250 para associar um valor de intensidade limítrofe com uma borda de luminância. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar a operação 250. Em outros exemplos, o codificador de vídeo pode usar outras operações diferentes da operação 250 para associar um valor a intensidade limítrofe com uma borda de luma. Por exemplo, em outros exemplos, o codificador de vídeo pode executar uma operação de associar um valor de intensidade limítrofe com uma borda de luminância, em que o codificador de vídeo realiza mais, menos ou diferentes etapas de operação 250. Em outros exemplos, o codificador de vídeo pode realizar as etapas de operação 250 em ordens diferentes ou em paralelo.
[0121] Depois do codificador de vídeo 250 iniciar a operação, o codificador de vídeo pode determinar se um bloco de vídeo "p" ou um bloco de vídeo "q" está associado com uma CU intrapredita (260). A borda de luma pode ocorrer em um limite entre o bloco de vídeo "p" e bloco de vídeo "q".
[0122] O bloco de vídeo "q" pode ser um bloco de vídeo 4x4 dentro de um bloco de vídeo de CU atual. O bloco de vídeo de CU atual é um bloco de vídeo associado com uma CU (isto é, uma CU atual), que o codificador de vídeo está atualmente codificando. Bloco de vídeo "p" pode ser um bloco de vídeo 4x4 dentro de um bloco de vídeo vizinho. Em outros exemplos, os blocos de vídeo "q" e "p" podem ser blocos de vídeo 8x8.O bloco de vídeo vizinho pode estar dentro do bloco de vídeo de CU atual ou um bloco de vídeo associado a uma CU previamente codificada.
[0123] A CU pode ser uma CU intrapredita se os dados de predição da PU da CU são gerados usando intrapredição. Bloco de vídeo "q" pode estar associado com uma CU intrapredita quando o bloco de vídeo da CU atual (isto é, o bloco de vídeo que contém blocos de vídeo "q") está associado com uma CU intrapredita. Bloco de vídeo "p" pode estar associado com uma CU intrapredita quando o bloco de vídeo que contém blocos de vídeo "p" está associado com uma CU intrapredita.
[0124] Em resposta à determinação que o bloco de vídeo "p" ou bloco de vídeo "q" está associado com uma CU intrapredita ("SIM" de 260), o codificador de vídeo pode associar o primeiro valor de intensidade limítrofe com a borda de luminância (262). No exemplo da figura 5, o primeiro valor de intensidade limítrofe é igual a dois. Um valor de intensidade limítrofe igual a dois pode indicar que um filtro de desbloqueio está com um deslocamento igual a dois.
[0125] Os codificadores de vídeo convencionais podem determinar se a borda de luminância é uma borda de CU em resposta à determinação de que o bloco de vídeo “p” ou bloco de vídeo “q” está associado com uma CU intrapredita. Uma borda de CU pode ser uma borda que ocorre na fronteira entre blocos de vídeo associados com as duas CUs diferentes. Esses codificadores de vídeo podem associar um valor de intensidade limítrofe de "4", com a borda de luminância, em resposta à determinação de que a borda de luminância é uma borda de CU e podem associar um valor de intensidade limítrofe de "3", com a borda de luminância, em resposta à determinação que a borda de luma não é uma borda de CU.
[0126] De acordo com as técnicas da presente divulgação, quando um codificador de vídeo realiza a operação 250, o codificador de vídeo associa o primeiro valor de intensidade limítrofe com a borda de luminância sem determinar se a borda de luminância é uma borda de CU. Associar o primeiro valor de intensidade limítrofe com a borda de luminância, em resposta à determinação de que o bloco de vídeo “p” ou bloco de vídeo “q” está associado com uma CU intrapredita, em vez de fazer a determinação adicional a respeito de se a borda de luminância é uma borda de CU, pode reduzir a complexidade e aumentar o desempenho do codificador de vídeo.
[0127] Por outro lado, em resposta à determinação de que os sinais de bloco de vídeo "p" nem bloco de vídeo “q” é uma CU intrapredita ("NÃO" de 260), o codificador de vídeo pode determinar se o bloco de vídeo "p "ou bloco de vídeo "q" está associado com uma TU que está associada com um ou mais níveis de coeficiente de transformada diferente de zero (264). Bloco de vídeo “p” ou bloco de vídeo “q” podem estar associados com uma TU quando os valores de amostras nos bloco de vídeo "p" ou bloco de vídeo “q” são baseados em um bloco de vídeo residual associado à TU.
[0128] Em resposta a determinação de que qualquer bloco de vídeo "p" ou bloco de vídeo "q" está associado a uma TU que está associada com um ou mais níveis de transformada de coeficiente diferente de zero ("Sim" de 264), o codificador de vídeo pode associar um segundo valor de intensidade limítrofe (Bs) com a borda de luminância (266). No exemplo da figura 5, o segundo valor de intensidade limítrofe é igual a um. Um valor de intensidade limítrofe igual pode indicar que um filtro de desbloqueio está com um deslocamento igual a zero. Convencionalmente, os codificadores de vídeo podem associar um valor de intensidade limítrofe de dois com a borda de luminância, em resposta à determinação de que qualquer bloco de vídeo “p” ou bloco de vídeo “q” está associado com uma TU que está associada com um ou mais coeficientes de transformada diferente de zero.
[0129] De outro modo, no presente exemplo, se nenhum bloco de vídeo “p” nem bloco de vídeo “q” está associado com uma TU que está associada com um ou mais níveis de transformada de coeficiente diferente de zero ("NÃO" de 264), o codificador de vídeo pode determinar se o bloco de vídeo "p" ou bloco de vídeo "q" estão associados com PUs que têm diferentes imagens de referência ou que têm diferentes números de vetores de movimento (MVs) (268). Bloco de vídeo “p” ou bloco de vídeo “q” pode estar associado com uma PU quando os valores de amostras de bloco de vídeo "p" ou bloco de vídeo “q” baseiam-se em um bloco de vídeo predito associado à PU.
[0130] Em resposta a determinação de que o bloco de vídeo "p" ou bloco de vídeo "q" estão associados com PUs que têm diferentes imagens de referência ou que têm diferentes números de vetores de movimento ("SIM" de 268), o codificador de vídeo pode associar o segundo valor de intensidade limítrofe (por exemplo, 1) com a borda de luminância (266).
[0131] Além disso, o codificador de vídeo pode determinar se o bloco de vídeo “p” e de blocos de vídeo "q" são, cada um associados com PUs, que têm um vetor de movimento e o valor absoluto da diferença entre os componentes horizontais do vetor de movimento da PU associada com bloco de vídeo "p" (MVpx) e o vetor de movimento da PU associada com o bloco de vídeo “q” (MVqx) é maior do que ou igual a um (272). Em resposta à determinação de que o bloco de vídeo “p” e blocos de vídeo "q" são cada um deles associados com PUs, que têm um vetor de movimento e o valor absoluto da diferença entre MVqx e MVpx é maior do que ou igual a um ("SIM" de 272), o codificador de vídeo pode associar o segundo valor de intensidade limítrofe (por exemplo, 1) com a borda de luminância (266).
[0132] Além disso, o codificador de vídeo pode determinar se o bloco de vídeo “p” e bloco de vídeo “q" são, cada um associado com PUs, que têm um vetor de movimento e o valor absoluto da diferença entre os componentes verticais do vetor de movimento da PU associada com bloco de vídeo "p" (MVpy) e o vetor de movimento da PU associada com o bloco de vídeo “q” (MVqy) é maior do que ou igual a um (274). Em resposta à determinação de que o bloco de vídeo “p” e de bloco de vídeo “q" são cada um deles associado com PUs, que têm um vetor de movimento e o valor absoluto da diferença entre MVpy e MVqy é maior do que ou igual a um ("SIM" de 274), o codificador de vídeo pode associar o segundo valor de intensidade limítrofe (por exemplo, 1) com a borda de luminância (266).
[0133] Além disso, o codificador de vídeo pode determinar se ambos a PU associada ao bloco de vídeo "q" e PU associada ao bloco de vídeo "p" tem dois vetores de movimento e, a pelo menos um par de vetores de movimento, o valor absoluto da diferença entre os componentes horizontais dos vetores de movimento (MVpx MVqx) é maior do que ou igual a um (276). Em resposta à determinação de que tanto a PU associada com bloco de vídeo "q" e a PU associada com o bloco de vídeo “p” tem dois vetores de movimento, e para, pelo menos, um par de vetores de movimento, o valor absoluto da diferença entre MVpx e MVqx é maior do que ou igual a um ("SIM" de 276), o codificador de vídeo pode associar o segundo valor de intensidade limítrofe (por exemplo, 1) com a borda de luminância (266).
[0134] Além disso, o codificador de vídeo pode determinar se ambas a PU associada como o bloco de vídeo "q" e a PU associada com o bloco de vídeo "p" tem dois vetores de movimento e, por pelo menos um par de vetores de movimento, o valor absoluto da diferença entre os componentes verticais dos vetores de movimento (MVpy, MVqy) é maior do que ou igual a um (278). Em resposta à determinação de que tanto a PU associada com bloco de vídeo "q" quanto a PU associada com o bloco de vídeo “q” tem dois vetores de movimento, e por pelo menos um par de vetores de movimento, o valor absoluto da diferença entre os componentes verticais dos vetores de movimento (MVpy, MVqy) é maior do que ou igual a um ("SIM" de 278), o codificador de vídeo pode associar o segundo valor de intensidade limítrofe (por exemplo, 1) com a borda de luminância (266).
[0135] Caso contrário, se nenhuma das condições nas etapas 268-278 avaliar a verdade, o codificador de vídeo pode associar a borda de luma com um terceiro valor de intensidade limítrofe (280). No exemplo da figura 5, o terceiro valor de intensidade limítrofe é igual a zero. Assim, no exemplo da figura 5, o codificador de vídeo só pode associar valores de intensidade limítrofe de um ou zero com a borda de luma quando o bloco de vídeo "p" e bloco de vídeo "q" são associadas com CUs interpreditas. Conforme descrito abaixo, o codificador de vídeo não aplica um filtro de desbloqueio a uma borda se o valor de limite relacionado com a força da borda é o terceiro valor de intensidade limítrofe (por exemplo, zero).
[0136] As etapas 268-278 podem ser verificações adicionais para determinar as diferenças entre as amostras no bloco de vídeo "q" e amostras no bloco de vídeo "p." Se as verificações de etapas 268-278 avaliar como verdadeira, as amostras no bloco de vídeo "q" e as amostras no bloco de vídeo "p" podem ter algumas diferenças. Caso contrário, as amostras no bloco de vídeo “q” e as amostras no bloco de vídeo “p” podem ter pouca ou nenhuma diferença, por conseguinte, a borda pode ser associada com um valor de intensidade limítrofe de zero e nenhum filtro de desbloqueio é aplicado nas amostras associadas com a borda.
[0137] Esta divulgação descreve o exemplo da figura 5 como sendo realizada em relação a uma borda de luminância. Contudo, em outros exemplos, uma operação semelhante à operação 250 pode ser executada no que diz respeito às bordas de croma.
[0138] A figura 6 é um fluxograma que ilustra uma operação exemplar 280 para associar um valor de intensidade limítrofe é uma borda de croma entre dois blocos de vídeo. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar a operação 280. Em outros exemplos, o codificador de vídeo pode usar outras operações diferentes da operação 280 para associar um valor a intensidade limítrofe com uma borda de croma. Por exemplo, em outros exemplos, o codificador de vídeo pode executar uma operação de associar um valor de intensidade limítrofe com uma borda de croma em que o codificador de vídeo realiza mais, menos ou diferentes etapas de operação 280. Em outros exemplos, o codificador de vídeo pode realizar as etapas de operação 280 em ordens diferentes ou em paralelo.
[0139] Após o codificador de vídeo começar a operação 280, o codificador de vídeo pode determinar se um bloco de vídeo de CU atual está dentro de uma fatia P ou uma fatia B (282). O bloco de vídeo de CU atual é um bloco de vídeo associado com uma CU (isto é, uma CU atual), que o codificador de vídeo está atualmente codificando. Em resposta à determinação de que o bloco de vídeo de CU atual está dentro de uma fatia P ou uma fatia B ("SIM" de 282), o codificador de vídeo pode associar um terceiro valor de intensidade limítrofe (Bs) com a borda (284). No exemplo da figura 6, o terceiro valor de intensidade limítrofe é igual a 0. Um valor de intensidade limítrofe igual a zero, pode indicar que um filtro de desbloqueio não irá ser aplicado à borda de croma. Assim, o codificador de vídeo pode aplicar um filtro de desbloqueio para a borda de croma apenas quando a borda é croma em uma fatia I.
[0140] Em resposta à determinação de que o bloco de vídeo de CU atual não é uma fatia P ou uma fatia B (ou seja, o bloco de vídeo atual é CU em uma fatia I) ("NÃO" de 282), o codificador de vídeo pode determinar se a borda de croma corresponde a uma borda interna de uma TU 4Nx4N, onde N é o comprimento em amostras de luminância da borda (286). Por exemplo, o codificador de vídeo pode determinar se a borda de croma corresponde a uma borda interna de uma TU 32x32 quando o comprimento da borda é de oito amostras. Uma borda externa de uma TU pode ser uma borda que corresponde a uma fronteira entre blocos de vídeo associados com diferentes TUs. Uma borda interna de uma TU pode ser uma borda que não corresponde a um limite entre blocos de vídeo associados com diferentes TUs.
[0141] Em resposta à determinação de que a borda de croma corresponde a uma borda interna de uma TU 4Nx4N ("SIM" de 286), o codificador de vídeo pode associar o terceiro valor de intensidade limítrofe (Bs), com a borda do croma (284). No entanto, em resposta à determinação de que a borda de croma não corresponde a uma borda interna de uma TU 4Nx4N ("NÃO" de 286), o codificador de vídeo pode associar um primeiro valor de intensidade limítrofe com a borda de croma (288). No exemplo da figura 6, o primeiro valor de intensidade limítrofe é igual a dois.
[0142] Nas etapas 202 e 204 da figura 4, o codificador de vídeo pode testar bordas sobre uma grade de amostra de luma 8x8 para determinar se as bordas correspondem às bordas de PUs ou TUs uma CU. O codificador de vídeo pode armazenar dados que indicam se uma borda corresponde a umaborda de PU ou borda TU em uma matriz com base em coordenadas relativas à amostra de luma superior esquerda do bloco de amostras de luma residuais. Cada CU pode ser associada a um bloco de amostras de luma residuais e dois blocos de amostras de croma residuais. O codificador de vídeo pode subamostrar (sub-sampling) ou amostrar descendentemente (down-samling) os blocos de amostras de croma residuais de tal modo que cada um dos blocos de amostras de croma residual a metade da largura e altura do bloco de amostras de luma residuais. Por exemplo, uma TU da CU pode, inicialmente, ser associada com um bloco de 32x32 de amostras de luminância residuais e dois blocos de 32x32 de amostras de croma residuais. Neste exemplo, o codificador de vídeo pode subamostrar ou amostrar descendentemente os blocos de amostras de croma residuais em blocos 16x16 de amostras de croma residuais.
[0143] Assim, em um bloco de amostras de croma residuais subamostrado ou amostrado descendentemente, as bordas internas da TU que eram anteriormente oito amostras separadas são agora quatro amostras separadas. Como resultado, as coordenadas de uma borda do bloco de amostras de croma residuais podem não ser as mesmas que foram antes da subamostragem ou amostragem descendente. Assim, o codificador de vídeo seria necessário converter as coordenadas da borda a fim de determinar se a borda corresponde a uma borda de uma PU ou uma TU. Isto pode aumentar a complexidade do processo de desbloqueio. Para evitar esta complexidade, o codificador de vídeo pode definir o valor de Bs para bordas interiores das TUs 4Nx4N para o terceiro valor da intensidade limítrofe. Assim, o codificador de vídeo não aplica filtros de desbloqueio às bordas internas das TUs 4Nx4N.
[0144] Isto é, a operação de busca de borda pode não ser mais necessária para o bloco de vídeo de croma porque o codificador de vídeo pode realizar desbloqueio de croma em uma grade de desbloqueio NxN fixo e baixo-amostragem do bloco de vídeo de luma para o bloco de vídeo de croma normalmente resulta em blocos de vídeo não maiores do que as amostras NxN. Por exemplo, o maior tamanho de TU de um bloco de vídeo de luma é tipicamente 2Nx2N que o codificador de vídeo pode amostrar descendentemente para um bloco de vídeo de croma NxN. Neste caso, o codificador de vídeo pode determinar que todas as bordas da grade de desbloqueio NxN fixo são bordas de TU e podem ser desbloqueadas. Como um exemplo, o desbloqueio de croma pode ser realizado em uma grade de desbloqueio 8x8 fixo. Uma vez que o maior tamanho de TU do bloco de vídeo de luma é tipicamente amostras de 16x16, o bloco de vídeo de croma amostrado descendentemente pode ter um tamanho de amostras de 8x8, que é equivalente à grade de desbloqueio 8x8 fixo.
[0145] Uma exceção pode existir quando o tamanho da TU do bloco de vídeo de luma é maior do que 2Nx2N, por exemplo, 4Nx4N. Neste caso, o bloco de vídeo de luma é amostrado descendentemente para um bloco de vídeo de croma 2Nx2N que inclui quatro grades de desbloqueio NxN sobre a qual se aplica o filtro de desbloqueio. Como um exemplo, o tamanho de TU do bloco de vídeo de luma pode ser amostras de 32x32 de tal modo que o bloco de vídeo de croma amostrado descendentemente tem um tamanho de amostras 16x16, que inclui quatro das grades de desbloqueio 8x8 fixas. O filtro de desbloqueio não pode ser realizado em qualquer uma das bordas das grades de desbloqueio NxN que são internas ao bloco de vídeo de croma 2Nx2N. Neste caso, portanto, o codificador de vídeo pode realizar uma verificação para assegurar que as bordas internas do bloco de vídeo de luma 4Nx4N (e o bloco de vídeo de croma 2Nx2N) não são processados, isto é, o filtro de desbloqueio é desligado com o valor Bs igual a zero para as bordas internas.
[0146] As técnicas permitem que o codificador de vídeo identifique bordas de TU e de PU de acordo com uma grade NxN. Além disso, o codificador de vídeo pode determinar se um bloco de vídeo de croma tem um tamanho maior do que as amostras NxN. O codificador de vídeo pode ser aplicado, quando o bloco de vídeo de croma tem um tamanho menor do que ou igual a amostras de NxN, o filtro de desbloqueio para as amostras de croma associado com a borda. No entanto, quando o bloco de vídeo de croma tem um tamanho maior do que as amostras NxN, o codificador de vídeo pode desligar o filtro de desbloqueio das bordas da grade que são internas ao bloco de vídeo de croma.
[0147] Em alguns exemplos, a etapa 286 é aplicável onde cada borda é oito amostras largas ou altas. Nesses exemplos, as bordas podem formar uma grade de amostra NxN. A aplicação de um filtro de desbloqueio às amostras de croma de bordas internas de uma TU 4Nx4N não pode melhorar bastante a qualidade visual para justificar o custo e complexidade do desempenho de aplicar o filtro de desbloqueio. Assim, associando o terceiro valor de intensidade limítrofe com uma borda de croma que não corresponde a uma borda externa de uma TU 32x32, o codificador de vídeo pode apenas aplicar um filtro de desbloqueio às amostras de croma associadas com a borda, quando a borda corresponde a uma borda externa de uma TU 32x32 e a borda está associada com o primeiro valor de intensidade limítrofe. Deste modo, o codificador de vídeo pode, vantajosamente, evitar os custos de complexidade e desempenho associados com a realização de outras operações de desbloqueio em relação à borda de croma.
[0148] A figura 7 é um fluxograma que ilustra uma operação exemplar 300 para desbloquear bordas de luma de uma CU. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar operação de desbloqueio de borda de luma 300. Em outros exemplos, o codificador de vídeo pode usar operações diferentes da operação de desbloqueio de borda de luma 300. Por exemplo, em outros exemplos, o codificador de vídeo pode executar uma operação de desbloqueio de borda de luma em que o codificador de vídeo executa mais, menos, ou etapas diferentes da operação de desbloqueio de borda de luma 300. Em outros exemplos, o codificador de vídeo pode executar as etapas da operação de desbloqueio de borda de luma 300 em ordens diferentes ou em paralelo.
[0149] Após o codificador de vídeo começar operação de desbloqueio de borda de luma 300, o codificador de vídeo pode determinar se o codificador de vídeo tem realizado uma operação de desbloqueio em uma última borda de luma vertical associada com um bloco de vídeo de CU atual (302). O bloco de vídeo de CU atual pode ser um bloco de vídeo associado com uma CU que o codificador de vídeo está atualmente codificando (ou seja, a CU atual). A última borda de luma vertical pode ser uma borda de luma vertical final quando as bordas de luma verticais associadas ao bloco de vídeo de CU atual são sequenciadas da esquerda para a direita de acordo com uma ordem geométrica.
[0150] Em resposta a determinação de que o codificador de vídeo ainda não realizou uma operação de desbloqueio na última borda de luma vertical ("NÃO" de 302), o codificador de vídeo pode selecionar uma próxima borda de luma vertical associada com o bloco de vídeo de CU atual (304). A próxima borda de luma vertical pode ser a primeira borda de luma vertical associada com o bloco de vídeo de CU atual em que uma operação de desbloqueio ainda não foi realizada. O codificador de vídeo pode, em seguida, executar uma operação de desbloqueio na borda de luma vertical selecionada (306). Ao realizar a operação de desbloqueio na borda de luma vertical selecionada, o codificador de vídeo pode reduzir ou eliminar os artefatos de bloqueio associados com a borda de luma vertical selecionada. O codificador de vídeo pode realizar diversas operações de desbloqueio na borda de luma vertical selecionada. Por exemplo, o codificador de vídeo pode realizar a operação de desbloqueio exemplar da figura 8 na borda de luma vertical selecionada. Em outros exemplos, o codificador de vídeo pode executar operações de desbloqueio diferente da operação de desbloqueio da figura 8 na borda de luma vertical selecionada.
[0151] Após a realização da operação de desbloqueio na borda de luma vertical selecionada, o codificador de vídeo pode determinar novamente se uma operação de desbloqueio foi aplicada a uma última borda de luma vertical associada com o bloco de vídeo de CU atual (302). Se não, o codificador de vídeo pode repetir as etapas 304 e 306 em relação à outra borda de luma vertical associada com o bloco de vídeo de CU atual. Deste modo, o codificador de vídeo pode executar operações de desbloqueio em cada uma das bordas de luma verticais associadas com o bloco de vídeo de CU atual.
[0152] Em resposta a determinação de que uma operação de desbloqueio foi realizada em uma última borda de luma vertical associada com o bloco de vídeo de CU atual ("SIM" de 302), o codificador de vídeo pode determinar se uma operação de desbloqueio foi realizada em uma última borda de luma horizontal associada com o bloco de vídeo de CU atual (308). A última borda de luma horizontal pode ser a última borda de luma horizontal, quando as bordas de luma horizontal associadas com o bloco de vídeo de CU atual são sequenciadas a partir de cima para baixo de acordo com uma ordem geométrica.
[0153] Em resposta a determinação de que o codificador de vídeo ainda não realizou uma operação de desbloqueio na última borda de luma horizontal ("NÃO" de 308), o codificador de vídeo pode selecionar uma próxima borda de luma horizontal associada ao bloco vídeo de CU atual ( 310). A próxima borda de luma horizontal pode ser a primeira borda de luma horizontal associada com o bloco de vídeo de CU atual em que uma operação de desbloqueio ainda não foi realizada. O codificador de vídeo pode, em seguida, executar uma operação de desbloqueio na borda de luma horizontal selecionada (312). Ao realizar a operação de desbloqueio na borda de luma horizontal selecionada, o codificador de vídeo pode reduzir ou eliminar os artefatos de bloqueio associados com a borda de luma horizontal selecionada. O codificador de vídeo pode realizar diversas operações de desbloqueio na borda de luma horizontal selecionada. Por exemplo, o codificador de vídeo pode realizar a operação de desbloqueio exemplar da figura 8 na borda de luma horizontal selecionada.
[0154] Após a realização da operação de desbloqueio sobre a borda de luma horizontal selecionada, o codificador de vídeo pode determinar novamente se uma operação de desbloqueio tem sido aplicada a uma última borda de luma horizontal associada com o bloco de vídeo de CU atual (308). Se não, o codificador de vídeo pode repetir as etapas 310 e 312 em relação à outra borda de luma horizontal associada com o bloco de vídeo de CU atual. No entanto, em resposta à determinação de que o codificador de vídeo realizou uma operação de desbloqueio sobre a última borda de luma horizontal associada com o bloco de vídeo de CU atual ("SIM" de 308), o codificador de vídeo pode finalizar operação de desbloqueio de borda de luma 300. Deste modo, o codificador de vídeo pode executar operações de desbloqueio em cada uma das bordas de luma verticais e horizontais associadas com o bloco de vídeo de CU atual.
[0155] A figura 8 é um fluxograma que ilustra uma operação de desbloqueio exemplar 350 executada por um codificador de vídeo em uma borda de luma individual. Em alguns exemplos, um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar a operação de desbloqueio 350. O codificador de vídeo pode executar a operação de desbloqueio 350 no que diz respeito a uma borda de luma associada a um bloco de vídeo de uma CU que o codificador de vídeo está atualmente codificando. Para facilitar a explicação, essa divulgação pode se referir a CU que o codificador de vídeo está atualmente codificando como a CU atual. Além disso, esta divulgação pode referir-se ao bloco de vídeo associado com a CU atual como o bloco de vídeo de CU atual. Essa divulgação pode referir-se à margem em que o codificador de vídeo está realizando a operação de desbloqueio 350 como a borda atual.
[0156] Depois do codificador de vídeo começar a operação de desbloqueio 350, o codificador de vídeo pode determinar se o valor de intensidade limítrofe relacionado com a borda atual é maior do que zero (352). Em outras palavras, o codificador de vídeo pode determinar se o valor de intensidade limítrofe relacionado com a borda atual é igual ao primeiro ou segundo valor de intensidade limítrofe.
[0157] Em resposta à determinação de que o valor de intensidade limítrofe relacionado com a borda atual não é maior do que zero ("NÃO" de 352), o codificador de vídeo pode finalizar a operação de desbloqueio 350 em relação à borda atual. Assim, o codificador de vídeo não aplica um filtro de desbloqueio à borda atual quando o valor de intensidade limítrofe relacionado com a borda atual é igual à zero (isto é, o terceiro valor de intensidade limítrofe). No entanto, o codificador de vídeo pode aplicar um ou mais filtros de desbloqueio às amostras de luma associadas com a borda atual quando a borda atual está associada com o primeiro valor de intensidade limítrofe (por exemplo, 2) ou o segundo valor de intensidade limítrofe (por exemplo, 1).
[0158] Por outro lado, em resposta à determinação de que o valor de intensidade limítrofe relacionado com a borda atual é maior do que zero ("SIM" de 352), o codificador de vídeo pode determinar um valor QP de desbloqueio (354). O codificador de vídeo pode determinar o valor QP de desbloqueio de várias maneiras. Por exemplo, se a borda atual ocorre em uma fronteira entre o bloco de vídeo de CU atual e um bloco de vídeo de uma CU vizinha, o codificador de vídeo pode determinar o valor de QP de desbloqueio com base em um valor QP de luma associado com a CU atual e/ou um valor QP de luma associado a CU vizinha. Neste exemplo, o codificador de vídeo pode determinar o valor QP de desbloqueio com base na seguinte fórmula: qPL = (( QPY + QPP + 1) >> 1), onde QP1 é o valor QP de desbloqueio, QPY é um valor QP de luma associado a CU atual, QPp é o valor QP de luma associado a CU vizinha, e ">>" é o operador de deslocamento para a direita.
[0159] Após a determinação do valor QP de desbloqueio, o codificador de vídeo pode identificar, com base no valor QP de desbloqueio e no valor de intensidade limítrofe relacionado com a borda atual, um valor de um parâmetro Q para um limite tc (356). Em alguns exemplos, o codificador de vídeo pode identificar o valor do parâmetro Q para tc usando o seguinte pseudocódigo: Se Bs > 2, o TcOffset = 2 Se Bs < 2, então TcOffset = 0 Q = Clip3(0, MAX_QP+4, QP+TcOffset), onde MAX_QP = 51. No pseudocódigo acima, "Bs" indica o valor de intensidade limítrofe relacionado com a borda atual e "QP" indica o valor QP de desbloqueio. No pseudocódigo acima, Clip3(x, y, z) = x se z < x; y se z > y; e z em contrário.
[0160] Em um outro exemplo, o codificador de vídeo pode identificar o valor do parâmetro Q para tc usando o seguinte pseudocódigo: Se Bs = 2, o TcOffset = 2 Se Bs = 1, então TcOffset = 0 Se Bs = 0, então filtro de desbloqueio está desligado Q = Clip3(0, MAX_QP+4, QP+TcOffset), onde MAX_QP = 51.
[0161] Em um outro exemplo, o codificador de vídeo pode identificar o valor do parâmetro Q para tc como Q = Clip3(0, 55, qPL + 2*( Bs - 1 ) + ( tc_offset_div2 << 1) ),onde qPT é o valor QP de desbloqueio, Bs é o valor de intensidade limítrofe associada com a borda atual, e "tc_offset_div2" é um deslocamento de parâmetro desbloqueio de par tc.
[0162] Além disso, o codificador de vídeo pode identificar, com base no valor QP de desbloqueio, um valor do parâmetro Q para uma limite β (358). Em alguns exemplos, o codificador de vídeo pode identificar o valor do parâmetro Q para β usando a seguinte fórmula:Q = Clip3(0, MAX_QP, QP), onde MAX_QP = 51.No pseudocódigo acima, "Bs", "QP", e "clip3" podem ter os mesmos significados que no pseudocódigo de cima. Em outro exemplo, o codificador de vídeo pode identificar o valor do parâmetro Q para β como Q = Clip3(0, 51, qPL + (beta_offset_div2 << 1) ), onde qPL indica o QP de desbloqueio e "beta_offset_div2" é um deslocamento de parâmetro de desbloqueio para β.•
[0163] O codificador de vídeo pode, então, determinar um valor de tc com base no valor de Q identificado por tc (360). Além disso, o codificador de vídeo pode determinar o valor de β com base no valor de Q identificado por β (362). Em alguns exemplos, o codificador de vídeo pode utilizar os valores de Q para tc e β como índices para buscar os valores de tc e β em uma ou mais tabelas de busca. Por exemplo, o codificador de vídeo pode usar a tabela a seguir para identificar valores de tc e β.
Figure img0001
Figure img0002
TABELA 1: Valores de Limite tc e β como uma função de um parâmetro Q derivado de QP.Para utilizar um valor de Q como um índice para buscar um valor de tc ou β nesta tabela de busca, o codificador de vídeo pode localizar o valor de Q na tabela de busca e, em seguida, identificar o valor especificado para tc ou β abaixo do valor de Q.
[0164] Depois do codificador de vídeo determina os valores de tc e β, o codificador de vídeo pode determinar se tc ou β são iguais a zero (364). Em resposta à determinação de que tanto tc quanto β são iguais a zero ("SIM" em 364), o codificador de vídeo pode finalizar a operação de desbloqueio 350 no que se refere à borda atual. Como descrito a seguir, finalizar a operação de desbloqueio 350 quando tc ou β são iguais a zero, pode reduzir a complexidade e aumentar o desempenho do codificador de vídeo.
[0165] Deste modo, o codificador de vídeo pode determinar um primeiro valor de limite (ou seja, tc) e um segundo valor de limite (ou seja, β) com base no valor do parâmetro de quantização de desbloqueio e com base em se o primeiro ou o segunda valor de intensidade limítrofe está relacionado com a borda atual. Além disso, o codificador de vídeo pode determinar se os primeiro ou segundo valores de limite são iguais a zero e se aplica nenhum filtro de desbloqueio nas amostras de luma associadas com a borda atual quando o primeiro ou o segundo valor de limite é igual a zero. No entanto, o codificador de vídeo pode aplicar um ou mais filtros de desbloqueio às amostras de luma associadas com a borda atual quando a borda atual está associada com o primeiro ou o segundo valor de intensidade limítrofe e nem o primeiro nem o segundo valor de limite é igual a zero.
[0166] Em resposta ao determinar nem tc nem β sendo igual a zero ("NÃO" de 364), o codificador de vídeo pode determinar, com base em amostras de luma e β associadas com a borda atual, se pretende aplicar um filtro de desbloqueio às amostras de luma associadas com a borda atual (366). Em resposta à determinação, com base nas amostras de luma e β associadas com a borda atual, não aplicar o filtro de desbloqueio às amostras de luma associadas com a borda atual ("NÃO" de 366), o codificador de vídeo pode finalizar operação de desbloqueio 350 com relação à borda atual. Por conseguinte, a determinação da etapa 366 pode ser uma decisão de ligar / desligar de um filtro de desbloqueio.
[0167] O codificador de vídeo pode fazer essa determinação de várias maneiras. Por exemplo, o codificador de vídeo pode calcular um valor de d como se segue: dp0 = | p2,0 - 2*p1,0 + p0,0 | dp3 =| p2,3 - 2*p1,3 + p0,3 | dq0 = | q2,0 - 2*q1,0 + q0,0 | dq3 = | q2,3 - 2*q1,3 + q0,3 | dpq0 = dp0 + dq0 dpq3 = dp3 + dq3 Neste exemplo, o codificador de vídeo pode fazer a determinação de aplicar o filtro de desbloqueio, em resposta à determinação de que o valor d é inferior a β. Neste exemplo, dp0, dp3, dqO e dq3 podem ser as medições da atividade da amostra.
[0168] Na fórmula acima, p2,0, p1,0, q0,0, etc.,são rótulos para amostras. Os rótulos seguem o seguinte formato: letrax,y. A letra indica um bloco de vídeo "q" ou um bloco de vídeo "p". O x subscrito indica um deslocamento horizontal em amostras a partir da borda superior esquerda da borda atual. O y subscrito indica um deslocamento vertical nas amostras a partir da borda superior esquerda da borda atual. Se as amostras são indicadas utilizando uma letra e apenas um único índice, pode-se presumir que todas as amostras são indicadas em uma única linha. A figura 9 é um diagrama conceitual que indica etiquetas exemplares de amostras de cada borda vertical entre um primeiro bloco de vídeo "A" e um segundo bloco de vídeo "B". Essa divulgação pode usar esse formato de rotulagem em outras fórmulas.
[0169] Em um outro exemplo, o codificador de vídeo pode calcular o valor de d como se segue: d = | P2,2 — 2*P1,2 + P0,2 | + | q2,2 — 2*q1,2 + q0,2| + | P2,5 — 2*P1,5 + P0,5 | + | q2,5 — 2*q1,5 + q0,5 | Neste exemplo, o codificador de vídeo pode fazer a determinação de aplicar o filtro de desbloqueio, em resposta à determinação de que o valor d é inferior a β.
[0170] Em um exemplo similar, o valor d pode ser um valor booleano calculado utilizando as seguintes fórmulas: di = | P2,2 — 2*pi,2 + po,2 | + | q2,2 — 2*qi,2 + qo,2l d2 = l P2,5 — 2*pi,5 + po,5 l + l q2,5 — 2*qi,5 + qo,5l d = di + d2 < β Neste exemplo, o codificador de vídeo pode fazer a determinação de aplicar o filtro de desbloqueio, em resposta à determinação de que o valor de d é verdadeiro e pode tomar a determinação de não aplicar o filtro de desbloqueio, em resposta à determinação de que o valor de d é falso. Assim, se as medições de atividade somadas (por exemplo, | p2,2 - 2*pi,2 + po,2 |, | q2,2 - 2*qi,2 + qo,2 |, etc.) forem menores do que o valor limite β, o codificador de vídeo pode aplicar um filtro de desbloqueio a uma área de borda de desbloqueio de oito amostras. Desta forma, se a atividade ao longo da borda for alta, o filtro de desbloqueio pode não ser necessário pois a descontinuidade em toda a borda pode não ser visível. No entanto, se a atividade ao longo da borda é baixa, o codificador de vídeo pode aplicar um filtro de desbloqueio para suavizar descontinuidades entre os blocos de vídeo em qualquer um dos lados da borda.
[0171] Em resposta a fazer a determinação de aplicar um filtro de desbloqueio ("SIM" de 366), o codificador de vídeo pode determinar se um flag forte de desativação de filtro é definido como "verdadeiro" (368). O flag forte de desativação de filtro pode ser sinalizado dentro de várias estruturas de sintaxe em um fluxo de bits. Por exemplo, o flag forte de desativação de filtro pode ser indicado em um conjunto de parâmetros de sequência, um conjunto de parâmetros de adaptação, um conjunto de parâmetros de imagem, ou um cabeçalho de fatia como parte de parâmetros de controle de filtro de desbloqueio.
[0172] A sinalização de flags fortes de desativação de filtro no fluxo de bits pode ser vantajosa por várias razões. Por exemplo, a sinalização de flags fortes de desativação de filtro no fluxo de bits pode reduzir a complexidade da decodificação de vídeo devido ao fato de que a fraca / forte determinação de filtro de desbloqueio pode ser evitada e o filtro de desbloqueio fraco pode ter menos do que a complexidade do filtro de desbloqueio forte.
[0173] Em resposta a determinação de que o flag forte de desativação de filtro não está definido como "verdadeiro" ("NÃO" de 368), o codificador de vídeo pode determinar se aplica um filtro de desbloqueio forte às amostras associadas com a borda atual (370). Em outras palavras, o codificador de vídeo pode fazer uma decisão filtro de desbloqueio forte / fraco. Quando o nível de atividade ou a textura são baixos, o gradiente é liso, e a descontinuidade ao longo da borda é pequena, em seguida, o codificador de vídeo deve aplicar um filtro forte para prover mais nivelamento da descontinuidade entre os blocos de vídeo associados com a borda. Caso contrário, quando a textura ou nível de atividade forem altos, o gradiente é agitado, e a descontinuidade ao longo da borda é grande, o codificador de vídeo deve aplicar um filtro fraco para prover menos de alisamento na borda.
[0174] O codificador de vídeo pode fazer a determinação de se deve aplicar o filtro de desbloqueio forte de várias maneiras. Por exemplo, a borda atual pode ser de oito amostras larga ou alta. Neste exemplo, as oito amostras de luma podem ser divididas igualmente em um primeiro segmento e um segundo segmento. O primeiro segmento pode incluir as primeiras quatro amostras (isto é, as amostras 0 ... 3) e o segundo segmento pode incluir as últimas quatro amostras (isto é, as amostras 4 ... 7). Neste exemplo, o codificador de vídeo pode fazer uma determinação forte / fraca para o primeiro segmento e outra determinação forte / fraca para o segundo segmento. O codificador de vídeo pode aplicar em separado um filtro de desbloqueio forte ou fraco nas etapas 372 e 374 para as amostras de luma associadas com o primeiro segmento e o segundo segmento. O codificador de vídeo pode realizar a operação exemplar ilustrada na figura 10 para determinar se aplica um filtro de desbloqueio forte ou fraco ao primeiro ou segundo segmento.
[0175] Em outros exemplos, um segmento da borda atual pode ser de quatro amostras de largura ou altura. Nesses exemplos, o codificador de vídeo pode fazer a determinação forte / fraca para o segmento da borda atual com base em valores de amostras em uma primeira linha de amostras e uma quarta linha de amostras que cruza a borda atual. Uma linha de amostras pode ser uma série de amostras adjacentes que são perpendiculares à borda atual (e, portanto, perpendiculares à fronteira entre um primeiro bloco de vídeo e um segundo bloco de vídeo). Por exemplo, se a borda atual é horizontal, as linhas são verticais. Da mesma forma, se a borda atual é vertical, as linhas são horizontais.
[0176] Ainda em outros exemplos, o codificador de vídeo pode fazer determinações fortes / fracas separadas para cada linha de amostras que cruza a borda atual. Nestes exemplos, o codificador de vídeo pode aplicar em separado um filtro de desbloqueio forte ou fraco nas etapas 372 e 374 para as amostras de luma em cada uma das amostras de linha que atravessa a borda atual.
[0177] Em resposta a fazer a determinação de aplicar um filtro de desbloqueio forte ("SIM" de 370), o codificador de vídeo pode aplicar o filtro de desbloqueio forte para amostras de luma associadas com a borda atual (372). Em alguns exemplos, a aplicação do filtro de desbloqueio forte pode modificar as amostras até três amostras de distância a partir da borda em ambas as direções.
[0178] O codificador de vídeo pode aplicar o filtro de desbloqueio forte de várias maneiras. Por exemplo, o codificador de vídeo pode aplicar o seguinte filtro de desbloqueio forte para uma linha de amostras de luma que atravessa a borda de luma atual: p0’ = ( p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4 )/8 p1’ = ( p2 + p1 + p0 + q0 + 2 ) / 4 p2’ = ( 2*p3 + 3*p2 + p1 + p0 + q0 + 4 ) / 8 q0’ = ( p1 + 2*p0 + 2*q0 + 2*q1 + q2 + 4 ) / 8 q1’ = ( p0 + q0 + q1 + q2 + 2 ) / 4 q2’ = ( p0 + q0 + q1 + 3*q2 + 2*q3 + 4 ) / 8 Nas linhas acima, "q" pode designar um primeiro bloco de vídeo e "p" pode designar um segundo bloco de vídeo vizinho. p0, p1, p2, p3 indicam os valores originais de amostras do segundo bloco de vídeo que são, respectivamente, zero, um, dois e três amostras de distância da fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo, p0', p1', e p2' denotam valores modificados de amostras do segundo bloco de vídeo que são, respectivamente, zero, uma, e duas amostras de distância da fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo. q0, q1, q2, e q3 indicam os valores originais de amostras do primeiro bloco de vídeo que são, respectivamente, zero, uma, duas e três amostras de distância da fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo. q0’, q1' e q2' denotam valores modificados de amostras do primeiro bloco de vídeo que são, respectivamente, zero, uma, e duas amostras de distância de uma fronteira entre o primeiro bloco de vídeo e o segundo bloco de vídeo.
[0179] Em outro exemplo, o codificador de vídeo pode aplicar o seguinte filtro de desbloqueio forte para uma linha de amostras de luma que atravessa a borda atual: Δ = ( 9 * ( qo - po ) - 3 * ( qi - pi ) + 8 ) / 16 Δ = Clip ( -tc, tc, Δ ) po’ = po + Δ qo’ = qo - Δ Δp = Clip ( -tc / 2, tc / 2, ( ( p2 + pi + i) / 2 - pi + Δ ) / 2 ) pi’ = pi + ΔP Δq = Clip ( -tc / 2, tc / 2, ( ( q2 + qo + i ) / 2 - qi - Δ ) / 2 ) qi’ = qi + Δq Este filtro de desbloqueio forte pode possuir uma ou mais bordas sobre o filtro de desbloqueio forte do parágrafo anterior. Por exemplo, este filtro de desbloqueio forte pode preservar a força de desbloqueio do filtro de desbloqueio forte do parágrafo anterior, mas uma exigência de armazenador de memória de linha do codificador de vídeo pode ser de três linhas, em vez das quatro linhas necessárias no filtro de desbloqueio forte do parágrafo anterior.
[0180] Em outro exemplo, o codificador de vídeo pode aplicar o seguinte filtro de desbloqueio forte para valores de luma em uma linha de amostras: p0’ = Clip3( p0 - 2*tc, p0 + 2*tc, ( p2 + 2*p1 + 2*p0 + 2*q + q1 + 4 ) >> 3 ) p1’ = Clip3( p1 - 2*tc, p1 + 2*tc, ( p2 + p1 + p0 + q0 + 2 ) >> 2 ) p2’ = Clip3( p2 - 2*tc, p2+2*tc, ( 2*p3 + 3*p2 + p1 + p0 + q0 + 4 ) >> 3 )) q0’ = Clip3( q0 - 2*tc, q0 + 2*tc, ( p1 + 2*p0 + 2*q0 + 2*q1 + q2 + 4 ) >> 3 )) q1’ = Clip3( q1 - 2*tc, q1 + 2*tc, ( p0 + q0 + q1 + q2 + 2 ) >> 2 ) q2’ = Clip3( q2 - 2*tc, q2 + 2*tc, ( p0 + q0 + q1 + 3*q2 + 2*q3 + 4 ) >> 3 )
[0181] Em resposta a fazer a determinação de que o flag forte de desativação de filtro é definido como "verdadeiro" ("SIM" de 368) ou em resposta a fazer a determinação de aplicar um filtro de desbloqueio fraco ao segmento selecionado ("NÃO" de 370), o codificador de vídeo pode aplicar um filtro de desbloqueio fraco às amostras de luma associadas com a borda atual (374). Assim, se o flag forte de desativação de filtro é definido como "verdadeiro", o codificador de vídeo utiliza apenas o filtro de desbloqueio fraco e o codificador de vídeo não executa a determinação se a realizar filtro de desbloqueio forte / forte.
[0182] O codificador de vídeo pode aplicar o filtro de desbloqueio fraco de várias maneiras. Por exemplo, o codificador de vídeo pode aplicar o seguinte filtro de desbloqueio fraco a uma linha de amostras de luma: Δ = ( 9 * ( qo - po ) - 3 * ( qi - pi ) + 8 ) / 16 Δ = Clip3 ( -tc, tc, Δ ) po’ = po + Δ qo’ = qo - Δ Δp = Clip3 ( - tc / 2, tc / 2, ( ( p2 + po + 1 ) / 2 - p1 + Δ ) / 2 ) p1’ = p1 + Δp Δq = Clip3 ( - tc / 2, tc / 2, ( ( q2 + qo + 1 ) / 2 - q1 - Δ ) / 2 ) q1’ = q1 + Δq Nas linhas acima, po , p1, p2, p0, p1’, q0, q1, q2, q0’, q1’, e a função "clip3" podem ter o mesmo significado que os providos anteriormente. Este filtro de desbloqueio fraco é descrito em maior detalhe abaixo, com respeito à figuras 13B e 14B.
[0183] Em outro exemplo, o codificador de vídeo pode aplicar o seguinte filtro de desbloqueio fraco a uma linha de amostras de luma que atravessa a borda de luma atual: Δ = ( 3 * ( qo - po ) - ( q1 - p1 ) + 4 ) / 8 Δ = Clip3 ( -tc, tc, Δ ) p0’ = p0 + Δ q0’ = qo - Δ Δp = Clip3 ( - tc / 2, tc / 2, ( ( p2 + po + 1 ) / 2 - p1 + Δ ) / 2 ) pl’ = pl + Δp Δq = Clip3 ( - tc / 2, tc / 2, ( ( q2 + q0 + 1 ) / 2 - q1 - Δ ) / 2 ) ql’ = ql + Δq Nas linhas acima, p0, pl, p2, p0’, pl’, q0, ql, q2, q0’, ql’, e a função "clip3" podem ter o mesmo significado que os providos anteriormente. Este filtro de desbloqueio fraco é descrito em maior detalhe abaixo, com respeito à figura 14C.
[0184] Em outro exemplo, o codificador de vídeo pode aplicar o seguinte filtro de desbloqueio fraco a uma linha de amostras de luma que atravessa a borda atual: Δ = ( 3 * ( qo - po ) - 3 * ( qi - pi ) + 8 ) / 16 Δ = Clip3 ( -tc, tc, Δ ) po’ = po + Δ qo’ = qo - Δ Δp = Clip3 ( - tc / 2, tc / 2, ( ( p2 + po + i ) / 2 - pi + Δ ) / 2 ) pi’ = pi + Δp Δq = Clip3 ( - tc / 2, tc / 2, ( ( q2 + qo + i ) / 2 - qi - Δ ) / 2 ) qi’ = qi + Δq Nas linhas acima, po , pi, p2, p0’,pl’, q0, ql, q2, q0’, ql’, ea função "clip3" pode ter o mesmo significado que as preditas anteriormente.
[0185] A figura io é um fluxograma que ilustra uma operação exemplar 38o para determinar se a aplicação de um filtro de desbloqueio forte ou fraco a um segmento de uma borda de luminância. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30 pode executar a operação 380. Em outros exemplos, o codificador de vídeo pode usar outras operações diferentes da operação 380 para determinar se aplica um filtro de desbloqueio forte ou fraco ao segmento. Por exemplo, em outros exemplos, o codificador de vídeo pode executar uma operação de determinar um valor de intensidade limítrofe no qual o codificador de vídeo realiza mais, menos ou diferentes etapas de operação 380. Em outros exemplos, o codificador de vídeo pode executar as etapas de operação 380 em ordens diferentes ou em paralelo.
[0186] Depois de iniciar a operação 380, o codificador de vídeo pode determinar um indicador de força sw0 para uma primeira linha de amostras no segmento (382). Além disso, o codificador de vídeo pode determinar um indicador de força sw3 de uma quarta linha de amostras do segmento (384). Em alguns exemplos, o codificador de vídeo pode utilizar a seguinte fórmula para determinar o indicador de força para uma linha de amostras i. swi = 2(| P2,i — 2-pi,i + po,i | + | qo,i — 2-qi,i + q2,i | ) < ( β / 4 ) e ( I P2,i — po,i | + | qo,i — q2,i |) < ( β / 8 ) e | Po, i — qo,i | < ((5- tc + 1) / 2) Neste exemplo, 2(| p2,i — 2*pi,i + po,i | + | qo,i — 2^qi,i + q2,i | ) < ( β / 4 ) pode ser uma determinação de textura /atividade, ( | p2,i — po,i | + | qo,i — q2,i | ) < ( β / 8 ) pode ser uma determinação de gradiente, e | po,i — qo,i | < ((5* tc + 1) / 2) pode uma verificação de descontinuidade borda.
[0187] Após a determinação do indicador de força para a primeira linha de amostras e o indicador de força para a quarta linha de amostras, o codificador de vídeo pode determinar se o indicador de força para a primeira linha de amostras (sw0) e o indicador de força para o quarta linha de amostras (sw3) são ambos iguais a "verdadeiro" (386). Em resposta à determinação de que tanto o indicador de força para a primeira linha de amostras quanto o indicador de força para a quarta linha de amostras são iguais a "verdadeiro" ("SIM" de 386), o codificador de vídeo pode fazer a determinação de aplicar um filtro de desbloqueio forte para o segmento da borda atual (388). De outro modo, em resposta à determinação que o indicador de força para a primeira linha de amostras ou o indicador de força para a quarta linha de amostras é igual a "falso" ("NÃO" de 386), o codificador de vídeo pode fazer a determinação de aplicar um filtro de desbloqueio fraco ao segmento da borda atual (390).
[0188] Nos casos em que a borda de luminância contém vários segmentos de quatro amostras, o codificador de vídeo pode executar a operação 380 em cada um dos segmentos. Por exemplo, o codificador de vídeo pode executar a operação 380 em um segundo segmento de borda de luminância. Neste exemplo, o codificador de vídeo pode determinar e utilizar os indicadores de força para as quinta e oitava linhas de amostras em vez das primeira e quarta linhas de amostras como descritos acima.
[0189] Ao fazer a determinação de aplicar um filtro de desbloqueio forte ou fraco deste modo, o codificador de vídeo pode ler três amostras de cada lado de uma borda. Em contraste, Modelo de Teste 5 (HM5) de HEVC pode usar a seguinte fórmula para fazer a determinação de se deve aplicar um filtro de desbloqueio forte ou fraco: swi = 2(| P2,i — 2-pi,i + po,i | + | qo,i — 2-qi,i + q2,i | ) < ( β / 4 ) and | P3,i — po,i | + | qo,i — q3,i |) < ( β / 8 ) e po, i — qo,i | < ((5- tc + 1) / 2) Na segunda linha da fórmula, o codificador de vídeo utiliza amostras que são quatro amostras de distância a partir da borda (isto é, p3,i, q3,i). Consequentemente, quando o codificador de vídeo realiza a operação 38o, o codificador de vídeo pode armazenar as três linhas ou colunas de amostras em cada lado da borda na memória intermediária. Em contraste, se o codificador de vídeo estava para fazer a determinação de se aplica um filtro de desbloqueio forte ou fraco com base em quatro ou mais linhas ou colunas de amostras de ambos os lados da borda, o codificador de vídeo pode precisar de armazenar quatro ou mais linhas ou colunas no armazenador de memória. Assim, ao fazer a determinação de se aplica um filtro de desbloqueio forte ou fraco com base em três amostras de cada lado da borda, o codificador de vídeo pode reduzir a exigência de memória do armazenador de linha enquanto preserva uma força de desbloqueio para o filtro de desbloqueio forte.
[0190] Em um outro exemplo, o codificador de vídeo pode utilizar a seguinte fórmula nas etapas 382 e 384, em vez das fórmulas fornecidas acima: swi = d < ( β >> 2) and ( | P3,i — po,i | + | qo,i — q3,i | ) < ( β >> 3) e | Po,i — qo,i | < (( 5 • tc + 1 ) >> 1 ) Na fórmula acima, d pode ser calculado da maneira descrita acima com relação à etapa 366 da figura 8. Além disso, na fórmula acima, d<(β>>2) pode ser uma determinação de textura / atividade. Neste exemplo, a margem pode ser de oito amostras de largura ou altura e codificador de vídeo pode fazer uma determinação forte / fraca para um primeiro segmento (isto é, i = 0 .. 3) e uma determinação forte / fraca separada para um segundo segmento (isto é, , i = 4 .. 7). O codificador de vídeo pode aplicar em separado um filtro de desbloqueio forte ou fraco ao primeiro segmento e ao segundo segmento. Neste exemplo, o codificador de vídeo pode fazer a determinação forte / fraca para o primeiro segmento, determinando o valor de sw2 usando a fórmula acima. O codificador de vídeo pode fazer a determinação forte / fraca para o segundo segmento através da determinação do valor de sw5 utilizando a fórmula acima. Fazer a determinação forte / fraca para o primeiro e o segundo segmento pode ser menos complexo do que fazer / determinações fracas e fortes separadas para cada linha de amostras que cruza a borda de luma (isto é, i = 0 .. 7). Por exemplo, esta técnica pode reduzir uma série de cálculos para decidir se a aplicação de um filtro de desbloqueio forte ou fraco de 20-4 cálculos para seis cálculos.
[0191] Assim, no presente exemplo, o codificador de vídeo pode determinar, com base em uma terceira linha de amostras, i = 2, que atravessa a borda, se aplica um primeiro filtro de desbloqueio forte ou um primeiro filtro de desbloqueio fraco às amostras de luminância associadas com um primeiro segmento de borda. Além disso, o codificador de vídeo pode determinar, com base em uma sexta linha de amostras, i = 5, que cruza a borda, se aplica um Segundo filtro de desbloqueio forte ou um segundo filtro de desbloqueio fraco às amostras de luma associadas com o segundo segmento de borda. Os primeiro e segundo filtros de desbloqueio forte podem ser os mesmos ou diferentes. Do mesmo modo, os primeiro e segundo filtros de desbloqueio fracos podem ser iguais ou diferentes.
[0192] Como discutido acima, o codificador de vídeo pode determinar na etapa 364 da figura 8, se β e tc são iguais a zero. Se β é igual a zero e tc é igual a zero, o codificador de vídeo faz a determinação de aplicar o filtro de desbloqueio fraco. Por exemplo, 2(|p2i - 2*p1i + p0i| + |q0i - 2-q1i + q2i|) < (β / 4), (|p3i — p0i| + | q0i — q3i|) < (β / 8), and |p0i — q0i| < ((5* tc + 1) / 2) a partir da fórmula acima para avaliar falso quando β ou tc são iguais a zero. No entanto, se β é maior do que zero e tc é igual a zero, o codificador de vídeo pode determinar que uma condição de borda natural do filtro de desbloqueio fraco é falsa e o codificador de vídeo não aplica o filtro de desbloqueio fraco. Por exemplo, o filtro de luminância fraco pode incluir a linha Δ = Clip3( -tc, tc, Δ ). Se tc é igual a zero, Δ avalia para zero. Consequentemente, as linhas p0' = p0 + Δ e q0' = q0 - Δ do filtro de luma fraco não altera os valores de p0 e q0. Da mesma forma, o filtro de desbloqueio fraco não muda os valores de p1 ou q1 quando tc é igual a zero. Além disso, se uma borda é uma borda de croma e tc é igual a zero, o codificador de vídeo não necessita aplicar o filtro de desbloqueio à borda porque o de codificador de vídeo cipla de Δ a zero. Deste modo, determinando se β e tc são iguais a zero, antes de fazer a determinação de aplicar um filtro de desbloqueio forte ou fraco, a quantidade de computação que executa o codificador de vídeo pode ser reduzida. Em contraste, os codificadores de vídeo convencionais podem verificar decisões de liga / desliga para filtros de desbloqueio e realizar determinações de filtro de desbloqueio fraco / forte de bordas, mesmo quando β e tc são iguais a zero.
[0193] A figura 11 é um fluxograma que ilustra uma operação exemplar 400 para desbloquear bordas de croma de uma CU. Um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30, pode realizar operação de desbloqueio de borda de croma 400. Em outros exemplos, o codificador de vídeo pode utilizar outras operações diferentes da operação desbloqueio de borda de croma 400. Por exemplo, em outros exemplos, o codificador de vídeo pode executar uma operação de desbloqueio de borda de croma em que o codificador de vídeo executa mais, menos, ou diferentes etapas da operação de desbloqueio de borda de croma 400. Em outros exemplos, o codificador de vídeo pode executar as etapas da operação de desbloqueio de borda de croma 400 em ordens diferentes ou em paralelo .
[0194] Após o codificador de vídeo começar operação de desbloqueio de borda de croma 400, o codificador de vídeo pode determinar se o codificador de vídeo já selecionou a última borda de croma vertical associada com um bloco de vídeo de CU atual (402). O bloco de vídeo de CU atual pode ser um bloco de vídeo associado com uma CU que o codificador de vídeo está atualmente codificando (ou seja, a CU atual). A última borda de croma vertical pode ser uma borda de croma vertical final quando as bordas de croma verticais associadas ao bloco de vídeo de CU atual são sequenciadas da esquerda para a direita de acordo com uma ordem geométrica.
[0195] Em resposta a determinação de que o codificador de vídeo ainda não selecionou a última borda de croma vertical ("NÃO" de 402), o codificador de vídeo pode selecionar uma próxima borda de croma vertical associada com o bloco de vídeo de CU atual (404). A próxima borda de croma vertical pode ser a primeira borda de croma vertical associada com o bloco de vídeo de CU atual que o codificador de vídeo ainda não selecionou.
[0196] O codificador de vídeo pode, em seguida, executar uma operação de desbloqueio em amostras Cb associadas com a borda de croma vertical selecionada (406). Além disso, o codificador de vídeo pode executar uma operação de desbloqueio em amostras Cr associadas com a borda de croma vertical selecionada (408). Ao realizar as operações de desbloqueio nas amostras Cb e Cr da borda de croma vertical selecionada, o codificador de vídeo pode reduzir ou eliminar os artefatos de bloqueio associados com a borda de croma vertical selecionada. O codificador de vídeo pode realizar diversas operações de desbloqueio nas amostras Cb e Cr associadas com a borda de croma vertical selecionada. Por exemplo, o codificador de vídeo pode realizar a operação de desbloqueio exemplar da figura 12 em amostras de Cb e Cr da borda de croma vertical selecionada. Em outros exemplos, o codificador de vídeo pode executar operações de desbloqueio diferentes da operação de desbloqueio da figura 12 em amostras de Cb e Cr de borda de croma vertical selecionada.
[0197] Depois de realizar as operações de desbloqueio nas amostras Cb e Cr associadas com a borda de croma vertical selecionada, o codificador de vídeo pode determinar novamente se uma operação de desbloqueio tem sido aplicada a uma última borda de croma vertical associada com o bloco de vídeo de CU atual (402). Se não, o codificador de vídeo pode repetir as etapas 404-408 que dizem respeito a uma outra borda de croma vertical associada com o bloco de vídeo de CU atual. Deste modo, o codificador de vídeo pode executar operações de desbloqueio nas amostras Cb e Cr associadas com cada uma das bordas de croma verticais associadas ao bloco de vídeo de CU atual.
[0198] Em resposta a determinação de que uma operação de desbloqueio foi realizada em amostras de Cb e Cr da última borda de croma vertical associada com o bloco de vídeo de CU atual ("SIM" de 402), o codificador de vídeo pode determinar se uma última borda de croma horizontal associada com o bloco de vídeo de CU atual já foi selecionada (410). A última borda de croma horizontal pode ser a última borda de croma horizontal quando as bordas de croma horizontais associadas com o bloco de vídeo de CU atual são sequenciadas de cima para baixo de acordo com uma ordem geométrica.
[0199] Em resposta à determinação de que o codificador de vídeo ainda não realizou uma operação de desbloqueio na última borda de croma horizontal ("NÃO" de 410), o codificador de vídeo pode selecionar uma próxima borda de croma horizontal associada com o bloco de vídeo de CU atual (412). A próxima borda de croma horizontal pode ser a primeira borda de croma horizontal associada com o bloco de vídeo de CU atual em que uma operação de desbloqueio ainda não foi realizada. O codificador de vídeo pode, em seguida, executar uma operação de desbloqueio nas amostras Cb associadas com a borda de croma horizontal selecionada (414). Além disso, o codificador de vídeo pode executar uma operação de desbloqueio nas amostras Cr associadas com a borda de croma horizontal selecionada (416). Ao realizar a operação de desbloqueio nas amostras Cb e Cr associadas com a borda de luma horizontal selecionada, o codificador de vídeo pode reduzir ou eliminar os artefatos de bloqueio associados com a borda de croma horizontal selecionada. O codificador de vídeo pode realizar diversas operações de desbloqueio na borda de croma horizontal selecionada. Por exemplo, o codificador de vídeo pode realizar a operação de desbloqueio exemplar da figura 12 na borda de croma horizontal selecionada.
[0200] Após a realização da operação de desbloqueio nas amostras Cb e Cr associadas com a borda de croma horizontal selecionada, o codificador de vídeo pode determinar novamente se a última borda de croma horizontal já foi selecionada (410). Se não, o codificador de vídeo pode repetir as etapas 412-416 que dizem respeito a uma outra borda de croma horizontal associada com o bloco de vídeo de CU atual. No entanto, em resposta à determinação de que o codificador de vídeo já selecionou a última borda de croma horizontal associada ao bloco atual de vídeo CU ("SIM" de 410), o codificador de vídeo pode finalizar operação de desbloqueio de borda de croma 400. Deste modo, o codificador de vídeo pode executar operações de desbloqueio em cada uma das bordas de croma verticais e horizontais associadas com o bloco de vídeo de CU atual.
[0201] A figura 12 é um fluxograma que ilustra uma operação exemplar de desbloqueio 450 executada por um codificador de vídeo em amostras Cb ou Cr associadas com uma borda de croma individual. Um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30, pode realizar a operação de desbloqueio 450. Em outros exemplos, o codificador de vídeo pode utilizar outras operações de desbloqueio diferentes da operação 450. Por exemplo, em outros exemplos, o codificador de vídeo pode realizar um operação de desbloqueio na qual o codificador de vídeo realiza mais, menos ou diferentes etapas da operação de desbloqueio 450. Em outros exemplos, o codificador de vídeo pode executar as etapas de operação de desbloqueio 450 em ordens diferentes ou em paralelo.
[0202] Depois de iniciar a operação de desbloqueio 450, o codificador de vídeo pode determinar se a borda de croma está associada a uma fatia I (452). A borda de croma pode ser associada com uma fatia I se a borda de croma estiver associada com uma CU que está em uma fatia I. Em resposta à determinação de que a borda de croma não está associada a uma fatia I ("NÃO" de 452), o codificador de vídeo pode terminar a operação 450 com relação à borda de croma.
[0203] Em alguns exemplos, o codificador de vídeo armazena valores de resistência de fronteira em uma matriz que tem uma entrada para cada amostra de luma do bloco de vídeo associado a CU atual. A entrada associada a uma amostra de luma mais acima (para bordas verticais) ou uma mais à esquerda (para bordas horizontais) pode armazenar o valor de intensidade limítrofe associado a uma borda. O codificador de vídeo pode amostrar para baixo blocos de vídeo de crominância. Por exemplo, o maior tamanho de TU de um bloco de vídeo de luma é tipicamente 2Nx2N que o codificador de vídeo pode amostrar para baixo para um bloco de vídeo de croma NxN. Uma vez que o codificador de vídeo pode amostrar para baixo valores de croma em fatias P e fatias B, o número de amostras de croma associadas com a CU atual pode ser menor do que o número de amostras de luma associadas com a CU. Assim, para buscar o valor de limite relacionado com a força de uma borda de croma, o codificador de vídeo pode ser necessário calcular a posição da amostra de luminância que corresponde à amostra de croma superior ou mais à esquerda da borda de croma. O codificador de vídeo pode, então, usar a posição da amostra de luma correspondente para buscar o valor de intensidade limítrofe associado à borda de croma.
[0204] A determinação da posição da amostra de luma correspondente pode aumentar a complexidade do codificador de vídeo e reduzir o desempenho do codificador de vídeo. No entanto, o codificador de vídeo pode não amostrar para baixo amostras de croma nas fatias I. Assim, o codificador de vídeo pode não precisar de calcular a posição de uma amostra de luminância correspondente, se a borda de croma estiver associada a uma fatia I. Assim, verificando se a borda de croma está associada com uma fatia I e terminando a operação de desbloqueio 450, se a borda de croma não estiver associada com uma fatia I, o codificador de vídeo pode evitar a complexidade e custos de desempenho de cálculo da posição da amostra de luma correspondente quando a borda de croma não estiver associada com uma fatia I.
[0205] Em resposta à determinação de que a borda de croma está associada a uma fatia I ("SIM" de 452), o codificador de vídeo pode determinar um valor QP de desbloqueio (456). O codificador de vídeo pode determinar o valor QP de desbloqueio de um modo semelhante ao descrito acima no que diz respeito à figura 8.
[0206] Após a determinação do valor QP de desbloqueio, o codificador de vídeo pode identificar, com base no valor QP de desbloqueio e no valor de intensidade limítrofe relacionado com a borda de croma, um valor de Q para um limite tc (458). O codificador de vídeo pode, então, determinar um valor de tc com base no valor de Q para tc (460). O codificador de vídeo pode identificar o valor de Q para tc e o valor de tc de um modo semelhante ao descrito acima no que diz respeito à figura 8.
[0207] Após a determinação do valor de tc, o codificador de vídeo pode determinar se tc é igual a zero (462). Em resposta à determinação de que tc é igual a zero ("SIM" de 462), o codificador de vídeo pode terminar a operação de desbloqueio 450 em relação à borda de croma. De outro modo, em resposta à determinação de que tc não é igual a zero ("NÃO" de 462), o codificador de vídeo pode aplicar um filtro de desbloqueio às amostras associadas com a borda de croma (464). Se o codificador de vídeo está realizando a operação de desbloqueio 450 em relação a amostras Cb associadas com a borda de croma, o codificador de vídeo pode aplicar o filtro de desbloqueio às amostras Cb associadas com a borda de croma. Se o codificador de vídeo está realizando a operação de desbloqueio 450 em relação às amostras de Cr associadas com a borda de croma, o codificador de vídeo pode aplicar o filtro de desbloqueio às amostras de Cr associadas com a borda de croma. Após a aplicação do filtro de desbloqueio, o codificador de vídeo pode finalizar o filtro de desbloqueio 450 no que diz respeito à borda de croma.
[0208] O codificador de vídeo pode aplicar o filtro de desbloqueio de várias maneiras. Por exemplo, o codificador de vídeo pode aplicar o seguinte filtro de desbloqueio às amostras de croma: Δ = ( 4 * (q0 - p0 ) - ( q1 - pl ) + 4 ) / 8 Δ = Clip3 ( -tc, tc, Δ ) p0’ = Clip1C ( p0 + Δ ) q0’ = Clip1C ( q0 - Δ ) A função "Clip1c" acima clipa um valor para a profundidade de bits de amostras de croma.
[0209] Em um outro exemplo, o codificador de vídeo pode aplicar o seguinte filtro de desbloqueio às amostras de croma associadas com a borda de croma: Δ = ( 3 * (q0 - p0 ) - ( q1 - p1 ) + 4 ) / 8 Δ = Clip3 ( -tc, tc, Δ ) p0’ = Clip1C ( p0 + Δ ) q0’ = Clip1C ( q0 - Δ )
[0210] Em um outro exemplo, o codificador de vídeo pode aplicar o seguinte filtro de desbloqueio para as amostras de croma associadas com a borda de croma: Δ = ( 3 * (q0 - p0 ) - ( q1 - p1 ) + 4 ) / 8 Δ = Clip3 ( -tc, tc, Δ ) p0’ = Cliplc ( p0 + Δ ) q0’ = Cliplc ( q0 - Δ ) Este filtro de desbloqueio pode possuir uma ou mais vantagens sobre o filtro de desbloqueio do parágrafo anterior. Por exemplo, em contraste com o exemplo de filtro de desbloqueio do parágrafo anterior, este filtro de desbloqueio não ultrapassa a inclinação linear. Além disso, a utilização deste filtro de desbloqueio pode facilitar a reutilização de hardware para os filtros de luminância e de desbloqueio. Os filtros de desbloqueio de croma são descritos em mais detalhe em relação às figuras 13c e 13D.
[0211] As figuras 13A-13D são diagramas conceituais que ilustram exemplos de gráficos de valores de amostra. Nas figuras 13A-13D, os círculos pretos sólidos representam os valores originais das amostras em lados opostos de uma borda 500. Uma inclinação linear 502 indica uma linha reta a partir de uma primeira amostra para uma última amostra usada por um filtro de desbloqueio fraco.
[0212] Na figura 13B, os círculos cinzas representam os valores das amostras de luma após o codificador de vídeo aplicar o seguinte filtro de desbloqueio fraco às amostras de luma. Δ = ( 9 * ( qo - po ) - 3 * ( qi - pi ) + 8 ) / 16 Δ = clip3( -tc, tc, Δ ) po’ = po + Δ qo’ = qo - Δ Δp = clip3( - tc / 2, tc / 2, ( ( p2 + po + i ) / 2 - pi + Δ ) / 2 ) pi’ = pi + Δp Δq = Clip( - tc / 2, tc / 2, ( ( q2 + qo + 1 ) / 2 - qi - Δ ) / 2 ) qi’ = qi + Δq Tal como ilustrado na figura i3B, o filtro de desbloqueio fraco da figura i3B pode ajustar as amostras de luminância de uma forma que ultrapassa a inclinação linear 502. Ultrapassar a inclinação linear pode significar que o valor de Δ é muito grande, assim, potencialmente, cria um novo artefato visual que afeta negativamente a qualidade de imagem.
[0213] Na figura i3C, os círculos em cinza representam valores das amostras após o codificador de vídeo aplicar um filtro de desbloqueio fraco às amostras de croma. Δ = ( 4 * ( qo - po ) - ( qi - pi ) + 4 ) / 8 Δ = Clip3( -tc, tc, Δ ) po’ = po + Δ qo’ = qo - Δ Δp = Clip3( - tc / 2, tc / 2, ( ( p2 + po + i ) / 2 - pi + Δ ) / 2 ) pi’ = pi + Δp Δq = Clip( - tc / 2, tc / 2, ( ( q2 + qo + i ) / 2 - qi - Δ ) / 2 ) qi’ = qi + Δq Tal como ilustrado na figura i3C, o filtro de desbloqueio fraco de figura i3C pode ajustar as amostras de croma de uma forma que ultrapassa a inclinação linear 5o2.
[0214] Na figura 13D, os círculos em cinza representam os valores das amostras de croma após o codificador de vídeo aplicar um filtro de desbloqueio fraco diferente de amostras de croma. Δ = ( 3 * ( q0 - p0 ) - ( q1 - pl ) + 4 ) / 8 Δ = Clip3( -tc, tc, Δ ) p0’ = p0 + Δ q0’ = q0 - Δ Δp = Clip3( - tc / 2, tc / 2, ( ( p2 + p0 + 1 ) / 2 - p1 + Δ ) / 2 ) p1’ = p1 + Δp Δq = Clip( - tc / 2, tc / 2, ( ( q2 + q0 + 1 ) / 2 - q1 - Δ ) / 2 ) q1’ = q1 + Δq O filtro de desbloqueio fraco da figura 13D pode ajustar as amostras de croma de uma forma que ultrapassa a inclinação linear 502.
[0215] As figuras 14A-C são diagramas conceituais que ilustram exemplos de gráficos de valores da amostra. Nas figuras 14A-C, círculos pretos sólidos representam os valores originais das amostras de luma. As linhas verticais 550 indicam bordas que ocorrem nos limites entre os blocos de vídeo vizinhos. Uma vez que existem perfis de etapas ou descontinuidades de borda nos valores de amostras de luminância em lados diferentes de linhas 550, pode haver artefatos de bloqueio associados com as bordas.
[0216] A figura 14A ilustra os valores originais das amostras, antes da aplicação de um filtro de desbloqueio. A linha tracejada finamente 552 indica uma inclinação linear a partir de uma primeira amostra para uma última amostra. Os valores originais das amostras em cada lado das linhas 550 são lisos e planos. Assim, uma terceira parte da decisão forte / fraca, a verificação de descontinuidade de borda, pode determinar se aplica um filtro de desbloqueio forte ou fraco.
[0217] Na figura 14B, os círculos em cinza correspondem aos valores da amostra após o codificador de vídeo aplicar um filtro de desbloqueio fraco convencional às amostras de luma originais. O filtro de desbloqueio fraco pode ser expresso como: Δ = ( 9 * ( qo - po ) - 3 * ( qi - pi ) + 8 ) / 16 Δ = Clip3( -tc, tc, Δ ) po’ = po + Δ qo’ = qo - Δ Δp = Clip3( - tc / 2, tc / 2, ( ( p2 + po + i ) / 2 - pi + Δ ) / 2 ) pi’ = pi + Δp Δq = Clip( - tc / 2, tc / 2, ( ( q2 + qo + i ) / 2 - qi - Δ ) / 2 ) qi’ = qi + Δq Na figura i4B, o filtro de desbloqueio fraco modifica duas amostras em cada lado da borda devido à maciez em ambos os lados da borda.
[0218] Além disso, na figura i4B, os círculos brancos indicam valores de amostra após o codificador de vídeo aplicar um filtro de desbloqueio convencional forte às amostras de luma. O filtro de desbloqueio forte pode ser expresso como: p0’ = ( p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4 ) / 8 p1’ = ( p2 + p1 + p0 + q0 + 2 ) / 4 p2’ = ( 2*p3 + 3*p2 + p1 + p0 + q0 + 4 ) / 8 q0’ = ( p1 + 2*p0 + 2*q0 + 2*q1 + q2 + 4 ) / 8 q1’ = ( p0 + q0 + q1 + q2 + 2 ) / 4 q2’ = ( p0 + q0 + q1 + 3*q2 + 2*q3 + 4 ) / 8
[0219] Como mostrado na figura 14B, aplicar o filtro de desbloqueio forte pode modificar até três amostras de luminância em cada lado da borda. Da mesma forma que aplicar o filtro de desbloqueio fraco pode modificar até duas amostras de luminância em cada lado da borda. Além disso, como mostrado na figura 14B, a diferença entre a aplicação do filtro de desbloqueio forte da figura 14B e o filtro de desbloqueio fraco da figura 14B pode ser relativamente pequena. Isso pode significar que o filtro de desbloqueio fraco da figura 14B pode ser muito forte.
[0220] Na figura 14C, o codificador de vídeo tem aplicado o seguinte filtro de desbloqueio fraco às amostras de luma: Δ = ( 3 * ( q0 - p0 ) - ( q1 - pl ) + 4 ) / 8 Δ = Clip3( -tc, tc, Δ ) p0’ = p0 + Δ q0’ = q0 - Δ Δp = Clip3( - tc / 2, tc / 2, ( ( p2 + p0 + 1 ) / 2 - p1 + Δ ) / 2 ) p1’ = p1 + Δp Δq = Clip( — tc / 2, tc / 2, ( ( q2 + q0 + 1 ) / 2 — q1 — Δ ) / 2 ) q1’ = q1 + Δq Aplicar o filtro de desbloqueio fraco da figura 14C pode ser vantajoso sobre a aplicação do filtro de desbloqueio fraco da figura 14B, por várias razões. Por exemplo, se o codificador de vídeo selecionou o filtro fraco desbloqueio para a borda, uma verificação de descontinuidade de borda (por exemplo, | po,i - qo,i | < ((5* tc + 1) / 2) ) é falsa. Consequentemente, pode ser adequado para o filtro de desbloqueio fraco preservar algum do perfil da borda. Em contraste, o filtro de desbloqueio fraco da figura 14B pode suavizar as amostras em uma linha quase reta.
[0221] Em um outro exemplo, no filtro de desbloqueio fraco da figura 14C, o codificador de vídeo pode utilizar apenas uma única operação de multiplicação para calcular Δ e pode determinar, com base em Δ, valores modificados das amostras de luma associadas com a borda. Uma vez que o codificador de vídeo utiliza apenas uma única operação de multiplicação para calcular Δ, pode ser menos complexo computacionalmente para o codificador de vídeo calcular o valor de Δ no filtro de desbloqueio fraco da figura 14C do que o valor de Δ no filtro de desbloqueio fraco da figura 14B. O valor Δ pode indicar a força do filtro de desbloqueio fraco. Determinar o valor de Δ pode ser considerado uma terceira decisão de desbloqueio (depois de determinar se deve aplicar um filtro de desbloqueio e depois determinando se é necessário aplicar um filtro de desbloqueio forte ou fraco). Diferenças entre os valores de amostras (por exemplo, qo - po) podem ser descontinuidades de etapa.
[0222] Em alguns exemplos, o codificador de vídeo pode utilizar o filtro de desbloqueio fraco da figura 14C para amostras de croma, bem como amostras de luma. Como resultado, os valores de croma modificados não ultrapassam a inclinação linear. Além disso, porque o codificador de vídeo pode utilizar o mesmo filtro de desbloqueio fraco nas amostras de luminância e de crominância, o codificador de vídeo pode ser capaz de reutilizar o mesmo hardware para aplicar o filtro de desbloqueio fraco em ambas amostras de luminância e crominância.
[0223] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. Mídia legível por computador pode incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível, tal como mídia de armazenamento de dados ou meios 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. Deste modo, meios legíveis por computador podem geralmente corresponder a (1) meios de armazenamento legíveis por computador tangíveis que são não transitórios ou (2) um meio de comunicação tal como um sinal ou onda de portadora. Meios de armazenamento de dados podem ser qualquer meio de comunicação disponível, que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar as instruções, código, e/ou estruturas de dados para a execução das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[0224] A título de exemplo, e não como limitação, tais meios de armazenamento legíveis por computador podem incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético, ou outros dispositivos de armazenagem magnético, memória flash, ou qualquer outro meio que pode ser usado para armazenar o código de programa desejado, sob a forma de instruções ou estruturas de dados, e que pode ser acessado por um computador. Além disso, qualquer conexão é corretamente considerada um meio legível por computador. Por exemplo, se as instruções são transmitidas a partir de um site, servidor, ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, então, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. Deve ser entendido, no entanto, que meios de armazenamento legível por computador e meios de armazenamento de dados não incluem conexões, ondas de portadora, sinais, ou outros meios transientes, mas são em vez disso direcionados para meios de armazenamento reais não transitórios. Disco e disquete, como aqui utilizado, incluem disco compacto (CD), disco laser, disco óptico, disco digital versátil (DVD), disquete e disco Blu-ray, onde discos geralmente reproduzem dados magneticamente, enquanto que disquetes reproduzem dados opticamente com lasers. Combinações dos anteriores também devem ser incluídas no âmbito de meios legíveis por computador.
[0225] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASIC), arranjos de porta programáveis em campo (FPGA), ou outro equivalente integrado ou circuitos lógicos discretos. Por conseguinte, o termo "processador", tal como aqui utilizado pode referir-se a qualquer da estrutura anterior ou qualquer outra estrutura adequada para a aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de um hardware dedicado e/ou módulos de software configurados para a codificação e decodificação, ou incorporada em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0226] As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de circuitos integrados (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar os aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente de realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por um conjunto de unidades de hardware interoperativos, incluindo os um ou mais processadores, como descrito acima, em conjunto com o software e/ou firmware adequado.
[0227] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do âmbito das seguintes reivindicações.

Claims (15)

1. Método para codificar dados de vídeo, o método compreendendo: aplicar um ou mais filtros de desblocagem para amostras associadas com uma borda entre um primeiro bloco de vídeo e um segundo bloco de vídeo, o método caracterizado pelo fato de que os um ou mais filtros de desblocagem são aplicados às amostras associadas à borda, quando a borda está associada com um primeiro valor de intensidade limítrofe ou um segundo valor de intensidade limítrofe, mas não um terceiro valor de intensidade limítrofe, e o método compreendendo adicionalmente: associar, sem determinar se a borda entre um primeiro bloco de vídeo e um segundo bloco de vídeo é uma borda de unidade de codificação, CU, o primeiro valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo ou o segundo bloco de vídeo é associado com uma CU intra-predita; associar o segundo valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intra-predita e que o primeiro bloco de vídeo ou o segundo bloco de vídeo está associado com uma unidade de transformada, TU, com um nível de coeficiente de transformada não-zero; associar ou o segundo valor de intensidade limítrofe ou o terceiro valor de intensidade limítrofe com a borda quando o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intra-predita e o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma TU com um nível de coeficiente de transformada não-zero, em que o segundo valor de intensidade limítrofe está associado com a borda quando uma ou mais das condições adicionais a seguir são satisfeitas: o primeiro bloco de vídeo ou o segundo bloco de vídeo são associados com diferentes imagens de referência ou associados com diferentes números de vetores de movimento; o primeiro bloco de vídeo e o segundo bloco de vídeo são cada qual associado com um vetor de movimento e o valor absoluto da diferença entre componentes de dimensão horizontal dos vetores de movimento associados com o primeiro bloco de vídeo e o segundo bloco de vídeo é maior ou igual a um; o primeiro bloco de vídeo e o segundo bloco de vídeo são cada qual associado com um vetor de movimento e o valor absoluto da diferença entre componentes de dimensão vertical dos vetores de movimento associados com o primeiro bloco de vídeo e o segundo bloco de vídeo é maior ou igual a um; o primeiro bloco de vídeo e o segundo bloco de vídeo são cada qual associado com dois vetores de movimento e, para pelo menos um par dos vetores de movimento associados com o primeiro bloco de vídeo e o segundo bloco de vídeo, o valor absoluto da diferença entre componentes de dimensão horizontal dos vetores de movimento no par é maior ou igual a um; e o primeiro bloco de vídeo e o segundo bloco de vídeo são cada qual associado com dois vetores de movimento e, para pelo menos um par dos vetores de movimento associados com o primeiro bloco de vídeo e o segundo bloco de vídeo, o valor absoluto da diferença entre componentes de dimensão vertical dos vetores de movimento no par é maior ou igual a um.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro valor de intensidade limítrofe é igual a dois, o segundo valor de intensidade limítrofe é igual a um, e o terceiro valor de intensidade limítrofe é igual a zero.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que aplicar os um ou mais filtros de desblocagem compreende: aplicar um filtro de desblocagem para amostras croma associadas com a borda, quando a borda está associada com o primeiro valor de intensidade limítrofe; e aplicar um filtro de desblocagem para amostras luma associadas com a borda, quando a borda está associada com o primeiro valor de intensidade limítrofe ou o segundo valor de intensidade limítrofe.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que aplicar os filtros de desblocagem para as amostras luma associadas com a borda compreende: usar apenas uma única operação de multiplicação para calcular um valor delta, em que o cálculo compreende multiplicar uma descontinuidade de etapa através da borda por uma constante; e determinar, com base no valor delta, valores modificados das amostras luma associadas com a borda, em que determinar inclui respectivamente adicionar e subtrair o valor delta às amostras luma dos primeiro e segundo blocos de vídeo na borda.
5. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que: a borda são oito amostras luma em altura ou largura, as oito amostras luma divididas igualmente em um primeiro segmento de borda e um segundo segmento de borda, e o método compreende adicionalmente: determinar, com base em uma terceira linha de amostras que atravessa a borda, se aplica um primeiro filtro de desblocagem ou um segundo filtro de desblocagem em amostras luma associadas com o primeiro segmento de borda, em que o primeiro filtro de desblocagem modifica até três amostras luma em ambos os lados da borda e o segundo filtro de desblocagem modifica até duas amostras luma em ambos os lados da borda; e determinar, com base em uma sexta linha de amostras que atravessa a borda, se aplica um terceiro filtro de desblocagem ou um quarto filtro de desblocagem em amostras luma associadas com o segundo segmento de borda, em que o terceiro filtro de desblocagem modifica até três amostras luma em ambos os lados da borda e o quarto filtro de desblocagem modifica até duas amostras luma em ambos os lados da borda.
6. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que: a borda é uma borda croma; e o método compreende adicionalmente determinar se a borda croma está associada com uma fatia I, a borda croma estando associada com a fatia I se a borda croma estiver associada com uma CU que está na fatia I, e em que aplicar o filtro de desblocagem nas amostras croma associadas com a borda croma compreende aplicar o filtro de desblocagem nas amostras croma associadas com a borda croma apenas quando a borda croma estiver associada com a fatia I e a borda croma estiver associada com o primeiro valor de intensidade limítrofe.
7. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que compreende adicionalmente: identificar bordas de unidade de transformada, TU, e de unidade de predição, PU, de uma grade NxN, em que um tamanho de um bloco de vídeo de luminância é 2Nx2N ou maior; determinar se um bloco de vídeo croma tem um tamanho maior que N amostras por N amostras; em que aplicar o filtro de desblocagem em amostras croma compreende: aplicar, quando o bloco de vídeo croma tiver um tamanho menor ou igual a N amostras por N amostras, o filtro de desblocagem nas amostras croma associadas com a borda; e desativar, quando o bloco de vídeo croma tiver um tamanho maior que N amostras por N amostras, o filtro de desblocagem para bordas da grade que são internas ao bloco de vídeo croma.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende um método para decodificar vídeo, o método compreendendo adicionalmente: receber um fluxo de vídeo; gerar um bloco de vídeo predito e um bloco de vídeo residual com base em elementos de sintaxe no fluxo de bits; e gerar o primeiro bloco de vídeo com base no bloco de vídeo predito e no bloco de vídeo residual.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende um método para codificar vídeo, o método compreendendo adicionalmente: gerar, após aplicar os um ou mais filtros de desblocagem para as amostras associadas com a borda, um bloco de vídeo predito com base, pelo menos em parte, nas amostras associadas com a borda; e emitir um fluxo de bits que inclui um ou mais elementos de sintaxe cujos valores são baseados, pelo menos em parte, no bloco de vídeo predito.
10. Aparelho para codificar vídeo, compreendendo: meios para aplicar um ou mais filtros de desblocagem para amostras associadas com uma borda entre um primeiro bloco de vídeo e um segundo bloco de vídeo, o aparelho caracterizado pelo fato de que os um ou mais filtros de desblocagem são aplicados às amostras associadas à borda, quando a borda está associada com um primeiro valor de intensidade limítrofe ou um segundo valor de intensidade limítrofe, mas não um terceiro valor de intensidade limítrofe; e o aparelho para codificar vídeo compreendendo adicionalmente: meios para associar, sem determinar se a borda entre um primeiro bloco de vídeo e um segundo bloco de vídeo é uma borda de unidade de codificação, CU, o primeiro valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo ou o segundo bloco de vídeo é associado com uma CU intra-predita; meios para associar o segundo valor de intensidade limítrofe com a borda em resposta à determinação de que o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intra-predita e que o primeiro bloco de vídeo ou o segundo bloco de vídeo é associado com uma unidade de transformada, TU, com um nível de coeficiente de transformada não-zero; meios para associar o segundo valor de intensidade limítrofe ou o terceiro valor de intensidade limítrofe com a borda quando o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma CU intra-predita e o primeiro bloco de vídeo e o segundo bloco de vídeo não estão associados com uma TU com um nível de coeficiente de transformada não-zero, em que o segundo valor de intensidade limítrofe está associado com a borda quando uma ou mais das seguintes condições são satisfeitas: o primeiro bloco de vídeo e o segundo bloco de vídeo são associados com diferentes imagens de referência ou associados com diferentes números de vetores de movimento; o primeiro bloco de vídeo e o segundo bloco de vídeo são cada qual associado com um vetor de movimento e o valor absoluto da diferença entre componentes de dimensão horizontal dos vetores de movimento associados com o primeiro bloco de vídeo e o segundo bloco de vídeo é maior ou igual a um; o primeiro bloco de vídeo e o segundo bloco de vídeo são cada qual associado com um vetor de movimento e o valor absoluto da diferença entre componentes de dimensão vertical dos vetores de movimento associados com o primeiro bloco de vídeo e o segundo bloco de vídeo é maior ou igual a um; o primeiro bloco de vídeo e o segundo bloco de vídeo são cada qual associado com dois vetores de movimento e, para pelo menos um par dos vetores de movimento associados com o primeiro bloco de vídeo e o segundo bloco de vídeo, o valor absoluto da diferença entre componentes de dimensão horizontal dos vetores de movimento no par é maior ou igual a um; e o primeiro bloco de vídeo e o segundo bloco de vídeo são cada qual associado com dois vetores de movimento e, para pelo menos um par dos vetores de movimento associados com o primeiro bloco de vídeo e o segundo bloco de vídeo, o valor absoluto da diferença entre componentes de dimensão vertical dos vetores de movimento no par é maior ou igual a um.
11. Aparelho para codificar vídeo, de acordo com a reivindicação 10, caracterizado pelo fato de que compreende meios para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9.
12. Aparelho para codificar vídeo, de acordo com a reivindicação 10, caracterizado pelo fato de que compreende pelo menos um dentre: um circuito integrado; um microprocessador; ou um telefone sem fio.
13. Aparelho para codificar vídeo, de acordo com a reivindicação 12, caracterizado pelo fato de que compreende adicionalmente um display configurado para exibir dados de vídeo decodificado incluindo o primeiro bloco de vídeo.
14. Aparelho para codificar vídeo, de acordo com a reivindicação 12, caracterizado pelo fato de que compreende adicionalmente uma câmera configurada para capturar dados de vídeo.
15. Memória legível por computador, caracterizada pelo fato de que contém gravado na mesma o método conforme definido em qualquer uma das reivindicações 1 a 9.
BR112014009431-4A 2011-10-25 2012-10-24 Método para codificar dados de vídeo, aparelho para codificar vídeo e memória legível por computador BR112014009431B1 (pt)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201161551325P 2011-10-25 2011-10-25
US61/551,325 2011-10-25
US201161554887P 2011-11-02 2011-11-02
US61/554,887 2011-11-02
US201161579488P 2011-12-22 2011-12-22
US61/579,488 2011-12-22
US201261589143P 2012-01-20 2012-01-20
US61/589,143 2012-01-20
US13/532,610 US9167269B2 (en) 2011-10-25 2012-06-25 Determining boundary strength values for deblocking filtering for video coding
US13/532,610 2012-06-25
PCT/US2012/061693 WO2013063117A1 (en) 2011-10-25 2012-10-24 Determining boundary strength values for deblocking filtering for video coding

Publications (2)

Publication Number Publication Date
BR112014009431A2 BR112014009431A2 (pt) 2017-04-18
BR112014009431B1 true BR112014009431B1 (pt) 2022-10-11

Family

ID=48135968

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014009431-4A BR112014009431B1 (pt) 2011-10-25 2012-10-24 Método para codificar dados de vídeo, aparelho para codificar vídeo e memória legível por computador

Country Status (16)

Country Link
US (1) US9167269B2 (pt)
EP (2) EP3975557A1 (pt)
JP (1) JP5932049B2 (pt)
KR (1) KR101642205B1 (pt)
CN (1) CN103931185B (pt)
AU (1) AU2012328924C1 (pt)
BR (1) BR112014009431B1 (pt)
CA (1) CA2852533C (pt)
IL (1) IL232003A (pt)
IN (1) IN2014CN03177A (pt)
MY (1) MY166482A (pt)
RU (1) RU2586003C2 (pt)
SG (1) SG11201401379SA (pt)
TW (1) TWI499285B (pt)
WO (1) WO2013063117A1 (pt)
ZA (1) ZA201403807B (pt)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5859568B2 (ja) * 2011-03-10 2016-02-10 メディア テック シンガポール ピーティーイー.リミテッド 非ブロック化フィルタの方法と装置
CN103947208B (zh) * 2011-09-13 2017-07-07 寰发股份有限公司 减少解块滤波器的方法及装置
KR102350071B1 (ko) * 2011-11-04 2022-01-11 엘지전자 주식회사 영상 정보 인코딩/디코딩 방법 및 장치
RU2686007C2 (ru) * 2012-01-17 2019-04-23 Инфобридж Пте. Лтд. Способ применения краевого смещения
US9363516B2 (en) * 2012-01-19 2016-06-07 Qualcomm Incorporated Deblocking chroma data for video coding
US9591302B2 (en) * 2012-07-02 2017-03-07 Microsoft Technology Licensing, Llc Use of chroma quantization parameter offsets in deblocking
US9414054B2 (en) 2012-07-02 2016-08-09 Microsoft Technology Licensing, Llc Control and use of chroma quantization parameter values
JP6256340B2 (ja) * 2012-09-20 2018-01-10 ソニー株式会社 画像処理装置および方法、並びにプログラム
AU2013200051B2 (en) * 2013-01-04 2016-02-11 Canon Kabushiki Kaisha Method, apparatus and system for de-blocking video data
US9510002B2 (en) * 2013-09-09 2016-11-29 Apple Inc. Chroma quantization in video coding
FR3018417B1 (fr) * 2014-03-04 2017-07-28 Sagemcom Broadband Sas Procede de modification d'un flux video binaire.
AU2014202921B2 (en) * 2014-05-29 2017-02-02 Canon Kabushiki Kaisha Method, apparatus and system for de-blocking a block of video samples
US10142642B2 (en) * 2014-06-04 2018-11-27 Qualcomm Incorporated Block adaptive color-space conversion coding
WO2016050219A1 (en) 2014-09-30 2016-04-07 Mediatek Inc. Method of adaptive motion vetor resolution for video coding
US9832467B2 (en) * 2014-10-07 2017-11-28 Qualcomm Incorporated Deblock filtering for intra block copying
KR102294016B1 (ko) * 2014-12-05 2021-08-25 성균관대학교산학협력단 변환생략을 참조하는 디블록킹 필터링을 이용한 영상의 부호화/복호화 방법 및 이를 이용하는 장치
WO2016200115A1 (ko) * 2015-06-07 2016-12-15 엘지전자(주) 디블록킹 필터링을 수행하는 방법 및 장치
US20170078703A1 (en) * 2015-09-10 2017-03-16 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
WO2017045101A1 (en) * 2015-09-14 2017-03-23 Mediatek Singapore Pte. Ltd. Advanced deblocking filter in video coding
WO2017175898A1 (ko) * 2016-04-07 2017-10-12 엘지전자(주) 인트라 예측 필터링을 이용하여 비디오 신호를 인코딩, 디코딩하는 방법 및 장치
US11310495B2 (en) 2016-10-03 2022-04-19 Sharp Kabushiki Kaisha Systems and methods for applying deblocking filters to reconstructed video data
KR101985833B1 (ko) * 2017-03-22 2019-06-04 국방과학연구소 인루프 필터에 관한 영상 부호화 및 복호화 장치 및 방법
CN110249630B (zh) * 2017-03-23 2020-11-27 华为技术有限公司 去块效应滤波装置、方法和存储介质
US10638126B2 (en) * 2017-05-05 2020-04-28 Qualcomm Incorporated Intra reference filter for video coding
US11153607B2 (en) * 2018-01-29 2021-10-19 Mediatek Inc. Length-adaptive deblocking filtering in video coding
GB2571313B (en) 2018-02-23 2022-09-21 Canon Kk New sample sets and new down-sampling schemes for linear component sample prediction
SG11202009401YA (en) 2018-03-28 2020-10-29 Huawei Tech Co Ltd An image processing device and method for performing efficient deblocking
JP7294322B2 (ja) * 2018-03-29 2023-06-20 ソニーグループ株式会社 画像処理装置、及び画像処理方法
CN112119639B (zh) 2018-03-29 2024-03-12 艾锐势有限责任公司 用于对hdr内容进行去方块的系统和方法
CA3095549A1 (en) * 2018-03-30 2019-10-03 Sharp Kabushiki Kaisha Systems and methods for applying deblocking filters to reconstructed video data
GB2573798A (en) * 2018-05-17 2019-11-20 Canon Kk A filter
EP3794820A1 (en) * 2018-05-17 2021-03-24 Telefonaktiebolaget LM Ericsson (publ) Deblocking of implicit transform unit boundaries
EP3831073B1 (en) * 2018-08-10 2024-05-01 Huawei Technologies Co., Ltd. Apparatus and method for performing deblocking
EP3857897A4 (en) 2018-10-12 2022-03-23 Huawei Technologies Co., Ltd. DEVICE AND METHOD FOR DEBLOCKING FILTERS IN VIDEO ENCODING
US10939118B2 (en) * 2018-10-26 2021-03-02 Mediatek Inc. Luma-based chroma intra-prediction method that utilizes down-sampled luma samples derived from weighting and associated luma-based chroma intra-prediction apparatus
US11870984B2 (en) 2018-11-14 2024-01-09 Sharp Kabushiki Kaisha Systems and methods for applying deblocking filters to reconstructed video data
JP7418152B2 (ja) * 2018-12-17 2024-01-19 キヤノン株式会社 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法
US11044473B2 (en) * 2018-12-21 2021-06-22 Qualcomm Incorporated Adaptive loop filtering classification in video coding
WO2020141880A1 (ko) * 2019-01-02 2020-07-09 엘지전자 주식회사 영상 코딩 시스템에서 디블록킹 필터링을 사용하는 영상 디코딩 방법 및 장치
CN113545036B (zh) * 2019-03-02 2023-11-28 北京字节跳动网络技术有限公司 对环路内滤波的限制
US11394993B2 (en) * 2019-03-13 2022-07-19 Tencent America LLC Method and apparatus for affine inter prediction with small subblocks
US11284093B2 (en) * 2019-05-09 2022-03-22 Qualcomm Incorporated Affine linear weighted intra prediction in video coding
JP7271723B2 (ja) * 2019-05-11 2023-05-11 北京字節跳動網絡技術有限公司 ビデオコーディングのためのデブロッキングフィルタ
US11330298B2 (en) * 2019-06-25 2022-05-10 Qualcomm Incorporated Simplified intra chroma mode coding in video coding
WO2021023261A1 (en) * 2019-08-06 2021-02-11 Beijing Bytedance Network Technology Co., Ltd. Size restriction based on color format
CN113711603A (zh) * 2019-08-23 2021-11-26 华为技术有限公司 对使用联合色度译码的块执行色度去块效应滤波的编码器、解码器及对应方法
CN114270848A (zh) * 2019-08-23 2022-04-01 北京字节跳动网络技术有限公司 在去方块滤波中使用边界强度
BR112022003732A2 (pt) 2019-09-02 2022-10-11 Beijing Bytedance Network Tech Co Ltd Método e aparelho para processamento de dados de vídeo, e, meios de armazenamento e de gravação legíveis por computador não transitórios
WO2021056216A1 (zh) 2019-09-24 2021-04-01 Oppo广东移动通信有限公司 预测值的确定方法、编码器、解码器以及计算机存储介质
WO2021056219A1 (zh) * 2019-09-24 2021-04-01 北京大学 视频编解码的方法和装置
CN114762326B (zh) * 2020-01-21 2024-03-22 阿里巴巴集团控股有限公司 用于自适应分辨率视频编码的下一代环路滤波器实现

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7929610B2 (en) * 2001-03-26 2011-04-19 Sharp Kabushiki Kaisha Methods and systems for reducing blocking artifacts with reduced complexity for spatially-scalable video coding
US7450641B2 (en) * 2001-09-14 2008-11-11 Sharp Laboratories Of America, Inc. Adaptive filtering based upon boundary strength
US7227901B2 (en) * 2002-11-21 2007-06-05 Ub Video Inc. Low-complexity deblocking filter
US7496141B2 (en) * 2004-04-29 2009-02-24 Mediatek Incorporation Adaptive de-blocking filtering apparatus and method for MPEG video decoder
NO322722B1 (no) 2004-10-13 2006-12-04 Tandberg Telecom As Fremgangsmate for videokoding gjennom reduksjon av blokkartefakter
US7961963B2 (en) * 2005-03-18 2011-06-14 Sharp Laboratories Of America, Inc. Methods and systems for extended spatial scalability with picture-level adaptation
KR100678958B1 (ko) * 2005-07-29 2007-02-06 삼성전자주식회사 인트라 bl 모드를 고려한 디블록 필터링 방법, 및 상기방법을 이용하는 다 계층 비디오 인코더/디코더
KR100819289B1 (ko) * 2006-10-20 2008-04-02 삼성전자주식회사 영상 데이터의 디블록킹 필터링 방법 및 디블록킹 필터
KR100922275B1 (ko) * 2006-12-15 2009-10-15 경희대학교 산학협력단 경계 필터링 강도의 결정 방법 및 이를 이용한 디블록킹필터링 방법과 장치
CN100493196C (zh) 2007-07-27 2009-05-27 武汉大学 一种快速计算h.264视频标准中去块滤波边界强度值的方法
KR100973657B1 (ko) * 2007-11-01 2010-08-02 경희대학교 산학협력단 디블록킹 필터링을 포함하는 코덱 사이의 트랜스코딩 방법 및 장치
CN101212665B (zh) 2007-12-25 2012-01-25 海信集团有限公司 一种环路滤波方法
US20090245351A1 (en) * 2008-03-28 2009-10-01 Kabushiki Kaisha Toshiba Moving picture decoding apparatus and moving picture decoding method
US9143803B2 (en) 2009-01-15 2015-09-22 Qualcomm Incorporated Filter prediction based on activity metrics in video coding
TWI413415B (zh) * 2009-06-17 2013-10-21 Novatek Microelectronics Corp 以h264解方塊為基礎的多源過濾器以及多源過濾方法
US8537200B2 (en) 2009-10-23 2013-09-17 Qualcomm Incorporated Depth map generation techniques for conversion of 2D video data to 3D video data
JP5793511B2 (ja) 2010-02-05 2015-10-14 テレフオンアクチーボラゲット エル エム エリクソン(パブル) デブロッキングフィルタリング制御
US9185430B2 (en) 2010-03-15 2015-11-10 Mediatek Singapore Pte. Ltd. Deblocking filtering method and deblocking filter

Also Published As

Publication number Publication date
AU2012328924C1 (en) 2016-06-09
CN103931185B (zh) 2017-08-29
IL232003A (en) 2017-06-29
AU2012328924A1 (en) 2014-05-08
TWI499285B (zh) 2015-09-01
AU2012328924B2 (en) 2015-11-12
IL232003A0 (en) 2014-05-28
CN103931185A (zh) 2014-07-16
JP5932049B2 (ja) 2016-06-08
EP3975557A1 (en) 2022-03-30
SG11201401379SA (en) 2014-05-29
JP2014534733A (ja) 2014-12-18
KR101642205B1 (ko) 2016-07-22
RU2586003C2 (ru) 2016-06-10
BR112014009431A2 (pt) 2017-04-18
EP2772053A1 (en) 2014-09-03
KR20140085545A (ko) 2014-07-07
US20130101024A1 (en) 2013-04-25
US9167269B2 (en) 2015-10-20
TW201334544A (zh) 2013-08-16
CA2852533A1 (en) 2013-05-02
ZA201403807B (en) 2021-05-26
WO2013063117A1 (en) 2013-05-02
CA2852533C (en) 2017-01-03
MY166482A (en) 2018-06-27
IN2014CN03177A (pt) 2015-07-03
RU2014121089A (ru) 2015-12-10

Similar Documents

Publication Publication Date Title
BR112014009431B1 (pt) Método para codificar dados de vídeo, aparelho para codificar vídeo e memória legível por computador
TWI759389B (zh) 用於視訊寫碼之低複雜度符號預測
ES2927641T3 (es) Fusionar filtros para múltiples clases de bloques para codificación de video
US9161046B2 (en) Determining quantization parameters for deblocking filtering for video coding
CA2840618C (en) Derivation of the position in scan order of the last significant transform coefficient in video coding
KR101825262B1 (ko) B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한
JP6022586B2 (ja) ビデオコーディングのための隣接するビデオユニットの利用可能性の検出
WO2019135930A1 (en) Sign prediction in video coding
CA3063559A1 (en) Intra filtering applied together with transform processing in video coding
BR112019018464A2 (pt) indicador de filtragem intra na codificação de vídeo
BR112018006408B1 (pt) Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo
JP2018533261A (ja) 画像予測方法および装置
BR112016027428B1 (pt) Inicialização de paleta de preditor em codificação de vídeo com base em paleta
BR112016000863B1 (pt) Previsão residual de componente intercor
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
BR112013007563B1 (pt) Filtro de intra suavização para codificação de vídeo
BR112013032040B1 (pt) Método e aparelho para codificação de vídeo, e memória legível por computador
BR112013031006B1 (pt) Modelagem de contexto eficaz em memória
BR122019027914B1 (pt) aparelho para uma decodificação de deslocamento adaptativo de amostra (sao), método de uma codificação de deslocamento adaptativo de amostra (sao), e aparelho para uma codificação de deslocamento adaptativo de amostra (sao)
US9503751B2 (en) Method and apparatus for simplified depth coding with extended prediction modes
BR112021004124A2 (pt) método de decodificação de vídeo e decodificador de vídeo
EP3824628A1 (en) Transform variations of multiple separable transform selection
CN114731394A (zh) 用于视频编解码的角度帧内预测模式的位置相关帧内预测组合
KR20220127308A (ko) 비디오 코딩을 위한 방법 및 장치

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Ipc: H04N 19/82 (2014.01), H04N 19/117 (2014.01), H04N

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 24/10/2012, OBSERVADAS AS CONDICOES LEGAIS