IP Library Granted Patent US 9,478,069
Granted Patent B2
US 9,478,069 · App. 14/362,326 · Granted Oct 25, 2016

Compression format conversion for texture data

Inventors: Jacob Strom (Stockholm, SE); Jim Rasmusson (Vellinge, SE); Gilles Ries (Saint-jean de Moirans, FR)
Assignee: ST-ERICSSON SA
G06T19/20G06T9/00G06T17/00G06T2210/32G06T2219/2012
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,478,069
App. No.
14/362,326
Granted
Oct 25, 2016
Kind
B2
Abstract

A conversion between two texture compression formats comprises calculations performed at index-level for reducing handling of values with color bit-length and an amount of calculations with color values. Format conversion can thus be performed in real time upon displaying an image using the compressed texture data, without significant slowing down of a display rate of the images. It may be implemented in particular for conversion from DXT1—to ETC1 compression format, and a non-flipped or flipped orientation of an ETC1—compressed texture data block can thus be determined from said texture data block as initially compressed in DXT1 format.

Claims (55)

1. A non-transitory computer-readable storage medium storing computer-executable instructions, which when executed, cause one or more processors to convert texture data from a first compression format to a second compression format; by:

receiving the texture data in the first compression format, wherein the texture data in the first compression format includes a texture data block comprising a set of first index values for calculating color values, and a bit number allocated in the first compression format for encoding each first index value being less than a color bit-length used for encoding one color value, wherein the first index values of the texture data block in the first compression format form an index matrix with two reference directions, and wherein a feature of a texture data block in the second compression format comprises a flipped or non-flipped orientation with respect to the two reference directions;

deriving the orientation from a comparison between two gradient values calculated from the index matrix of the texture data block in the first compression format, respectively along both reference directions; and

deriving at least one feature of the texture data block within the second compression format from the set of first index values of said texture data block within the first compression format by using at least one index-combining operation executed at index-level, wherein the first compression format is based on DXT1, and the second compression format is based on ETC1.

2. The non-transitory computer-readable storage medium according to claim 1 , wherein the derivation of the feature of the texture data block within the second compression format from the set of first index values of said texture data block within the first compression format, is performed only by executing operations at index-level, without handling color values encoded with the color bit-length.

3. The non-transitory computer-readable storage medium according to claim 1 , wherein two reference colors are also contained in the texture data block for the first compression format, and

wherein the deriving of the orientation of the texture data block in the second compression format comprises:

/a1/ converting each first index value of the index matrix of the texture data block in the first compression format, into a calculation-adapted index value;

/a2/ dividing the index matrix into two matrix chunks with respect to a first one of the reference directions, and calculating two average-representing index values respectively for the two matrix chunks based on the calculation-adapted index values, then calculating an average color for each matrix chunk by interpolating between the reference colors based on the average-representing index value of said matrix chunk, and then calculating the color gradient value for the first reference direction as a difference between both average color values;

/a3/ repeating step /a2/ with respect to the second one of the reference directions; and

/a4/ selecting one of the flipped and non-flipped orientations for the texture data block converted into the second compression format depending on whether the color gradient value is longer for the first or the second reference direction used in step /a2/ or /a3/.

4. The non-transitory computer-readable storage medium according to claim 1 , wherein the deriving of the orientation of the texture data block in the second compression format comprises:

/a1′/ converting each first index value of the index matrix of the texture data block in the first compression format, into a calculation-adapted index value;

/a2′/ dividing the index matrix into two matrix chunks with respect to a first one of the reference directions, and calculating two average-representing index values respectively for the two matrix chunks based on the calculation-adapted index values, and then calculating an index gradient value for said first reference direction as a difference between both average-representing index values;

/a3′/ repeating step /a2′/ with respect to the second one of the reference directions; and

/a4′/ selecting one of the flipped and non-flipped orientations for the texture data block converted into the second compression format depending on whether the index gradient value is higher for the first or the second reference direction used in step /a2′/ or /a3′/.

5. The non-transitory computer-readable storage medium according to claim 3 , wherein the conversion of each first index value into a calculation-adapted index value and the calculation of the average-representing index value for the each matrix chunk are performed at a same time by reading out said average-representing index value from a lookup table using the first index values contained in said matrix chunk as entries into the lookup table.

6. The non-transitory computer-readable storage medium according to claim 1 , wherein each texture data block in the second compression format comprises second index values for calculating color values, and

wherein conversion of the texture data block into the second compression format comprises:

/b1/ calculating color values respectively for several second index values using the second compression format;

/b2/ calculating a color value for at least one first index value using the first compression format, and assigning one of the second index values to said first index value, based on minimum color difference between said first index value and each of the second index values used in step /b1/;

/b3/ storing the second index value assigned in connection with the first index value; and

/b4/ each time the texture data block contains the first index value in the first compression format, using the second index value stored in connection with said first index value for said texture data block converted into the second compression format.

7. The non-transitory computer-readable storage medium according to claim 1 ,

wherein the texture data block in the second compression format comprises

second index values, at least one base color value, and at least one codeword value, the second compression format providing several tables each identified by one codeword value and assigning one color modifier value to each second index value,

a color value being calculated for the texture data block in the second compression format by combining the base color value of said texture data block with the color modifier value from the table identified by the codeword value of said texture data block, and which is assigned to said second index value,

wherein selecting for said texture data block that of the codeword values minimizing a total error between the color values calculated respectively in the first and second compression formats for said texture data block comprises tentatively varying the codeword value of the texture data block.

8. The non-transitory computer-readable storage medium according to claim 1 , wherein the non-transitory computer-readable storage medium is incorporated in a mobile phone or touchpad device.

9. A method for converting texture data from a first compression format to a second compression format, the method comprising:

receiving the texture data in the first compression format, wherein the texture data in the first compression format includes a texture data block in the first compression format comprising a set of first index values for calculating color values, and a bit number allocated in the first compression format for encoding each first index value being less than a color bit-length used for encoding one color value, wherein the first index values of the texture data block in the first compression format form an index matrix with two reference directions, and wherein a feature of a texture data block in the second compression format comprises a flipped or non-flipped orientation with respect to the two reference directions;

deriving the orientation from a comparison between two gradient values calculated from the index matrix of the texture data block in the first compression format, respectively along both reference directions; and

deriving at least one feature of the texture data block within the second compression format from the set of first index values of said texture data block within the first compression format by using at least one index-combining operation executed at index-level, wherein the first compression format is based on DXT1, and the second compression format is based on ETC1.

10. The method according to claim 9 , wherein the feature of the texture data block within the second compression format is derived from the set of first index values of said texture data block within the first compression format, only by executing operations at index-level, without handling color values encoded with the color bit-length.

11. The method according to claim 9 , wherein two reference colors are also contained in the texture data block for the first compression format, said method comprising the following steps for deriving the orientation of the texture data block in the second compression format:

/a1/ converting each first index value of the index matrix of the texture data block in the first compression format, into a calculation-adapted index value;

/a2/ dividing the index matrix into two matrix chunks with respect to a first one of the reference directions, and calculating two average-representing index values respectively for the two matrix chunks based on the calculation-adapted index values, then calculating an average color for each matrix chunk by interpolating between the reference colors based on the average-representing index value of said matrix chunk, and then calculating the color gradient value for the first reference direction as a difference between both average color values;

/a3/ repeating step /a2/ with respect to the second one of the reference directions; and

/a4/ selecting one of the flipped and non-flipped orientations for the texture data block converted into the second compression format depending on whether the color gradient value is longer for the first or the second reference direction used in step /a2/ or /a3/.

12. The method according to claim 9 , comprising the following steps for deriving the orientation of the texture data block in the second compression format:

/a1′/ converting each first index value of the index matrix of the texture data block in the first compression format, into a calculation-adapted index value;

/a2′/ dividing the index matrix into two matrix chunks with respect to a first one of the reference directions, and calculating two average-representing index values respectively for the two matrix chunks based on the calculation-adapted index values, and then calculating an index gradient value for said first reference direction as a difference between both average-representing index values;

/a3′/ repeating step /a2′/ with respect to the second one of the reference directions; and

/a4′/ selecting one of the flipped and non-flipped orientations for the texture data block converted into the second compression format depending on whether the index gradient value is higher for the first or the second reference direction used in step /a2′/ or /a3′/.

13. The method according to claim 11 , wherein the converting of each first index value into a calculation-adapted index value and the calculating of the average-representing index value for the each matrix chunk are performed at a same time by reading out said average-representing index value from a lookup table using the first index values contained in said matrix chunk as entries into the lookup table.

14. The method according to claim 9 , wherein each texture data block in the second compression format comprises second index values for calculating color values, and

wherein the method further comprises the following steps for converting the texture data block into the second compression format:

/b1/ calculating color values respectively for several second index values using the second compression format;

/b2/ calculating a color value for at least one first index value using the first compression format, and assigning one of the second index values to said first index value, based on minimum color difference between said first index value and each of the second index values used in step /b1/;

/b3/ storing the second index value assigned in connection with the first index value; and

/b4/ each time the texture data block contains the first index value in the first compression format, using the second index value stored in connection with said first index value for said texture data block converted into the second compression format.

15. The method according to claim 9 , wherein the texture data block in the second compression format comprises second index values, at least one base color value and at least one codeword value,

the second compression format providing several tables each identified by one codeword value and assigning one color modifier value to each second index value,

a color value being calculated for the texture data block in the second compression format by combining the base color value of said texture data block with the color modifier value from the table identified by the codeword value of said texture data block, and which is assigned to said second index value,

wherein the codeword value of the texture data block is determined by minimizing a total error between the color values calculated respectively in the first and second compression formats for said texture data block, when tentatively varying the codeword value of said texture data block.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2019
From: OPTIS CIRCUIT TECHNOLOGY, LLC,
To: TELEFONAKTIEBOLAGET L M ERICSSON (PUBL)
Reel/Frame 048529/0510 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2019
From: ST-ERICSSON SA, EN LIQUIDATION
To: OPTIS CIRCUIT TECHNOLOGY, LLC,
Reel/Frame 048504/0519 →
STATUS CHANGE-ENTITY IN LIQUIDATION Recorded Feb 2, 2016
From: ST-ERICSSON SA
To: ST-ERICSSON SA, EN LIQUIDATION
Reel/Frame 037739/0493 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2014
From: STROM, JACOB; RASMUSSON, JIM; RIES, GILLES
To: ST-ERICSSON SA
Reel/Frame 033010/0135 →
Priority Claims (2)
EP 12152512 · Jan 25, 2012 · regional
EP 12305103 · Jan 26, 2012 · regional
Continuity (2)
Provisional Application 61595303 · Feb 6, 2012
Related Publication 20140327668A1 · Nov 6, 2014