BR112012012273B1 - sistema de decodificação e método para gerar um pixel decodificado - Google Patents

sistema de decodificação e método para gerar um pixel decodificado Download PDF

Info

Publication number
BR112012012273B1
BR112012012273B1 BR112012012273-8A BR112012012273A BR112012012273B1 BR 112012012273 B1 BR112012012273 B1 BR 112012012273B1 BR 112012012273 A BR112012012273 A BR 112012012273A BR 112012012273 B1 BR112012012273 B1 BR 112012012273B1
Authority
BR
Brazil
Prior art keywords
adder
operator
texel
output
bit
Prior art date
Application number
BR112012012273-8A
Other languages
English (en)
Other versions
BR112012012273A2 (pt
Inventor
Jacob Ström
Original Assignee
Telefonaktiebolaget Lm Ericsson (Publ)
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 Telefonaktiebolaget Lm Ericsson (Publ) filed Critical Telefonaktiebolaget Lm Ericsson (Publ)
Publication of BR112012012273A2 publication Critical patent/BR112012012273A2/pt
Publication of BR112012012273B1 publication Critical patent/BR112012012273B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods 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 pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction
    • 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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • 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/167Position within a video image, e.g. region of interest [ROI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Generation (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

SISTEMA DE DECODIFICAÇÃO Um sistema de decodificação (1) compreende diferentes N decodificadores (100, 200 ,300, 400), cada um tendo uma circuitaria única que é diferente das circuitarias dos outros N-l decodificadores. Cada um dos decodificadores (100, 200, 300, 400) gera pelo menos uma valor de texel baseado em um bloco de texel codificado inserido (40). Um seletor de valor (500) é configurado para extrair seletivamente pelo menos N valores de texel de pelo menos um dos decodificadores (100, 200, 300, 400) baseado na posição dos pelo manos N texels (30-36) em relação a um contorno de um bloco de texel (10) compreendendo pelo menos um dos pelo menos N texels (30-38). Um calculador de pixel (600) calcula um valor de pixel de um pixel decodificado baseado nos pelo menos N valores de texel selecionados do seletor de valor (500).

Description

CAMPO TÉCNICO
[001] A presente invenção refere-se genericamente a decodificação, e, em particular, a um sistema de decodificação e método operáveis em blocos de elemento de textura codificados.
FUNDAMENTO
[002] Ao tentar aumentar desempenho de unidades de processamento gráfico (GPUs), uma solução é aplicar várias técnicas para reduzir consumo de largura de banda de memória. A redução de largura de banda também vem tornando-se cada vez mais importante, à medida que uma taxa de crescimento de desempenho para potência de processamento é muito maior que uma taxa de crescimento de desempenho para largura de banda e latência para memória de acesso aleatório (RAM).
[003] A compressão de textura é um modo popular de reduzir exigências de largura de banda. Armazenando texturas em forma comprimida na memória e transferindo blocos de dados comprimidos pelo barramento, a largura de banda de textura é reduzida substancialmente.
[004] Atualmente, os sistemas de compressão de textura mais usados são DXTC [1] para Windows baseado em sistema e Xbox, e ETC [2] para aparelhos celulares. Estes dois sistemas dividem uma imagem, designada textura, em blocos de elemento de textura (texel) de 4 x 4 texels, e os dados de vermelho, verde, azul (RGB) dos texels em seguida são comprimidos de (8+8+8)x 16=384 bits para 64 bits. Assim, a cada bloco de texel é dado o mesmo número de bits. Isto é importante uma vez que o rasterizador usado na descompressão pode precisar acessar qualquer parte da textura, e precisa facilmente ser capaz de calcular o endereço de memória do bloco de texel. desejado. Em outras palavras, um codec de taxa fixa, ou seja, um codec onde cada bloco de texel assume a mesma quantidade de espaço de armazenamento, é muito desejável e é a norma atual entre algoritmos de compressão de textura.
[005] O desenvolvimento do decodificador ETC resultou no chamado decodificador ETC2 [3] com funcionalidade extra para manipular o chamado modo T, modo H e um modo PLANAR. O modo T e modo H são projetados para manipular blocos de texel com distribuição irregular de cor, e cores dispostas em dois grupos respectivamente. A circuitaria de hardware do decodificador ETC pode ser reutillizada em grande medida para englobar os modos T e H adicionais. O modo PLANAR é, entretanto, bem diferente do ETC e dos modos T e H, e é projetado para manipular blocos de texel com transições de cor suaves. A complexa circuitaria de hardware para o modo PLANAR implicaria que a complexidade do decodificador ETC2 aumentaria significativamente se comparada ao decodificador ETC.
[006] Existe, assim, uma necessidade de prover uma implementação eficiente do modo PLANAR e, em particular, um tipo de implementação que possa ser provida como implementação de hardware usando uma circuitaria com bom custo benefício. Esta circuitaria com bom custo benefício é, em particular, desejável se o modo PLANAR for para ser usado junto com o decodificador ETC e os modos T e H para formar o decodificador ETC2.
[007] Um problema similar encontra-se presente em geral dentro da arte, ou seja, existe uma necessidade geral de uma técnica que possa ser aplicada a um sistema de decodificação com a finalidade de reduzir a complexidade de implementação.
SUMÁRIO
[008] E um objetivo geral prover uma decodificação eficiente de blocos de texel codificados.
[009] E um objetivo particular prover uma estrutura de decodificação que possa ser implementada de modo eficiente em hardware.
[0010] Estes e outros objetivos são atendidos por modalidades conforme divulgadas neste documento.
[0011] Resumidamente, uma modalidade refere-se a um sistema de decodificação para gerar um pixel decodificado baseado em pelo menos um bloco de texel codificado. O sistema de decodificação compreende N decodificadores paralelos que são configurados para decodificar um bloco de texel codificado para gerar um ou mais valores de texel. De acordo com a modalidade, as circuitarias dos N decodificadores são diferentes se comparadas entre si, de modo que cada decodificador dos N decodificadores tem uma circuitaria única que é diferente da circuitaria dos outros N-l decodificadores. Isto possibilita que as circuitarias de decodificador tenham diferentes níveis de complexidades, uma vez que os decodificadores têm diferentes capacidades no que se refere às posições de texel dentro de um bloco de texel que eles podem manipular.
[0012] O sistema de decodificação também compreende um seletor de valor conectado aos N decodificadores e configurado para extrair seletivamente N valores de texel. Estes N valores de texel são extraídos ainda de um ou mais dos N decodificadores. Os valores de texel particulares a extrair e de qual decodificador(es) dependem da posição de um patch de N texels, tendo os N valores de texel em relação a um bloco de texel compreendendo pelo menos um dos N texels. Em outras palavras, a posição dos N texels em relação a contornos de bloco de texel de uma textura dita quais saídas de decodificador que são selecionadas pelo seletor de valor e ainda enviadas para um calculador de pixel. O calculador de pixel é configurado para calcular um valor de pixel decodificado baseado nos N valores de texel extraídos seletivamente pelo seletor de valor.
[0013] A escolha cuidadosa pelo seletor de valor possibilita projetar os decodificadores de modo que pelo menos alguns dos N decodificadores possam ter uma circuitaria menos complexa que os outros decodificadores. Isto é possível restringindo alguns dos decodificadores para serem capazes apenas de decodificar e extrair valores de texel para certas posições de texel dentro de um bloco de texel. Como consequência, os N decodificadores não precisam ter circuitarias idênticas, mas, em visível contraste, diferentes circuitarias com diferentes níveis de complexidade no que se refere às estruturas de hardware por circuitaria.
[0014] Uma modalidade define um método de gerar um pixel decodificando pelo menos um bloco de texel codificado. O método compreende extrair seletivamente N valores de texel de pelo menos um de N diferentes decodificadores, cada um tendo uma circuitaria que é única e diferente da circuitaria dos outros N-l decodificadores. Cada decodificador extrai ainda pelo menos um valor de texel baseado em um bloco de texel codificado inserido. A seleção de quais valores de texel provenientes dos N decodificadores usar para o cálculo do valor de pixel do pixel a decodificar é realizada com base na posição dos Ntexels associados com os N valores de texel em relação ao contorno de um bloco de texel. Os N valores de texel selecionados são então usados para calcular o valor de pixel.
[0015] As modalidades possibilitam uma implementação de uma estrutura de decodificação de pixel reduzindo a complexidade necessária para pelo menos alguns dos decodificadores paralelos. A complexidade total da estrutura de decodificação é, desse modo, reduzida, se comparada a ter N decodificadores paralelos como da arte anterior.
BREVE DESCRIÇÃO DOS DESENHOS
[0016] A invenção, juntamente com outros objetos e vantagens da mesma, podem ser mais bem compreendidos fazendo-se referência à descrição a seguir tomada juntamente com os desenhos anexos, em que: As figs. IA a ID ilustram diferentes posições de um patch bilinear em relação a borda_de bloco de texel; A fig. 2 é uma visão geral esquemática de uma disposição de decodificação compreendendo um sistema de decodificação de acordo com uma modalidade; A fig. 3 é uma ilustração de um sistema de decodificação de acordo com uma modalidade; A fig. 4 ilustra esquematicamente um bloco de texel codificado de acordo com uma modalidade; A fig. 5 ilustra o conceito de empregar uma aproximação planar de valores de propriedade de texel em um bloco de texel; A fig. 6 é um exemplo quarto decodificador da fig- 3; A fig. 7 é um exemplo terceiro decodificador da fig- 3; A fig. 8 é um exemplo segundo decodificador da fig- 3; A fig. 9 é um exemplo primeiro decodificador da fig. 3; A fig- 10 é um exemplo de implementação de hardware de um extensor de sete a oito bits; A fig. 11 é uma implementação de hardware de um prendedor; A fig- 12 é outra implementação de hardware de um prendedor; A fig- 13 é um exemplo de implementação de hardware do seletor de valor da fig- 3; A fig- 14 é um diagrama de fluxo ilustrando um método de decodificação de acordo com uma modalidade.
DESCRIÇÃO DETALHADA
[0017] Por todos os desenhos, os mesmos números de referência são usados para elementos similares ou correspondentes.
[0018] As modalidades referem-se genericamente a decodificação ou decomposição de blocos de elemento de textura (texel) para os fins de gerar valores de pixel decodificados.
[0019] A decodificação é bem adaptada para uso com gráficos tridimensionais (3D), tais como jogos, mapas e cenas em 3D, mensagens em 3D, por exemplo, mensagens animadas, protetores de tela, interfaces homem- máquina (MMIs), etc., mas não está limitada a estes. Assim, as modalidades também poderiam ser empregadas para decodificar outros tipos de imagens ou gráficos, por exemplo, imagens unidimensionais (1D), bidimensionais (2D) ou imagens 3D.
[0020] Um processo de renderização de gráfico 3D tipicamente compreende três subestágios. Resumidamente, um primeiro estágio, o estágio de aplicação, cria diversos triângulos. Os vértices destes triângulos são transformados, projetados e iluminados em um segundo estágio, o estágio de geometria. Em um terceiro estágio, o estágio de rasterização, imagens, com frequência designadas texturas, podem ser "coladas" nos triângulos, aumentando o realismo da imagem renderizada. O terceiro estágio também realiza classificação usando um buffer Z.
[0021] No entanto, renderização de texturas, e, em particular, imagens e gráficos 3D, é uma tarefa computacionalmente dispendiosa no que se refere a largura de banda de memória e potência de processamento requerida para os sistemas gráficos. Por exemplo, texturas são caras tanto no que se refere a memória, as texturas precisam ser colocadas em memória interna veloz de processador, e no que se refere a largura de banda de memória, uma textura pode ser acessada diversas vezes para desenhar um único pixel. Igualmente, múltiplas texturas por vezes podem ser necessárias para desenhar um pixel.
[0022] A fim de reduzir as exigências de largura de banda e potência de processamento, um método de codificação de textura ou sistema é tipicamente empregado. Um sistema de codificação como este resultaria em uso mais eficiente de memória interna ao processador cara e menor largura de banda de memória durante renderização e, assim, em menor consumo de energia e/ou renderização mais rápida. Esta redução em exigências de largura de banda e potência de processamento é particularmente importante para aparelhos de pequeno porte, tais como unidades e aparelhos celulares, com uma pequena quantidade de memória, pouca largura de banda de memória e energia limitada, ou seja, alimentados por baterias.
[0023] Na arte, texturas são divididas em chamados blocos de texel, cada um compreendendo um número de texels. Este tipo de bloco de texel é tipicamente retangular ou quadrático, tal como um tamanho de texels MRXMC, onde MR, Mc são números inteiros positivos, com a condição de que tanto MR e Mc não são simultaneamente um. Preferencialmente, MR=2IHR e Mc=2mc, onde mR, mc são números inteiros positivos. Em uma implementação típica MR = MC e modalidades preferidas deste bloco poderiam ser texels 4x4.
[0024] No estado da arte, pixel ou elemento de imagem é, por vezes, empregado para denotar um elemento de textura de uma textura. Na descrição a seguir, texel é empregado, entretanto, para designar um elemento de textura de uma textura, e pixel é usado para designar um elemento de imagem gerado a partir destes texels com relação a rasterização.
[0025] Um texel está associado a um valor de texel, e um pixel está associado a um valor de pixel. Os valores de texel e pixel podem ser vantajosamente valores de cor. Um valor de cor pode ser representado em vários formatos de cor, tais como cor vermelha, verde, azul (RGB) ou como luminância e crominância. Ademais, um valor de texel poderia representar outras propriedades de um texel, tais como valor normal ou Z. Na descrição a seguir, um valor de texel está exemplificado de_modo não limitado como um valor de cor.
[0026] Um rasterizador típico não acessa a textura um único texel por vez. Em vez disso, uma pequena vizinhança de texels é empregada, tais como texels 2x2. Por exemplo, durante filtragem bilinear, quarto destes texels vizinhos são lidos para produzir um valor filtrado bilinearmente, ou seja, um valor de pixel. Na arte, esse grupo de texels vizinhos coprocessados a fim de gerar um valor de pixel é tipicamente designado patch. Daí, um grupo de texel 2x2 empregado em filtragem bilinear é designado um patch bilinear. Este conceito pode ser estendido mais, por exemplo, para filtragem trilinear. A filtragem trilinear usa dois pacthes bilineares de dois diferentes mipmaps. Um problema com manuseio de patches de texels é que os texels em um patch podem estender-se por mais de um bloco de texel. Isto está esquematicamente ilustrado nas figs. 1A a ID. A fig. 1A ilustra o caso onde um patch bilinear 20 de quatro texels 30-36 são encontrados em um único bloco de texel 10. As figs. IB e 1C ilustram outra situação onde o patch bilinear 20 estende-se por dois blocos de pixel 10, 12, 14, seja presentes lado a lado (Fig. IB) ou no topo de cada um deles (Fig. 1C). O caso extremo é retratado na fig. 1 D, com um texel 30-36 do patch bilinear 20 em um bloco de texel respectivo 10-16.
[0027] A forma tradicional de resolver este problema é usar quatro decodificadores idênticos, cada um dos quais designa um texel predeterminado no patch bilinear. Por exemplo, no caso da fig. 1 A, o bloco de texel codificado representando o bloco de texel 10 é inserido nos quatro decodificadores. O primeiro decodificador extrai texel (1, 2) 30, texel (2, 2) é obtido do segundo decodificador com o terceiro e quarto decodificadores gerando texel (1, 3) e (2, 3) 36 do patch bilinear, respectivamente. Um sistema de coordenada em que a origem está no texel superior esquerdo do bloco de texel 10 é assumida. Na fig. 1 D, o bloco de texel codificado do bloco de texel 10 é inserido no primeiro decodificador para gerar texel (3, 3) 10, o bloco de texel codificado do bloco de texel 12 é processado pelo segundo decodificador para obter texel (0, 3) 32. O texel (3, 0) 34 é obtido do terceiro decodificador baseado no bloco de texel codificado para o bloco de texel 14, e o quarto decodificador extrai o texel (0, 0) 36 do bloco de texel codificado do bloco de texel 16.
[0028] Deste modo, é possível, por conseguinte, produzir um patch bilinear 2x2 a cada ciclo de relógio não importando qual tipo de configuração (Figs. 1A-1D) é encontrado. Hardware de rasterização de alto desempenho produz dois destes patches bilineares por ciclo de relógio para possibilitar filtragem trilinear. No entanto, neste caso oito decodificadores idênticos são necessários de acordo com as técnicas da arte anterior.
[0029] O conceito de texels de co-processamento em decodificadores paralelos, no entanto, aumenta dramaticamente a complexidade do sistema de decodificação, o que é um problema para aparelhos de pequeno porte. Por exemplo, adicionar o modo PLANAR previamente mencionado ao sistema de decodificação ETC, poderia levar a um aumento de complexidade, definido como o número de adicionadores, de 6 adicionadores para 21_adicionadores [3] por decodificador. Assim, o PLANAR usa 3.5 mais adicionadores que ETC, e a complexidade do sistema de decodificação tendo quatro decodificadores ETC e quatro decodificadores PLANAR aumentaria com 3.5.
[0030] As modalidades conforme divulgadas aqui reduzem a complexidade de um sistema de decodificação que não utiliza decodificadores paralelos idênticos. Em nítido contraste, diferente circuitaria de decodificador pode ser usada para os decodificadores se os decodificadores são projetados para manipular número diferente de texels e posições de texel diferentes com um patch.
[0031] Em uma modalidade geral, o sistema de decodificação compreende N diferentes decodificadores. Esse tipo de sistema de decodificação 1 está ilustrado na fig. 3, N exemplificado como quatro. Em uma modalidade geral N é um número inteiro igual a ou maior que dois, preferencialmente igual a quatro. Cada decodificador 100, 200, 300, 400 tem uma circuitaria que é diferente da circuitaria dos outros N-l decodificadores. Assim, o sistema de decodificação 1 não compreende decodificadores idênticos como na arte anterior, mas, em nítido contraste, diferentes decodificadores 100, 200, 300, 400 com diferentes circuitarias individuais. A diferença em circuitarias dos N decodificadores 100, 200, 300, 400 implica em que a combinação dos elementos de circuito de um dos decodificadores é diferente da combinação dos elementos de circuito nos outros decodificadores. Os decodificadores 100, 200, 300, 400, por conseguinte, têm custo de implementação e complexidade diferentes.
[0032] Cada decodificador 100, 200, 300, 400 é configurado ainda para decodificar um bloco de texel codificado para gerar pelo menos um valor de texel. O sistema de decodificação 1 também compreende um seletor de valor 500 conectado aos N decodificadores 100, 200, 300, 400 e configurado para extrair seletivamente pelo menos N valores de texel, preferencialmente N valores de texel. Estes pelo menos N valores de texel são extraídos de pelo menos um dos N decodificadores 100, 200, 300, 400. Adicionalmente, o seletor de valor 500 seleciona quais pelo menos N valores de texel e de qual decodificador(es) os valores de texel devem ser extraídos baseado nas posições dos pelo menos N texels associados aos pelo menos N valores de texel em relação a um contorno de um bloco de texel compreendendo pelo menos um dos A texels. Assim, as posições dos A texels, o valor de texel dos quais deve ser gerado pelo sistema de decodificação 1, em relação a um bloco de texel determina de qual decodificador ou de quais decodificadores dos A decodificadores 100, 200, 300, 400, os valores de texel devem ser buscados. Um calculador de pixel 600 do sistema de decodificação 1 é conectado ao seletor de valor 500 e é configurado para calcular um valor de pixel decodificado de um pixel decodificado baseado nos pelo menos A valores de texel seletivamente extraídos pelo seletor de valor 500.
[0033] A modalidade geral atinge uma redução de complexidade dos decodificadores 100, 200, 300, 400 limitando alguns dos decodificadores a apenas serem capazes para manipular texels a certas posições de texel dentro de um bloco de texel. Como consequência, a circuitaria destes decodificadores 100, 200, 300, 400 pode ser reduzida significativamente, se comparada ao caso da arte anterior apresentando estas restrições nos decodificadores.
[0034] Em uma modalidade preferida, o primeiro decodificador 100 dos N decodificadores 100, 200, 300, 400 é configurado para decodificar um bloco de texel codificado inserido para gerar N valores de texel. O seletor de valor 500 é então configurado para extrair seletivamente estes N valores de texel do primeiro decodificador 100 e ainda para o calculador de pixel 500 se os N texels estão posicionados dentro os contornos de um bloco de texel. A fig. IA ilustra este caso com N=4. Assim, se os quatro texels 30-36 de um patch bilinear 20 estão todos posicionados dentro de um único bloco de texel 10, os quatro valores de texels são todos gerados pelo primeiro decodificador 100. Isto significa que qualquer saída dos outros decodificadores 200, 300, 400 não é selecionada pelo seletor de valor 500 nem usada pelo calculador de pixel 600 para calcular um valor de pixel decodificado.
[0035] Se metade dos N texels 30, 34 (30, 32) estão posicionados dentro dos contornos de um bloco de texel 10 e a metade restante dos N texels 32, 36 (34, 36) estão posicionados dentro dos contornos de um bloco de pixel vizinho 12 (14), ver fig. IB (Fig. 1C), o seletor de valor 500 é preferencialmente configurado para extrair seletivamente metade dos N valores de texel do primeiro decodificador 100 e a metade restante dos A valores de texel do segundo decodificador 200.
[0036] Em uma modalidade preferida com N = 4 o primeiro decodificador 100 tem uma primeira circuitaria configurada para designar um bloco de texel codificado inserido para gerar quatro valores de texel. O segundo decodificador 200 tem uma segunda circuitaria e extrai dois valores de texel baseado em um bloco de texel codificado inserido. O terceiro 300 e quarto 400 decodificadores compreendem uma terceira circuitaria e uma quarta circuitaria, respectivamente. Cada um dos terceiro 300 e quarto 400 decodificadores extrai um valor de texel único dado de um bloco de texel codificado inserido.
[0037] Na situação ilustrada na fig. 1D, preferencialmente todos os quatro decodificadores 100, 200, 300, 400 extraem valores de texel que são selecionados pelo seletor de valor 500. Assim, o seletor de valor 500 é então configurado para extrair seletivamente um primeiro valor de texel do primeiro decodificador 100, um segundo valor de texel do segundo decodificador 200, um terceiro valor de texel do terceiro decodificador 300 e, finalmente, um quarto valor de texel do quarto decodificador 400. Neste caso cada um dos quarto texels 3036 é posicionado dentro de um bloco de texel respectivo 10- 16.
[0038] A fig. 2 ilustra esquematicamente uma estrutura de implementação com um sistema de decodificação 1 de acordo com uma modalidade. A estrutura compreende uma memória 5, tipicamente uma RAM, tendo locais de memória compreendendo blocos de texel codificados 40. Uma unidade de processamento gráfico (GPU) 4 é conectada à memória 5 através de um barramento de memória. A GPU 4 inclui identificador de bloco de texel 2 para identificar um bloco de texel, o bloco codificado do mesmo 40 deve ser buscado da memória 5. O identificador de bloco de texel 2 basicamente calcula o endereço do bloco de texel codificado 40 na memória 5 e envia um pedido de acesso a memória através do barramento para a memória 5. O bloco de texel codificado 40 presente na posição de memória designada ou dedicada ao bloco de texel é lido da memória 5 e transferido pelo barramento para o sistema de decodificação 1 ou para um cache 3 da GPU 4.
[0039] O sistema de decodificação 1 compreende ou está conectado a pelo menos um cache 3 tendo posições de ou áreas para armazenar blocos de texel codificados ou valores de texel decodificados. Em uma modalidade alternativa, uma GPU 4 poderia compreender múltiplos caches 3, tais como um cache de textura cache buffer de cor. A GPU 4 é tipicamente conectada a uma tela de exibição 6, na qual uma imagem decodificada é exibida.
[0040] A GPU 4 e suas unidades incluídas 1,2,3 podem ser providas em um ou mais chips, por exemplo, de um cartão gráfico, cartão de vídeo ou uma placa-mãe. A estrutura de implementação da fig. 2 pode ser implementada em qualquer imagem ou unidade de processamento de textura ou dispositivo incluindo, por exemplo, um computador, um game console, um dispositivo portátil, tal como um telefone móvel ou dispositivo de processamento de mídia.
[0041] A seguir, modalidades do sistema de decodificação serão descritas mais detalhadamente com relação a diferentes exemplos de implementação. Estes exemplos são ainda projetados para serem adequados para manipular blocos de texel codificados de acordo com modo PLANAR descrito em [3, 4], Resumidamente, o modo PLANAR é desenhado para manipular blocos de texel com crominâncias suavemente variáveis. O modo PLANAR aproxima os componentes de cor (vermelho, verde, azul) no bloco de texel com uma aproximação planar. A fim de especificar um plano, é suficiente especificar as cores em três localizações no bloco de texel. A fig. 5 ilustra este conceito com três componentes vermelho Ro, RH e Rv em certas posições em relação a um bloco de texel 10. Com este posicionamento dos três componentes vermelhos o componente vermelho pode ser calculado em qualquer lugar no bloco de texel 10 usando a seguinte equação:
Figure img0001
[0042] Os componentes azul e verde são calculados da mesma forma que o componente vermelho. Um bloco de texel codificado 40 conforme ilustrado na fig. 4, por conseguinte,_compreende três palavras código de cor 41-49 por componente de cor, ou seja, Xo, XH e Xv, onde X é R para o componente vermelho, G para o componente verde e B pai a o componente azul. Em uma implementação preferida, seis bits são preferencialmente gastos em cada uma das palavras código vermelho 41-43 e as palavras código azul 47-49 e sete bits para cada uma das palavras código verde 44-46, uma vez que o olho humano é mais sensível ao componente verde se comparado aos componentes vermelho e azul. O tamanho total do bloco de texel codificado será 57 bits, que se adapta exatamente no modo de 57 bits de ETC2 [3], Se o modo PLANAR for usado independente e não como um modo especial para ETC, o bloco de texel codificado 40 gasta vantajosamente sete bits para todos, com exceção uma das palavras código de cor 41-47, tal como Go , que, em vez disso, é de oito bits. O tamanho total será então de 64 bits.
[0043] Em uma implementação em modo PLANAR, o primeiro decodificador 100 da fig. 3 pode decodificar qualquer patch bilinear 2x2 que tem todos os quatro texels dentro do bloco de texel, ver fig. IA. O segundo decodificador 200 é menos avançado e produz valores de texel para texels na primeira fileira ou a primeira coluna de um bloco de texel, ver texel 32, 36 na fig. 1B e texels 34, 36 na fig. 1C. O segundo decodificador 200, por conseguinte, referencialmente extrai dois valores de texel de uma vez, seja um patch 2x1 ou um patch 1x2. O terceiro decodificador 300 decodifica um bloco de texel codificado para gerar um único valor de pixel, preferencialmente, um à direita superior em coordenada (3, 0), ver texel 34 na fig. 1D. O quarto decodificador 400 também preferencialmente extrai um único valor de texel do texel original (0, 0), ver texel 36 na fig. 1D.
[0044] Isto significa que se todos os texels 30-36 de um patch bilinear 20 estão dentro do contorno de um bloco de texel 10 como na fig. IA, a saída do primeiro decodificador 100 é selecionada pelo seletor de valor 500. Se dois texels 30, 34 (30, 32) estão em um bloco de texel 10 e dois 32, 36 (34, 36) estão em um bloco de texel vizinho 12 (14) como nas figs. IB e 1C, os valores de texel dos dois texels da esquerda 30, 34 ou superior 30, 32 são obtidos do primeiro decodificador 100 e os valores de texel dos dois texels da direita 32, 36 ou inferior 34, 36 vêm do segundo decodificador 200. Finalmente, se todos os quarto texels 30-36 estão em blocos de texel diferentes 10-16, como na fig. 1D, o seletor de valor 500 seleciona o valor de texel para o texel superior esquerdo 30 do primeiro decodificador 100, o valor de texel para o texel superior direito 32 do segundo decodificador 200, o valor de texel para o texel inferior direito 34 do terceiro decodificador 300 e o valor de texel para o texel inferior esquerdo 36 do quarto decodificador 400. Deste modo todos os quarto texels 30-36 de um patch bilinear 20 podem ser obtidos em um único ciclo de relógio, com a vantagem de que o segundo ao quarto decodificadores 200, 300, 400 podem ser implementados usando muito pouco hardware.
[0045] Da equação
Figure img0002
segue-se que o texel na origem (0, 0) é especialmente simples de calcular
Figure img0003
[0046] Como discutido acima, o quarto decodificador é preferencialmente configurado para somente decodificar texels na origem. Isto significa que a circuitaria do quarto decodificador pode ser confeccionada extremamente simples. A fig. 6 ilustra a circuitaria do quarto decodificador 400 para um dos componentes de cor. Como é visto a partir da figura, a única estrutura é um extensor opcional, mas preferido 480 que é configurado para estender a primeira palavra-código de cor de entrada Xo para um comprimento de bit definido, preferencialmente, oito bits. Como é discutido adicionalmente aqui com relação à fig. 10, este tipo de extensor 480 pode ser implementado sem quaisquer estruturas de hardware e, em vez disso, apenas com cabos a partir dos quais os respectivos componentes de cor são armazenados para a saída do quarto decodificador 400.
[0047] Por conseguinte, o quarto decodificador 400 pode ser implementado sem quaisquer portas.
[0048] O terceiro decodificador 300, de acordo com a abordagem acima, deve, preferencialmente, manipular taxeis na posição (3,0):
Figure img0004
[0049] O último termo não contribui e pode ser removido. A fim de remover o operador redondo (), o resultado pode ser calculado em unidades de (1/4), adicionar dois e deslocar duas vezes para direita, indicado por »2: X(3,0) = ((Xo « 2) + (XH— X0)X 3 + 2) » 2
[0050] A multiplicação por três pode ser trocada adicionando o número para uma versão deslocada de si mesmo: 3t = 2t + t = (t « i) + t com t = XH - Xo. A equação pode, por conseguinte, ser escrita como X(3,0) = ((Xo « +(t« 1)+ t + 2) » 2.
[0051] Em cada adicionador, existe a possibilidade de adicionar 1 fixando transporte = 1 em vez de O. Daí, a adição de 2 pode ser substituída mudando os dois adicionadores deste modo. Na equação abaixo +! é usado para indicar um adicionador tendo transporte fixado em 1: X(3,0) = ((Xo « 2)+!(t« l)+!t)» 2 . Expressado diferentemente
Figure img0005
[0052] Em similaridade ao acima, a equação pode ser escrita como X(3,0)= (Xo+!((X H«1 )+! XH)) » 2 . Esta expressão é mais facilmente implementada em hardware se comparada àquela apresentada acima.
[0053] Os operadores de deslocamento podem ser implementados conectando diferentemente cabos. As únicas operações restantes que precisam calcular X(3,0) são três adições.
[0054] A fig. 7 ilustra uma modalidade da circuitaria do terceiro decodificador 300. O terceiro decodificador 300 compreende um operador de deslocamento para a esquerda 310 para deslocar a segunda palavra-código de cor XH uma posição de bit para a esquerda para obter uma sequência de bits deslocada para a esquerda. O operador de deslocamento para a esquerda 310 é conectado a um primeiro adicionador 320 tendo transporte fixado em 1. Este primeiro adicionador 320 adiciona a sequência de bits deslocada para a esquerda à segunda palavra-código de cor XH. A saída resultante é adicionada à primeira palavra-código de cor Xo em um segundo adicionador 322 tendo transporte fixado em 1 e sendo conectado ao primeiro adicionador 320. Finalmente, o segundo adicionador 322 é conectado a um operador de deslocamento para a direita 330 configurado para deslocar a sequência de bits correspondente à saída do segundo adicionador 322 duas posições de bit para a direita para formar a saída final de terceiro decodificador 300, ou seja, o valor de taxei X(3,0).
[0055] Em uma modalidade opcional, mas preferida, a primeira palavra-código de cor X0 e a segunda palavra-código de cor XH são preferencialmente primeiro estendidas ou expandidas de seis ou sete bits em oito bits. Como uma consequência, um primeiro extensor 380 é preferencialmente disposto conectado ao segundo adicionador 322 e configurado para estender a primeira palavra-código de cor Xo em um tamanho de bit predefinido, preferencialmente, oito bits. Um segundo extensor 382 é preferencialmente disposto conectado ao operador de deslocamento para a esquerda 310 e o primeiro adicionador 320 e é configurado para estender ou expandir a segunda palavra-código de cor XH no tamanho de bit preferido, ou seja, preferencialmente, oito bits.
[0056] Um extensor pode ser implementado muito facilmente simplesmente cabeando, de modo que k bits mais significativo de uma 1- sequência de bits (k<l) sejam copiados para k bits menos significativos para obter uma 1+k-sequência de bits. A fig. 10 é uma ilustração esquemática de uma implementação dos primeiro e segundo extensores 380, 382 adequada para o componente de cor verde. Como é visto na figura, o bit mais significativo da sequência de 7 bits de entrada é copiado para a posição de bit menos significativa para obter uma sequência de 8 bits de entrada. Para os componentes vermelho e azul, os dois bits mais significativos são copiados para as duas posições de bits menos significativas para ir de uma sequência de 6 bits para uma sequência de 8 bits.
[0057] Com o tamanho de bit mencionado previamente para o bloco de texel codificado, ou seja, seis bits por palavra-código de cor para os componentes vermelho e azul e sete bits por palavra-código de cor para o componente verde e uso dos dois extensores, a circuitaria de hardware do terceiro decodificador 300 pode ser implementada com um total de 250.8 portas, se cada adicionador custar 4.4 portas por bit: R/G/B: 1 adicionador de 9 bits —> 9x4.4=39.6 portas 1 adicionador de 10 bits —> 10x4.4=44 portas Total:3x83.6=250.8 portas
[0058] Não são necessários prendedores para o terceiro decodificador 300 como em uma implementação preferida dos primeiro e segundo decodificadores, que é discutido adicionalmente neste documento. A fig. 8 ilustra uma modalidade de uma implementação de hardware do segundo decodificador 200. O segundo decodificador 200 compreende um primeiro multiplexador 250 configurado para extrair um da segunda palavra- código de cor XH e da terceira palavra-código de cor Xy. A seleção de palavra-código de cor é dependente de se metade dos quarto texels estão posicionados na primeira fileira ou primeira coluna dentro do contorno do bloco de texel, o bloco de texel codificado do qual é inserido no segundo decodificador 200. Se os dois pixels estão posicionados na primeira fileira, a segunda palavra-código de cor XH é extraída do primeiro multiplexador 250, caso contrário, a terceira palavra-código de cor Xy é extraída. Um operador de negação 240 é configurado para negar a primeira palavra código de cor Xo. Um primeiro adicionador 220 é conectado ao primeiro multiplexador 250 e ao operador de negação 240 e adiciona a saída destas unidades 240, 250 para formar a diferença XH-X0or Xv-X0. Em uma implementação alternativa, o operador de negação 240 é substituído por um operador de negação com o primeiro adicionador 220 sendo um adicionador com transporte fixado em 1. O uso de um operador de negação juntamente com um adicionador com transporte fixado em 1 é geralmente preferido sobre um operador de negação com um adicionador normal no que se refere a complexidade de harware.
[0059] Um operador de deslocamento para a esquerda 210 é conectado ao primeiro adicionador 220 e é configurado para deslocar a sequência de bits correspondente à saída de adicionador uma posição de bit para a esquerda.
[0060] Um segundo multiplexador 252 é configurado para extrair um de uma coordenada de fileira e uma coordenada de coluna de um texel. Este texel é o primeiro texel dos dois texels presentes no bloco de texel, o bloco de texel codificado do qual é inserido no segundo decodificador 200. Na fig. Sx designa a coordenada de coluna e Sy designa a coordenada de fileira deste texel. Se os dois texels estão posicionados na primeira fileira, a coordenada de coluna Sx é extraída do segundo multiplexador 252, caso contrário, da coordenada de fileira Sy.
[0061] Um terceiro multiplexador 254 é conectado ao operador de deslocamento para a esquerda 210 e ao primeiro adicionador 220. O terceiro multiplexador 254 seleciona entre 2x(XnN-X0)=2d, ou seja, a saída do operador de deslocamento para a esquerda 210, e (X[[N-X(1)=d, ou seja, a saída do primeiro adicionador 220. A seleção é feita baseada no valor do bit mais significativo da coordenada de fileira ou de coluna extraído do segundo multiplexador 252.
[0062] Um operador OR 360 é conectado ao segundo multiplexador 352 e é configurado para realizar uma operação OR no bit mais significativo e no_bit_menos significativo da coordenada de linha ou de coluna do segundo multiplexador 352. O operador OR 360 e o terceiro multiplexador 254 são conectados adicionalmente a um operador AND 270. Este operador AND 270 realiza uma operação AND da saída de multiplexador bit a bit com o bit individual do operador OR 260. O resultado aqui é que a saída de multiplexador é preservada se a saída OR for lb,o e a saída do operador AND 270 for zero se a saída OR for ObiO. Daí, a saída do operador AND 270 é 2d, d ou 0.
[0063] Um segundo adicionador 222 é conectado ao operador AND 270 e é configurado para adicionar a saída do operador AND 270 e uma sequência de bits tendo lObm como os dois bits menos significativos precedidos pela primeira palavra-código de cor Xo. Esta sequência de bits corresponde a f = 4 x Xo + 2, que pode ser implementada deslocando a sequência de bits da primeira palavra-código de cor Xo duas posições de bit para a esquerda e inserindo 2= 1 Obin, como os dois últimos bits, que, do contrário, são zero após o deslocamento. A saída do segundo adicionador 222 é, por conseguinte, 2d+f, d+f ou f.
[0064] Um terceiro adicionador 224 é conectado ao primeiro adicionador 220 e ao segundo adicionador 222 e é configurado para adicionar as saídas destes adicionadores 220, 222. Este terceiro adicionador 224, daí, dá o resultado 3d+f, 2d+f ou d+f. Um primeiro operador de deslocamento para a direita 230 é conectado ao terceiro adicionador 224 e é configurado para deslocar a sequência de bits do terceiro adicionador 224 duas posições de bit para a direita para obter o valor de texel do texel inferior ou à direita dos dois texels na primeira coluna ou na primeira fileira no patch bilinear. Um segundo operador de deslocamento para a direita 232 é conectado ao segundo adicionador 222 e desloca a saída de adicionador duas posições de bit para a direita para formar o valor de texel do texel da parte superior do texel à esquerda dos dois texels na primeira coluna ou na primeira fileira.
[0065] As palavras código de cor de entrada Xo, XH, XV são preferencialmente expandidas de seis ou sete bits para oito bits em similaridade com o terceiro decodificador na fig. 7. Como consequência, extensores opcionais, mas preferidos 280, 282, 284 são preferencialmente dispostos nos terminais de entrada para, desse modo, terem um primeiro extensor 280 configurado para estender a primeira palavra-código de cor Xo antes de adição de lObin, como os dois bits menos significativos para formar, neste caso, uma sequência de 10 bits. O primeiro extensor 280 também é conectado ao operador de negação 240. Um segundo 282 e terceiro 284 extensor são conectados ao primeiro multiplexador 250 e estendem a segunda XH e a terceira Xv palavras código de cor, respectivamente.
[0066] Em uma implementação opcional, os operadores de deslocamento para a direita 230, 232 são preferencialmente conectados a um prendedor respectivo ou operador de preensão 290, 292. Estes prendedores 290, 292 são configurados para prender a saída dos operadores de deslocamento a direita 230, 232 entre um valor de texel mínimo e um valor de texel máximo. Assim, os prendedores 290, 292 asseguram que a sequência de bits extraída do segundo decodificador 200 está dentro de um intervalo de valor permitido. Um exemplo deste tipo de intervalo de valor permitido é de 0 a 255 se as sequências extraídas do segundo decodificador 200 tiverem que ser de 8 bits.
[0067] A fig. 11 ilustra um exemplo de uma implementação de hardware de um prendedor 190-196, 290, 292, tal como empregado no segundo decodificador da fig. 8 ou o primeiro decodificador da fig. 9. Esta modalidade de prendedor é projetada para prender uma sequência de 11 bits potencialmente representando um valor no intervalo de [-1024, 1023] para urna sequência de 8 bits representando um valor no intervalo de [0, 255]. O prendedor 190-196, 290, 292 compreende oito operadores OR 701-708, cada um recebendo um dos oito bits menos significativos da sequência de bits de entrada. As outras entradas respectivas para o operador OR 701-708 são conectadas à saída de outro operador OR 700. Este operador OR 700 recebe os dois bits mais significativos da sequência de bits de entrada. Cada uma das saídas dos oito operadores OR 701-708 são conectadas a um operador respectivo AND 711-718. A outra entrada respectiva dos operadores AND 711-718 recebe o bit de sinal da sequência de bits de entrada.
[0068] Uma modalidade de implementação alternativa para o prendedor 190-196, 290, 292 está ilustrada na fig. 12. Nesta modalidade, os oitos operadores OR são substituídos por oito operadores NOR 721-724. Correspondentemente, os oito operadores AND da fig. 11 também são substituídos pelos oito operadores NOR 731-738. Além disso, um operador de negação 740 é conectado aos oito operadores NOR 731-738 e a entrada para o bit de sinal da sequência de bits de entrada.
[0069] O custo de implementação da modalidade de hardware ilustrada na fig. 12 é: 16 NOR -> 16x1 = 16 portas 1 OR -> 1x1.5=1.5 portas 1 NOT -> lx0.5=0.5 portas Total: 16+1.5+0.5=18 portas
[0070] O número de portas para o exemplo de implementação do segundo decodificador 200 na fig. 8, excluindo os prendedores, é: R/G/B: adicionador de 18 bits -> 8x4.4=35.2 portas 1 adicionador de 11 bits -> 11 x4.4=48.4 portas 1 adicionador de 12 bits -> 12x4.4=52.8 portas 1 mux de 18 bits —> 8x2.2=17.6 portas 1 mux de 10 bits -> 10x2.2=22 portas 1 mux de 2 bits -> 2x2.2=4.4 portas 1 OR de 1 bit lx4.5=1.5 portas 1 AND de 10 bits -> 10x1.5=15 portas 1 NOT de 8 bits -> 8x0.5=4 portas Total: 3x200.9=602.7 portas
[0071] Finalmente a fig. 9 é um exemplo de uma implementação de hardware do primeiro decodificador 100. O primeiro decodificador 100 compreende um operador de negação 140 configurado para negar a primeira palavra-código de cor Xo. Um primeiro adicionador 120 é conectado ao operador de negação 140 e adiciona a primeira palavra-código de cor negada à segunda palavra-código de cor XH para obter g=XH-X0. Um segundo adicionador 122 também é conectado ao operador de negação 140 e adiciona a primeira palavra-código de cor negada à terceira palavra-código de cor Xv para obter h=Xv-X0. Em uma implementação alternativa, o operador de negação 140 é substituído por um operador de negação. O primeiro adicionador 120 e o segundo adicionador 122 são ambos então possuem transporte fixado em 1.
[0072] Um primeiro operador de deslocamento para a esquerda 110 é conectado ao primeiro adicionador 120 e desloca a saída de adicionador uma posição de bit para a esquerda para obter uma sequência de bits deslocada para a esquerda correspondentes a 2g. Um segundo operador de deslocamento para a esquerda 112 é conectado ao segundo adicionador 122 e desloca a saída de adicionador output uma posição de bit para a esquerda para obter a sequência de bits de 2h. Um primeiro multiplexador 150 é conectado ao primeiro operador de deslocamento para a esquerda 110 e ao primeiro adicionador 120 e é configurado para selecionar entre g e 2g baseado no bit mais significativo de uma coordenada de coluna Sx. Um segundo multiplexador 152 é correspondentemente conectado ao segundo operador de deslocamento para a esquerda 112 e ao segundo adicionador 122 e seleciona entre h e 2h baseado no bit mais significativo de uma coordenada de fileira Sy. As coordenadas de coluna e de fileira são as coordenadas do texel superior esquerdo no patch bilinear 2x2, ou seja, o texel 30 nas figs. IA a 1 D.
[0073] Um primeiro operador OR 160 realiza uma operação OR no bit mais significativo e no bit menos significativo da coordenada de coluna Sx- Um segundo operador OR 162 realiza uma operação OR no bit mais significativo e no bit menos significativo da coordenada de fileira Sy. O primeiro operador OR 160 e o primeiro multiplexador 150 são conectados a um primeiro operador AND 170 que realiza uma operação AND bit a bit na saída de multiplexador com o único bit do primeiro operador OR 160. A saída do primeiro operador AND 170 é, por conseguinte, 2g, g ou 0. Um segundo operador AND 172 é conectado ao segundo multiplexador 152 e ao segundo operador OR 162. O segundo operador AND 172 realiza uma operação AND bit a bit na saída de multiplexador com o bit do segundo operador OR 162 para obter uma saída de 2h, h ou 0.
[0074] Um terceiro adicionador 124 é conectado ao primeiro operador AND 124 e adiciona a saída de adicionador a uma sequência de bits tendo 10biU como os dois bits menos significativos precedido pela primeira palavra- código de cor. Esta sequência de bits corresponde, como foi previamente descrito, f=4Xo+2. A saída de adicionador é, por conseguinte, 2g+f, g+f ou f. Um quarto adicionador 126 é conectado ao primeiro adicionador 120 e ao terceiro adicionador 124 e é configurado para adicionar as saídas destes adicionadores 120, 124 para obter 3g+f, 2g+f ou g+f. Um quinto adicionador 128 é conectado ao segundo adicionador 122 e ao segundo operador AND 172 e adiciona as saídas destas duas unidades 122, 172 para obter 3h, 2h ou h. Um sexto adicionador 121 é conectado ao terceiro adicionador 124 e ao segundo operador AND 172 e é configurado para adicionar as saídas destas unidades 124, 172. Um primeiro operador de deslocamento para a direita 130 é conectado ao sexto adicionador 121 e é configurado para deslocar a sequência de bits das saídas de adicionador duas posições de bit para a direita para obter valor de texel do texel 30 da fig. 1 A.
[0075] Um sétimo adicionador 123 é conectado ao quarto adicionador 126 e ao segundo operador AND 172 e é configurado para adicionar as saídas destas unidades 126, 172. Um segundo operador de deslocamento para a direita 132 é conectado ao sétimo adicionador 123 e é configurado para deslocar a sequência de bits da saída de adicionador duas posições de bit para a direita para obter valor de texel do texel 32 da fig- 1 A.
[0076] Um oitavo adicionador 125 é conectado ao terceiro adicionador 124 e ao quinto adicionador 128 e é configurado para adicionar as saídas destes adicionadores 124, 128. Um terceiro operador de deslocamento para a direita 134 é conectado ao oitavo adicionador 125 e é configurado para deslocar a sequência de bits da saída de adicionador duas posições de bit para a direita para obter valor de texel do texel 34 da fig. 1 A.
[0077] Um nono adicionador 127 é conectado ao quarto adicionador 126 e ao quinto adicionador 128 e é configurado para adicionar as saídas destes adicionadores 126, 128. Um quarto operador de deslocamento para a direita 136 é conectado ao quarto adicionador 127 e é configurado para deslocar a sequência de bits da saída de adicionador duas posições de bit para a direita para obter valor de texel do texel 36 da fig. 1 A.
[0078] Em uma implementação opcional, mas preferida, as palavras código de cor de entrada Xo, XH, XV são primeiro estendidas ou expandidas de seis ou sete bits para oito bits. Como consequência um primeiro extensor de bit 180 é preferencialmente disposto conectado ao operador de negação 140 e configurado ainda para estender ou expandir a primeira palavra-código de cor Xo para a sequência de bits predefinida, preferencialmente oito bits, antes de lObin ser adicionado como bits menos significativos para obter uma sequência de 10 bits. Um segundo extensor 182 é correspondentemente disposto conectado ao primeiro adicionador 120 e configurado para estender a segunda palavra-código de cor XH. Finalmente, um terceiro extensor 184 é conectado ao segundo adicionador 122 e é configurado para estender a terceira palavra- código de cor Xv.
[0079] Em uma implementação opcional, cada operador de deslocamento para a direita 130-136 é preferencialmente conectado a um prendedor respectivo ou operador de preensão 190-196. Estes prendedores 190-196 são configurados para prender a saída dos operadores de deslocamento para a direita 130-136 entre um valor de texel mínimo e um valor de texel máximo. Assim, os prendedores 190-196 asseguram que a sequência de bits extraída do primeiro decodificador 100 está dentro de um intervalo de valor permitido. Um exemplo deste tipo de intervalo de valor permitido é de 0 a 255 se as sequências extraídas do primeiro decodificador 100 tiverem que ser de 8 bits.
[0080] O número de portas para o exemplo de implementação da fig. 8 excluindo os prendedores opcionais 190-196 é: R/G/B: adicionador de 28 bits —> 16x4.4=70.4 portas 1 adicionador de 10 bits —> 10x4.4=44 portas 1 adicionador de 11 bits —> 11 x4.4=48.4 portas 5 adicionadores de 12 bits —> 60x4.4=264 portas 2 mux de 10 bits —> 20x2.2=44 portas 2 OR de 1 bit —> 2x1.5=3 portas 2 AND de 10 bits —> 20x1.5=30 portas 1 NOT de 8 bits —> 8x0.5=4 portas Total:3x507.8=1523.4 portas
[0081] Os quatro decodificadores do sistema de decodificação, por conseguinte, podem ser implementados com apenas 0+250.8+602.7+1523.4=2376.9 portas, excluindo os prendedores.
[0082] Uma implementação tradicional com quatro decodificadores idênticos como sugerem na arte anterior [3] pareceria muito com o primeiro decodificador da fig. 9. A única diferença seria que apenas um texel seria necessário na saída em vez de quatro como na figura. Consequentemente, os quatro adicionadores 121, 123, 125, 127 seriam então substituídos por dois multiplexadores de quatro vias seguidos por um adicionador. Isto custaria 6 adicionadores, 4 multiplexadores e dois operadores AND por canal de cor. Isto significa que com quatro decodificadores e três diferentes componentes de cor o custo de hardware ou complexidade de acordo com a arte anterior seria: 6x3x4=72 adicionadores 4x3x4=48 multiplexadores 2x3x4= 24 operadores AND
[0083] Isto deve ser comparado às modalidades de implementação divulgadas das figs. 6-8 precisando de (9+3+2+0)x3=42 adicionadores (2+3+0+0)x3=15 multiplexadores (2+l+0+0)x3=9 operadores AND
[0084] O número de adicionadores, por conseguinte, foi reduzido de 72 para 42, ou por 42 %. Os multiplexadores foram reduzidos ainda mais em termos relativos, de 48 para 15, ou por 69%.
[0085] A fig. 13 ilustra uma modalidade de uma implementação de hardware do seletor de valor 500. Nesta modalidade o seletor de valor 500 compreende quatro multiplexadores 510, cada um extraindo um valor de texel de um texel 30-36 do patch bilinear. O primeiro multiplexador 510 é conectado às quatro saídas do primeiro decodificador 100 e seleciona uma das quatro sequências de bit como o valor de texel do primeiro texel 30 no patch bilinear. O segundo multiplexador 520 é conectado a segunda e quarta saídas do primeiro decodificador 100 e às duas saídas do segundo decodificador 200. Este segundo multiplexador 520 extrai o valor de texel do segundo texel 32 no patch bilinear. Um terceiro multiplexador 530 é conectado à terceira e quarta saídas do primeiro decodificador 100, a primeira saída do segundo decodificador 200 e a única saída do terceiro decodificador 300. O terceiro multiplexador 530 extrai o valor de texel para o terceiro texel 34 no patch bilinear. Finalmente, o quarto multiplexador 540 é conectado à quarta saída do primeiro decodificador 100, a segunda saída do segundo decodificador 200 e a única saída do quarto decodificador 400. O quarto multiplexador 540 seleciona e extrai o valor de texel do quarto texel 36 no patch bilinear.
[0086] A posição do patch bilinear em relação a uma borda de bloco de texel dita qual sequência de bits são extraídas dos multiplexadores 510- 540. Assim, na situação ilustrada na fig. IA, a sequência de bits das quatro saídas do primeiro decodificador 100 são selecionadas pelos multiplexadores 510-540. Mais detalhadamente, o primeiro multiplexador 510 extrai a sequência de bits da primeira saída do primeiro decodificador 100, o segundo multiplexador 520 extrai a sequência de bits da segunda saída com os terceiro 530 e quarto 540 multiplexadores extraindo a sequência de bits das terceira e quarta saídas de decodificador respectivamente. Um patch bilinear situado como ilustrado na fig. IB implica que o primeiro multiplexador 510 seleciona a sequência de bits da segunda saída do primeiro decodificador 100. O segundo multiplexador 520 seleciona a sequência de bits da primeira saída do segundo decodificador 200. O terceiro decodificador 300 seleciona a sequência de bits da quarta saída do primeiro decodificador 100 e o quarto decodificador 400 seleciona a sequência de bits da segunda saída do segundo decodificador 200. O conceito então pode ser aplicado de modo similar às duas outras posições de patch como ilustrado nas figs. 1C e 1 D.
[0087] O custo no que se refere a número de portas de implementação modalidade do seletor de valor 500 como ilustrado na fig. 13 é: 3 mux de 4 vias de 8 bits—> 24x6.6=158.4 portas 1 mux de 3 vias de 8 bits —> 8x4.4=35.2 portas Total: 158.4+35.2=193.6 portas
[0088] O custo total para os decodificadores e seletor de valor, incluindo os prendedores, é 2376.9+6x18+193.6=2678.5 portas.
[0089] Se os prendedores dos primeiro e segundo decodificadores como ilustrado nas figs. 8 e 9 tivessem sido omitidos e, em vez disso, substituídos por quatro prendedores, cada um conectado a um dos multiplexadores 510-540 do seletor de valor 500, o custo de implementação do seletor de valor 500 aumentaria, uma vez que então os três multiplexadores de 4 vias de 11 bits e um multiplexador de 3 vias de 11 bits seriam necessários resultante em um custo de 266.2 portas, em vez de 193.6 portas.
[0090] O calculador de pixel do sistema de decodificação pode ser implementado em hardware de acordo com técnicas bem conhecidas na arte. Mais detalhadamente, assume-se que os quatro valores de texel, no caso de filtragem bilinear, do seletor de valor são designados A, B, C e D. O calculador de pixel então calcula o valor de pixel como: valor de pixel = A(1 - dx)(l - dy) + Bdx(l - dy)+ C(l- dx)dy + Ddxdy onde dx é a distância ao longo do eixo de x entre o ponto intermediário de texel A e o ponto de amostra para o pixel, e dy é a distância correspondente ao longo do eixo de y entre o ponto intermediário de texel A e o ponto de amostra para o pixel.
[0091] A equação descrita acima é realizada em paralelo para os componentes de cor vermelho, verde e azul. Uma implementação de hardware pode então ser definida baseada na equação. Por exemplo, assume-se que a posição do ponto de amostra pode ser expressa com três decimais binários, por exemplo, a posição dx pode assumir os seguintes valores [0.000, 0.125, 0.250, 0.375, 0.500, 0.625, 0.750, 0.875]. Neste caso, a posição pode ser definida em oitos de modo que os valores acima podem ser representados por [0, 1, 2, 3, 4, 5, 6, 7]. A equação acima pode então ser re-escrita como: valor de pixel = fA(8-DX)(8-DY)+BDX(8-DY)+C(8-DX)DY+DDXDY)»6 onde DX=8xdx e DY=8xdy e DX, DY são números inteiros entre O e 7.
[0092] Investigando o Segundo termo 8DX(8 - DY)percebe-se que tanto DX como (8-DY) são números inteiros entre O e 8. A fim de representar oitavo, são exigidos quatro bits. Um operador de multiplicação que manipula quatro bits em cada inserção e saída uma sequência de 8 bits pode ser usada. No entanto, o maior número que o operador de multiplicação pode extrair é 7x8=56 de modo que apenas os seis bits menos significativos são necessários da saída.
[0093] A saída do operador de multiplicação deve então ser multiplicada pelo valor de texel B, preferencialmente um número entre 0 e 255. Esta multiplicação pode ser manipulada por um operador de multiplicação tomando duas inserções de 8 bits e saídas uma sequência de bits de 16 bits. No entanto, apenas os quatorze bits menos significativos do operador de multiplicação são necessários, uma vez que o maior número possível é 56x255<214.
[0094] Uma implementação correspondente é então realizada para os outros termos na equação e as saídas dos operadores de multiplicação finais respectivos são adicionadas e deslocadas seis etapas para a direita a fim de obter o valor de pixel de 8 bits final. Os exemplos de implementação acima devem ser vistos meramente como modalidades preferidas, mas não limitativas de como as unidades do sistema de decodificação podem ser implementadas em hardware. Várias variantes das mesmas são possíveis e dentro do escopo da invenção. A característica importante é, entretanto, que a circuitaria dos decodificadores contidos são diferentes com crescente complexidade, e que cada decodificador é configurado para manipular e extrair o valor de texel(s) de um ou mais texels em posições predefinidas no patch.
[0095] A fig. 14 é um diagrama de fluxo ilustrando um método de gerar um pixel decodificado decodificando pelo menos um bloco de texel codificado. O método começa na etapa SI onde a posição de pelo menos N valores de texel, ou seja, um patch, em relação a uma borda de bloco de texel é determinado. Um bloco de texel codificado respectivo, seja o mesmo bloco de texel codificado ou blocos de texel codificados diferentes, dependendo da posição de patch relativa determinada, é inserido em N decodificadores para obter valores de texel decodificados. Uma próxima etapa S2 seletivamente extrai pelo menos N valores de texel de pelo menos um de N decodificadores. Os pelo menos N valores de texel particulares para selecionar na etapa S2 e de cujo decodificador(es) eles são buscados são determinados baseado na posição de patch relativa obtida na etapa Sl. Além disso, cada um dos N decodificadores tem uma circuitaria respectiva que é diferente da circuitaria dos outros N-l decodificadores. A etapa final S3 calcula um valor de pixel decodificado baseado em pelo menos N valores de texel selecionados na etapa S2, preferencialmente como uma combinação linear destes pelo menos N valores de texel. O método então termina e começa novamente na etapa Sl para os fins de gerar um novo pixel decodificado.
[0096] A etapa S2 preferencialmente envolve extrair seletivamente todos os N valores de texel de um primeiro decodificador dos N decodificadores se os N texels estão posicionados dentro do contorno de um bloco de texel. Se, no entanto, metade dos N texels estão posicionados dentro de um bloco de texel e a metade restante dos texels são, em vez disso encontrados dentro de um bloco de texel vizinho metade dos valores de N texels são preferencialmente selecionados da saída do primeiro decodificador com a metade restante de dito segundo decodificador.
[0097] Em uma modalidade preferida N =4. Se os quatro texels são então posicionados de modo que cada texel é encontrado em um bloco de texel separado, a etapa S2 preferencialmente envolve selecionar um valor de texel respectivo de cada um dos quatro decodificadores.
[0098] As modalidades descritas acima devem ser compreendidas como alguns exemplos ilustrativos da presente invenção. Ficará compreendido para aqueles que são versados na arte que várias modificações, combinações e mudanças podem ser feitas nas modalidades sem se afastar do escopo da presente invenção. Em particular, diferentes soluções parciais nas diferentes modalidades podem ser combinadas em outras configurações, onde for tecnicamente possível. O escopo da presente invenção é, no entanto, definido pelas reivindicações apensas. REFERÊNCIAS [1] Patente US No. 5,956,431 [2] Strõm and Mõller, "iP ACKMAN: High-Quality, Low- Complexity Texture Compression for Mobile Phones", Graphics Hardware, 2005, ACM Press, pp. 63-70 [3] Strom and Pettersson, "ETC2: Texture Compression using Invalid Combinations", Graphics Hardware, 2007, ACM Press, pp. 49-54 [4] Pedido Internacional no. WO 2006/126949

Claims (17)

1. Sistema de decodificação (1) para gerar um pixel decodificado com base em pelo menos um bloco de texel codificado (40), o sistema de decodificação (1), caracterizado pelo fato de que compreende: N diferentes decodificadores (100, 200, 300, 400), cada um tendo um conjunto de circuitos tendo um nível de complexidade que é diferente do nível de complexidade do conjunto de circuitos dos outros N-l decodificadores, e cada um é configurado para decodificar um bloco de texel codificado (40) para gerar pelo menos um valor de texel respectivo; um seletor de valor (500) conectado aos N decodificadores (100, 200, 300, 400) e configurado para emitir seletivamente pelo menos N valores de texel de pelo menos um dos N decodificadores (100, 200, 300, 400) com base nas posições dos pelo menos N texels (30-36) associados com os pelo menos N valores de texel em relação a um limite de um bloco de texel (10) compreendendo pelo menos um dos pelo menos N texels (30-36); e um calculador de pixel (600) configurado para calcular um valor de pixel decodificado do pixel decodificado com base nos pelo menos N valores de texel emitidos seletivamente pelo seletor de valor (500).
2. Sistema de decodificação de acordo com a reivindicação 1, caracterizado pelo fato de que o seletor de valor (500) é configurado para emitir seletivamente N valores de texels de um primeiro decodificador (100) dos N decodificadores (100, 200, 300, 400) se os N texels (30-36) associados com os N valores de texels estão posicionados dentro do limite de um bloco de texel (10).
3. Sistema de decodificação de acordo qualquer uma das reivindicações 1 ou 2, caracterizado pelo fato de que o seletor de valor (500) é configurado para emitir seletivamente uma metade de N valores de texel de um primeiro decodificador (100) dos N decodificadores (100, 200, 300, 400) e uma metade restante dos N valores de texel de um segundo decodificador (200) dos N decodificadores (100, 200, 300, 400) se a metade dos N texels (30-36) associados com os Nvalores de texel estão posicionados dentro do limite do bloco de texel (10), e metade dos N texels (30-36) estão posicionados dentro do limite de um bloco de texel vizinho (12, 14).
4. Sistema de decodificação de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que N é igual a quatro e o seletor de valor (500) é configurado para emitir seletivamente um primeiro valor de texel dos quatro valores de texels de um primeiro decodificador (100) dos quatro decodificadores (100, 200, 300, 400), um segundo valor de texel dos quatro valores de texels do segundo decodificador (200) dos quatro decodificadores (100, 200, 300, 400), um terceiro valor de texel dos quatro valores de texels de um terceiro decodificador (300) dos quatro decodificadores (100, 200, 300, 400) e um quarto valor de texel dos quatro valores de texels de um quarto decodificador (400) dos quatro decodificadores (100, 200, 300, 400) se um dos quatro texels (30-36) está posicionado dentro do limite do bloco de texel (10) e cada um dos três texels restantes está posicionado dentro do limite de um bloco de texel vizinho respectivo (12, 14, 16).
5. Sistema de decodificação de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que Né igual a quatro, e um primeiro decodificador (100) dos quatro decodificadores (100, 200, 300, 400) tem um primeiro conjunto de circuitos e é configurado para decodificar um bloco de texel codificado (40) para gerar quatro valores de texels; um segundo decodificador (200) dos quatro decodificadores (100, 200, 300, 400) tem um segundo conjunto de circuitos e é configurado para decodificar um bloco de texel codificado (40) para gerar dois valores de texel; um terceiro decodificador (300) dos quatro decodificadores (100, 200, 300, 400) tem um terceiro conjunto de circuitos e é configurado para decodificar um bloco de texel codificado (40) para gerar um valor de texel; e um quarto decodificador (400) dos quatro decodificadores (100, 200, 300, 400) tem um quarto conjunto de circuitos e é configurado para decodificar um bloco de texel codificado (40) para gerar um valor de texel.
6. Sistema de decodificação de acordo com a reivindicação 5, caracterizado pelo fato de que o bloco de texel codificado (40) compreende uma primeira palavra-código de cor (41, 44, 47), uma segunda palavra-código de cor (42, 45, 48) e uma terceira palavra-código de cor (43, 46, 49).
7. Sistema de decodificação de acordo com a reivindicação 6, caracterizado pelo fato de que o quarto decodificador (400) compreende pelo menos um fio para emitir a primeira palavra-código de cor (41, 44, 47).
8. Sistema de decodificação de acordo com a reivindicação 6, caracterizado pelo fato de que o terceiro decodificador (300) compreende: um operador de deslocamento para a esquerda (310) configurado para deslocar uma sequência de bits correspondente à segunda palavra-código de cor (42, 45, 48) uma posição de bit para a esquerda para formar uma sequência de bits deslocada para a esquerda; um primeiro adicionador (320) tendo transporte ajustado a um e estando conectado ao operador de deslocamento para a esquerda (310), e configurado para adicionar a segunda palavra-código de cor (42, 45, 48) e a sequência de bits deslocada para a esquerda; um segundo adicionador (322) tendo transporte ajustado a um e estando conectado ao primeiro adicionador (320), e configurado para adicionar a saída do primeiro adicionador (320) e a primeira palavra-código de cor (41, 44, 47); e um operador de deslocamento para a direita (330) conectado ao segundo adicionador (322) e configurado para deslocar uma sequência de bits correspondente à saída do segundo adicionador (322) duas posições de bit para a direita para formar um sequência deslocada para a direita.
9. Sistema de decodificação de acordo com a reivindicação 6, caracterizadopelo fato de que o segundo decodificador (200) compreende: um primeiro multiplexador (250) configurado para emitir uma da segunda palavra-código de cor (42, 45, 48) e da terceira palavra-código de cor (43, 46, 49) com base no fato de se metade de quatro texels (30-36) estão posicionados ou não em uma linha ou coluna dentro do limite do bloco de texel (10); um operador de negação (240) configurado para negar a primeira palavra-código de cor (41, 44, 47); um primeiro adicionador (220) conectado ao primeiro multiplexador (250) e ao operador de negação (240), e configurado para adicionar a saída do primeiro multiplexador (250) e da primeira palavra- código de cor negada; um operador de deslocamento para a esquerda (210) conectado ao primeiro adicionador (220) e configurado para deslocar uma sequência de bits correspondente à saída do primeiro adicionador (220) uma posição de bit para a esquerda para formar uma sequência de bits deslocada para a esquerda; um segundo multiplexador (252) configurado para emitir um de uma coordenada de linha e uma coordenada de coluna de um texel (32, 24) com base no fato de se a metade de quatros texels (30-36) estão posicionados ou não em uma linha ou coluna dentro do limite do bloco de texel (10); um terceiro multiplexador (254) conectado ao operador de deslocamento para a esquerda (210) e ao primeiro adicionador (220), e configurado para emitir uma saída do primeiro adicionador (220) e a sequência de bits deslocada para a esquerda com base no bit mais significativo da saída do segundo multiplexador (252); um operador OR (260) conectado ao segundo multiplexador (252) e configurado para receber o bit mais significativo da saída do segundo multiplexador (252) e o bit menos significativo da saída do segundo multiplexador; um operador AND (270) conectado ao terceiro multiplexador (254) e ao operador OR (260) e configurado para receber a saída do terceiro multiplexador (254) e a saída do operador OR (260); um segundo adicionador (222) conectado ao operador AND (270) e configurado para adicionar a saída do operador AND (270) e uma sequência de bits tendo lObin como os dois bits menos significativos precedidos pela primeira palavra-código de cor (41, 44, 47); um terceiro adicionador (224) conectado ao primeiro adicionador (220) e ao segundo adicionador (222), e configurado para adicionar à saída do primeiro adicionador (220) e a saída do segundo adicionador (222); um primeiro operador de deslocamento para a direita (230) conectado ao terceiro adicionador (224) e configurado para deslocar a sequência de bits correspondente à saída do terceiro adicionador (224) duas posições de bit para a direita para formar uma primeira sequência deslocada para a direita; e um segundo operador de deslocamento para a direita (232) conectado ao segundo adicionador (222) e configurado para deslocar a sequência de bits correspondente à saída do segundo adicionador (222) duas posições de bit para a direita para formar uma segunda sequência deslocada para a direita.
10. Sistema de decodificação de acordo a reivindicação 6, caracterizado pelo fato de que o segundo decodificador (200) compreende: um primeiro multiplexador (250) configurado para emitir uma da segunda palavra-código de cor (42, 45, 48) e a terceira palavra-código de cor (43, 46, 49) com base no fato de se metade de quatro texels (30-36) estão posicionados ou não em uma linha ou coluna dentro do limite do bloco de texel (10); um operador de negação configurado para negar a primeira palavra-código de cor (41, 44, 47); um primeiro adicionador (220) tendo transporte ajustado para um conectado ao primeiro multiplexador (250) e ao operador de negação, e configurado para adicionar a saída do primeiro multiplexador (250) e da primeira palavra-código de cor negada; um operador de deslocamento para a esquerda (210) conectado ao primeiro adicionador (220) e configurado para deslocar uma sequência de bits correspondente à saída do primeiro adicionador (220) uma posição de bit para a esquerda para formar uma sequência de bits deslocada para a esquerda; um segundo multiplexador (252) configurado para emitir uma de uma coordenada de linha e uma coordenada de coluna de um texel (32, 24) com base no fato de se a metade de quatros texels (30-36) estão posicionados ou não em uma linha ou coluna dentro do limite do bloco de texel (10); um terceiro multiplexador (254) conectado ao operador de deslocamento para a esquerda (210) e ao primeiro adicionador (220), e configurado para emitir uma saída do primeiro adicionador (220) e a sequência de bits deslocada para a esquerda com base no bit mais significativo da saída do segundo multiplexador (252); um operador OR (260) conectado ao segundo multiplexador (252) e configurado para receber o bit mais significativo da saída do segundo multiplexador (252) e o bit menos significativo da saída do segundo multiplexador; um operador AND (270) conectado ao terceiro multiplexador (254) e ao operador OR (260), e configurado para receber a saída do terceiro multiplexador (254) e a saída do operador OR (260); um segundo adicionador (222) conectado ao operador AND (270) e configurado para adicionar a saída do operador AND (270) e uma sequência de bits tendo lObm como os dois bits menos significativos precedidos pela primeira palavra-código de cor (41,44, 47); um terceiro adicionador (224) conectado ao primeiro adicionador (220) e ao segundo adicionador (222), e configurado para adicionar a saída do primeiro adicionador (220) e a saída do segundo adicionador (222); um primeiro operador de deslocamento para a direita (230) conectado ao terceiro adicionador (224) e configurado para deslocar a sequência de bits correspondente à saída do terceiro adicionador (224) duas posições de bit para a direita para formar uma primeira sequência deslocada para a direita; um segundo operador de deslocamento para a direita (232) conectado ao segundo adicionador (222) e configurado para deslocar a sequência de bits correspondente à saída do segundo adicionador (222) duas posições de bit para a direita para formar uma segunda sequência deslocada para a direita.
11. Sistema de decodificação de acordo com a reivindicação 6, caracterizadopelo fato de que o primeiro decodificador (100) compreende: um operador de negação (140) configurado para negar a primeira palavra-código de cor (41, 44, 47); um primeiro adicionador (120) conectado ao operador de negação (140) e configurado para adicionar a segunda palavra-código de cor (42, 45, 48) e a primeira palavra-código de cor negada; um segundo adicionador (122) conectado ao operador de negação (140) e configurado para adicionar a terceira palavra-código de cor (43, 46, 49) e a primeira palavra-código de cor negada; um primeiro operador de deslocamento para a esquerda (110) conectado ao primeiro adicionador (120) e configurado para deslocar uma sequência de bits correspondente à saída do primeiro adicionador (120) uma posição de bit para a esquerda para formar uma primeira sequência de bits deslocada para a esquerda; um segundo operador de deslocamento para a esquerda (112) conectado ao segundo adicionador (122) e configurado para deslocar uma sequência de bits correspondente à saída do segundo adicionador (122) uma posição de bit para a esquerda para formar uma segunda sequência de bits deslocada para a esquerda; um primeiro multiplexador (150) conectado ao primeiro adicionador (120) e ao primeiro operador de deslocamento para a esquerda (110), e configurado para emitir uma saída do primeiro adicionador (120) e da primeira sequência de bits deslocada para a esquerda com base no bit mais significativo de uma coordenada de coluna de um texel (30); um segundo multiplexador (152) conectado ao segundo adicionador (122) e ao segundo operador de deslocamento para a esquerda (112), e configurado para emitir uma saída do segundo adicionador (122) e a segunda sequência de bits deslocada para a esquerda com base no bit mais significativo de uma coordenada de linha do texel (30); um primeiro operador OR (160) configurado para receber o bit mais significativo da coordenada de coluna e o bit menos significativo da coordenada de coluna; um segundo operador OR (162) configurado para receber o bit mais significativo da coordenada de linha e o bit menos significativo da coordenada de linha; um primeiro operador AND (170) conectado ao primeiro multiplexador (150) e ao primeiro operador OR (160) e configurado para receber a saída do primeiro multiplexador (150) e a saída do primeiro operador OR (160); um segundo operador AND (172) conectado ao segundo multiplexador (152) e ao segundo operador OR (162), e configurado para receber a saída do segundo multiplexador (152) e a saída do segundo operador OR (162); um terceiro adicionador (124) conectado ao primeiro operador AND (170) e configurado para adicionar a saída do primeiro operador AND (170) e uma sequência de bits tendo 10bin como os dois bits menos significativos precedidos pela primeira palavra-código de cor (41, 44, 47); um quarto adicionador (126) conectado ao primeiro adicionador (120) e ao terceiro adicionador (124), e configurado para adicionar a saída do primeiro adicionador (120) e a saída do terceiro adicionador (124); um quinto adicionador (128) conectado ao segundo adicionador (122) e ao segundo operador AND (172), e configurado para adicionar a saída do segundo adicionador (122) e a saída do segundo operador AND (172); um sexto adicionador (121) conectado ao terceiro adicionador (124) e ao segundo operador AND (172), e configurado para adicionar a saída do terceiro adicionador (124) e a saída do segundo operador AND (172); um sétimo adicionador (123) conectado ao quarto adicionador (126) e ao segundo operador AND (172), e configurado para adicionar a saída do quarto adicionador (126) e a saída do segundo operador AND (172); um oitavo adicionador (125) conectado ao terceiro adicionador (124) e ao quinto adicionador (128), e configurado para adicionar a saída do terceiro adicionador (124) e a saída do quinto adicionador (128); um nono adicionador (127) conectado ao quarto adicionador (126) e ao quinto adicionador (128), e configurado para adicionar a saída do quarto adicionador (126) e a saída do quinto adicionador (128); um primeiro operador de deslocamento para a direita (130) conectado ao sexto adicionador (121) e configurado para deslocar a sequência de bits correspondente à saída do sexto adicionador (121) duas posições de bit para a direita para formar uma primeira sequência deslocada para a direita; um segundo operador de deslocamento para a direita (132) conectado ao sétimo adicionador (123) e configurado para deslocar a sequência de bits correspondente à saída do sétimo adicionador (123) duas posições de bit para a direita para formar uma segunda sequência deslocada para a direita; um terceiro operador de deslocamento para a direita (134) conectado ao oitavo adicionador (125) e configurado para deslocar a sequência de bits correspondente à saída do oitavo adicionador (125) duas posições de bit para a direita para formar uma terceira sequência deslocada para a direita; e um quarto operador de deslocamento para a direita (136) conectado ao nono adicionador (127) e configurado para deslocar a sequência de bits correspondente à saída do nono adicionador (127) duas posições de bit para a direita para formar uma quarta sequência deslocada para a direita.
12. Sistema de decodificação de acordo com a reivindicação 6, caracterizado pelo fato de que o primeiro decodificador (100) compreende: um operador de negação configurado para negar a primeira palavra-código de cor (41, 44, 47); um primeiro adicionador (120) tendo transporte ajustado em 1 conectado ao operador de negação e configurado para adicionar a segunda palavra-código de cor (42, 48) e a primeira palavra-código de cor negada; um segundo adicionador (122) tendo transporte ajustado em 1 conectado ao operador de negação e configurado para adicionar a terceira palavra-código de cor (43, 49) e a primeira palavra-código de cor negada; um primeiro operador de deslocamento para a esquerda (110) conectado ao primeiro adicionador (120) e configurado para deslocar uma sequência de bits correspondente à saída do primeiro adicionador (120) uma posição de bit para a esquerda para formar uma primeira sequência de bits deslocada para a esquerda; um segundo operador de deslocamento para a esquerda (112) conectado ao segundo adicionador (122) e configurado para deslocar uma sequência de bits correspondente à saída do segundo adicionador (122) uma posição de bit para a esquerda para formar uma segunda sequência de bits deslocada para a esquerda; um primeiro multiplexador (150) conectado ao primeiro adicionador (120) e ao primeiro operador de deslocamento para a esquerda (110), e configurado para emitir uma saída do primeiro adicionador (120) e a primeira sequência de bits deslocada para a esquerda com base no bit mais significativo de uma coordenada de coluna de um texel (30); um segundo multiplexador (152) conectado ao segundo adicionador (122) e ao segundo operador de deslocamento para a esquerda (112), e configurado para emitir uma saída do segundo adicionador (122) e a segunda sequência de bits deslocada para a esquerda com base no bit mais significativo de uma coordenada de linha do texel (30); um primeiro operador OR (160) configurado para receber o bit mais significativo da coordenada de coluna e o bit menos significativo da coordenada de coluna; um segundo operador OR (162) configurado para receber o bit mais significativo da coordenada de linha e o bit menos significativo da coordenada de linha; um primeiro operador AND (170) conectado ao primeiro multiplexador (150) e o primeiro operador OR (160) e configurado para receber a saída do primeiro multiplexador (150) e a saída do primeiro operador OR (160); um segundo operador AND (172) conectado ao segundo multiplexador (152) e ao segundo operador OR (162), e configurado para receber a saída do segundo multiplexador (152) e a saída do segundo operador OR (162); um terceiro adicionador (124) conectado ao primeiro operador AND (170) e configurado para adicionar a saída do primeiro operador AND (170) e uma sequência de bits tendo lObin como os dois bits menos significativos precedidos pela primeira palavra-código de cor (41, 44, 47); um quarto adicionador (126) conectado ao primeiro adicionador (120) e ao terceiro adicionador (124), e configurado para adicionar a saída do primeiro adicionador (120) e a saída do terceiro adicionador (124); um quinto adicionador (128) conectado ao segundo adicionador (122) e ao segundo operador AND (172), e configurado para adicionar a saída do segundo adicionador (122) e a saída do segundo operador AND (172); um sexto adicionador (121) conectado ao terceiro adicionador (124) e ao segundo operador AND (172), e configurado para adicionar a saída do terceiro adicionador (124) e a saída do segundo operador AND (172); um sétimo adicionador (123) conectado ao quarto adicionador (126) e ao segundo operador AND (172), e configurado para adicionar a saída do quarto adicionador (126) e a saída do segundo operador AND (172); um oitavo adicionador (125) conectado ao terceiro adicionador (124), e ao quinto adicionador (128), e configurado para adicionar a saída do terceiro adicionador (124) e a saída do quinto adicionador (128); um nono adicionador (127) conectado ao quarto adicionador (126) e ao quinto adicionador (128), e configurado para adicionar a saída do quarto adicionador (126) e a saída do quinto adicionador (128); um primeiro operador de deslocamento para a direita (130) conectado ao sexto adicionador (121) e configurado para deslocar a sequência de bits correspondente à saída do sexto adicionador (121) duas posições de bit para a direita para formar uma primeira sequência deslocada para a direita; um segundo operador de deslocamento para a direita (132) conectado ao sétimo adicionador (123) e configurado para deslocar a sequência de bits correspondente à saída do sétimo adicionador (123) duas posições de bit para a direita para formar uma segunda sequência deslocada para a direita; um terceiro operador de deslocamento para a direita (134) conectado ao oitavo adicionador (125) e configurado para deslocar a sequência de bits correspondente à saída do oitavo adicionador (125) duas posições de bit para a direita para formar uma terceira sequência deslocada para a direita; e um quarto operador de deslocamento para a direita (136) conectado ao nono adicionador (127) e configurado para deslocar a sequência de bits correspondente à saída do nono adicionador (127) duas posições de bit para a direita para formar uma quarta sequência deslocada para a direita.
13. Sistema de decodificação de acordo com a reivindicação 6, caracterizado pelo fato de que o seletor de valor (500) compreende: um primeiro multiplexador (510) conectado ao primeiro decodificador (100) e configurado para emitir um primeiro valor de texel; um segundo multiplexador (520) conectado ao primeiro decodificador (100) e ao segundo decodificador (200), e configurado para emitir um segundo valor de texel; um terceiro multiplexador (530) conectado ao primeiro decodificador (100), ao segundo decodificador (200) e ao terceiro decodificador (300), e configurado para emitir um terceiro valor de texel; e um quarto multiplexador (540) conectado ao primeiro decodificador (100), ao segundo decodificador (200) e ao quarto decodificador (400), e configurado para emitir um quarto valor de texel.
14. Método para gerar um pixel decodificado decodificando pelo menos um bloco de texel codificado (40), o método caracterizado por compreender: emitir seletivamente pelo menos N valores de texel de pelo menos um de N diferentes decodificadores (100, 200, 300, 400), cada um tendo um conjunto de circuitos possuindo um nível de complexidade que é diferente do nível de complexidade do conjunto de circuitos dos outros N-l decodificadores e cada um é configurado para decodificar um bloco de texel codificado (40) para gerar pelo menos um valor de texel respectivo, com base nas posições dos pelo menos N texels (30-36) associados com os pelo menos N valores de texel em relação a um limite de um bloco de texel (10) compreendendo pelo menos um dos pelo menos Aí texels (30-36); e calcular um valor de pixel decodificado do pixel decodificado com base nos pelo menos N valores de texel.
15. Método de acordo com a reivindicação 14, caracterizado pelo fato de que emitir seletivamente compreende emitir seletivamente N valores de texel de um primeiro decodificador (100) dos decodificadores N (100, 200, 300, 400) se os Aí texels (30-36) associados com os N valores de texel estão posicionados dentro do limite de um bloco de texel (10).
16. Método de acordo com a reivindicação 14, caracterizado pelo fato de que emitir seletivamente compreende emitir seletivamente uma metade de Aí valores de texel de um primeiro decodificador (100) dos decodificadores Aí (100, 200, 300, 400) e uma metade restante dos Aí valores de texel do segundo decodificador (200) dos Aí decodificadores (100, 200, 300, 400) se a metade dos Aí texels (30-36) associados com os Aí valores de texel estão posicionados dentro do limite do bloco de texel (10) e metade dos Aí texels (30-36) estão posicionados dentro do limite de um bloco de texel vizinho (12, 14).
17. Método de acordo com a reivindicação 14, caracterizado pelo fato de que Aí é igual a quatro e emitir seletivamente compreende emitir seletivamente um primeiro valor de texel dos quatro valores de texels de um primeiro decodificador (100) dos quatro decodificadores (100, 200, 300, 400), um segundo valor de texel dos quatro valores de texels de um segundo decodificador (200) dos quatro decodificadores (100, 200, 300, 400), um terceiro valor de texel dos quatro valores de texels de um terceiro decodificador (300) dos quatro decodificadores (100, 200, 300, 400) e um quarto valor de texel dos quatro valores de texels de um quarto decodificador (400) dos quatro decodificadores (100, 200, 300, 400) se um dos quatro texels (30-36) está posicionado dentro do limite do bloco de texel (10) e cada um dos três texels restantes está posicionado dentro do limite de um bloco de texel vizinho respectivo (12, 14, 16).
BR112012012273-8A 2009-11-24 2010-02-24 sistema de decodificação e método para gerar um pixel decodificado BR112012012273B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US26392209P 2009-11-24 2009-11-24
US61/263,922 2009-11-24
US26631609P 2009-12-03 2009-12-03
US61/266,316 2009-12-03
PCT/SE2010/050217 WO2011065886A1 (en) 2009-11-24 2010-02-24 Decoding system and method operable on encoded texture element blocks

Publications (2)

Publication Number Publication Date
BR112012012273A2 BR112012012273A2 (pt) 2018-04-17
BR112012012273B1 true BR112012012273B1 (pt) 2020-11-03

Family

ID=44066774

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112012012273-8A BR112012012273B1 (pt) 2009-11-24 2010-02-24 sistema de decodificação e método para gerar um pixel decodificado

Country Status (11)

Country Link
US (1) US8655063B2 (pt)
EP (1) EP2504814B1 (pt)
JP (1) JP2013512482A (pt)
KR (1) KR101709822B1 (pt)
CN (1) CN102687175B (pt)
BR (1) BR112012012273B1 (pt)
DK (1) DK2504814T3 (pt)
ES (1) ES2635540T3 (pt)
PL (1) PL2504814T3 (pt)
RU (1) RU2510939C2 (pt)
WO (1) WO2011065886A1 (pt)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013009224A1 (en) * 2011-07-08 2013-01-17 Telefonaktiebolaget L M Ericsson (Publ) Multi-mode processing of texture blocks
US10148972B2 (en) * 2016-01-08 2018-12-04 Futurewei Technologies, Inc. JPEG image to compressed GPU texture transcoder
US10181176B2 (en) 2016-03-04 2019-01-15 Samsung Electronics Co., Ltd. Efficient low-power texture cache architecture
GB2584764B (en) * 2017-04-28 2021-12-29 Imagination Tech Ltd Decoder unit for texture decompression
GB2562041B (en) 2017-04-28 2020-11-25 Imagination Tech Ltd Multi-output decoder for texture decompression
US11244492B2 (en) * 2018-11-02 2022-02-08 Facebook Technologies, Llc. Parallel texture sampling

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US5956431A (en) 1997-10-02 1999-09-21 S3 Incorporated System and method for fixed-rate block-based image compression with inferred pixel values
JPH11341496A (ja) * 1998-05-28 1999-12-10 Matsushita Electric Ind Co Ltd 画像処理方法,画像処理装置,及びデータ記憶媒体
DE19917092A1 (de) 1999-04-15 2000-10-26 Sp3D Chip Design Gmbh Verfahren zur Rasterisierung eines Graphikgrundelements
US6968006B1 (en) * 2001-06-05 2005-11-22 At&T Corp. Method of content adaptive video decoding
SE0401850D0 (sv) 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
SE526226C2 (sv) * 2003-12-19 2005-08-02 Ericsson Telefon Ab L M Bildbehandling
SE0401852D0 (sv) * 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
CA2572967C (en) * 2004-07-08 2012-10-16 Telefonaktiebolaget L M Ericsson (Publ) Multi-mode image processing
WO2006126949A1 (en) 2005-05-27 2006-11-30 Telefonaktiebolaget Lm Ericsson (Publ) Weight based image processing
EP1977605B1 (en) * 2006-01-23 2020-04-15 Telefonaktiebolaget LM Ericsson (publ) Image processing
WO2007116551A1 (ja) * 2006-03-30 2007-10-18 Kabushiki Kaisha Toshiba 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
US9020047B2 (en) * 2006-05-24 2015-04-28 Panasonic Intellectual Property Management Co., Ltd. Image decoding device
US7890750B2 (en) * 2006-07-06 2011-02-15 Accenture Global Services Limited Encryption and decryption on a graphics processing unit
US9967590B2 (en) * 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter

Also Published As

Publication number Publication date
RU2012126120A (ru) 2013-12-27
WO2011065886A8 (en) 2012-07-19
EP2504814B1 (en) 2017-05-03
PL2504814T3 (pl) 2017-10-31
US20120281915A1 (en) 2012-11-08
JP2013512482A (ja) 2013-04-11
EP2504814A4 (en) 2016-04-06
RU2510939C2 (ru) 2014-04-10
DK2504814T3 (en) 2017-08-21
KR101709822B1 (ko) 2017-02-23
CN102687175B (zh) 2015-02-04
WO2011065886A1 (en) 2011-06-03
EP2504814A1 (en) 2012-10-03
BR112012012273A2 (pt) 2018-04-17
KR20120097515A (ko) 2012-09-04
CN102687175A (zh) 2012-09-19
US8655063B2 (en) 2014-02-18
ES2635540T3 (es) 2017-10-04

Similar Documents

Publication Publication Date Title
US9159114B2 (en) Texture decompression for graphics processors
BR112012012273B1 (pt) sistema de decodificação e método para gerar um pixel decodificado
US8289343B2 (en) Method of and apparatus for encoding and decoding data
US9048859B2 (en) Method and apparatus for compressing and decompressing data
US20120219233A1 (en) Compression of Image Data
US20110243469A1 (en) Selecting and representing multiple compression methods
US20070291857A1 (en) Systems and Methods of Video Compression Deblocking
US20060072041A1 (en) Image synthesis apparatus, electrical apparatus, image synthesis method, control program and computer-readable recording medium
JP2006014341A (ja) Mcuバッファを用いて画像データを格納するための方法及び装置
TWI498850B (zh) 訊框緩衝區歸併的方法、電腦可讀取記憶體、與電腦系統
TW200901080A (en) Programmable graphics processing element
AU2018233015B2 (en) System and method for image processing
KR102569371B1 (ko) 델타 색상 압축의 비디오 적용
WO2012082029A1 (en) Method and device for storing a compression ratio indication in a pixel value buffer in tile encoding
JP2007517330A (ja) 3次元グラフィック・サブシステムにおけるテクスチャマップデータのプログラム可能なフィルタ処理方法及び装置
US6967659B1 (en) Circuitry and systems for performing two-dimensional motion compensation using a three-dimensional pipeline and methods of operating the same
EP2119245B1 (en) Programmable pattern-based unpacking and packing of data channel information
US9014497B2 (en) Tile encoding and decoding
KR20100103703A (ko) 그래픽스 프로세싱 시스템에서 표면 생성을 위한 멀티-포맷 지원
JP2023152589A (ja) 動画レンダリング方法、装置、電子機器及び記憶媒体
US7916151B1 (en) Partial texture loads
US7898543B1 (en) System and method for optimizing texture retrieval operations
US11327687B2 (en) Encoding data arrays
JP2005045797A (ja) 画像データの伝送に要する帯域幅を縮小するための方法及び装置
JP2008059608A (ja) 映像信号処理装置および映像信号処理方法

Legal Events

Date Code Title Description
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: 10 (DEZ) ANOS CONTADOS A PARTIR DE 03/11/2020, OBSERVADAS AS CONDICOES LEGAIS.