# US 2014/0193081 A1 · Methods of and apparatus for encoding and decoding data

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0193081 A1
- Document ID: US20140193081A1
- Status: Published application
- Kind: A1
- Application number: 13/933,604
- Filed: 2013-07-02
- Published: 2014-07-10
- Earliest claimed: 2012-07-04
- Assignees: Arm Limited
- Inventors: Jorn Nystad
- Web page: https://patentgrep.com/patent/US20140193081A1

## CPC

- G06T 9/00: Image coding (bandwidth or redundancy reduction for static pictures H04N1/41; coding or decoding of static colour picture signals H04N1/64; methods or arrangements for coding, decoding, compressing or decompressing digital video signals H04N19/00)
- G06T 7/40: Analysis of texture (depth or shape recovery from texture G06T7/529)
- H04N 19/90: using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

When encoding a set of texture data elements 30 for use in a graphics processing system, the direction along which the data values of the set of texture data elements in question exhibit the greatest variance in the colour space is estimated by using one or more infinite planes 41 to divide the texture data elements in the colour space. For each such plane, texture data element values on each side of the plane are added up to give respective sum points 48, 49, and the vector 50 between these two sum points determined. The direction in the data space of one of the determined vectors 50 is then used to derive endpoint colour values to use when encoding the set of texture data elements.

## Claims

### Claim 1

A method of determining for a set of texture data elements to be encoded for use in a graphics processing system, a direction in the data space of the texture data elements to be used when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements, the method comprising:
determining, for at least one plane that divides the set of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space from a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on one side of the plane in the data space to a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on the other side of the plane in the data space; and
using the direction determined in the data space of the texture data elements for at least one of the at least one planes that divide the set of texture data elements into two groups in the data space to determine a direction in the data space to be used when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements.

### Claim 2 (depends on 1)

The method of claim 1, wherein the set of texture data elements that is being encoded comprises all the texture data elements of a block of texture data elements that the texture has been divided into for encoding purposes, or a subset of the texture data elements of a block of texture data elements that the texture has been divided into for encoding purposes.

### Claim 3 (depends on 1)

The method of claim 1, wherein the step of determining, for at least one plane that divides the set of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space from a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on one side of the plane in the data space to a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on the other side of the plane in the data space comprises:
determining, for at least one plane that divides the set of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space from a point in the data space of an average value for the texture data elements of the set of texture data elements to be encoded whose values lie on one side of the plane in the data space to a point in the data space of an average value for the texture data elements of the set of texture data elements to be encoded whose values lie on the other side of the plane in the data space.

### Claim 4 (depends on 1)

The method of claim 1, further comprising first determining an average texture data element value for the set of texture data elements being considered, and then offsetting each texture data element's value by the determined average value.

### Claim 5 (depends on 4)

The method of claim 4 wherein: the steps of:
determining, for at least one plane that divides the set of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space from a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on one side of the plane in the data space to a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on the other side of the plane in the data space; and
using the direction determined in the data space of the texture data elements for at least one of the at least one planes that divide the set of texture data elements into two groups in the data space to determine a direction in the data space to be used when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements,
comprise:
determining, for at least one plane that divides the offset values of the set of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space between the origin in the data space and the point in the data space of the sum of the offset values of the texture data elements of the set of texture data elements to be encoded whose values lie on one side of the plane in the data space; and
using the direction determined in the data space of the texture data elements for at least one of the at least one planes that divides the offset values of the set of texture data elements into two groups to determine a direction in the data space to be used when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements.

### Claim 6 (depends on 1)

The method of claim 1, wherein each plane that divides the texture data elements in the data space for which the direction of a vector in the data space is determined is perpendicular to one of the axes of the data space.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
determining whether to use a determined direction for a plane that has been used to divide the texture data element values as the direction to use when determining a base data value or values to use when encoding the set of texture data elements on the basis of the length of the vector in the data space.

### Claim 8 (depends on 1)

The method of claim 1, comprising determining the direction of a vector in the data space for each of plural different planes that divide the texture data elements in the data space.

### Claim 9 (depends on 8)

The method of claim 8, further comprising selecting the direction determined in the data space of the texture data elements for one of the plural different planes that divide the texture data elements into two groups in the data space as the direction in the data space to use when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements on the basis of the lengths in the data space of the vectors that were used to determine the directions in the data space.

### Claim 10

A method of encoding a texture map for use in a graphics processing system, the method comprising:
dividing a texture map to be encoded into a plurality of blocks of texture data elements; and
for each block of texture data elements:
determining at least one direction in the data space to be used when determining a base data value or values to be used when encoding the block of texture data elements using the method of any one of the preceding claims;
using the at least one determined direction in the data space for the block of texture data elements to derive at least one base data value to be used when encoding the block of texture data elements; and
encoding the block of texture data elements as a block of texture data representing the block of texture data elements using the derived at least one base data value.

### Claim 11 (depends on 10)

The method of claim 10, wherein the step of using the at least one determined direction in the data space for the block of texture data elements to derive at least one base data value to be used when encoding the block of texture data elements comprises:
using the at least one determined direction in the data space for the block of texture data elements to derive a pair of endpoint data values to be used when encoding the block of texture data elements.

### Claim 12

An apparatus for determining for a set of texture data elements to be encoded for use in a graphics processing system, a direction in the data space of the texture data elements to be used when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements, the apparatus comprising:
processing circuitry configured to:
determine, for at least one plane that divides the set of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space from a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on one side of the plane in the data space to a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on the other side of the plane in the data space; and
use the direction determined in the data space of the texture data elements for at least one of the at least one planes that divide the set of texture data elements into two groups in the data space to determine a direction in the data space to be used when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements.

### Claim 13 (depends on 12)

The apparatus of claim 12, wherein the set of texture data elements that is being encoded comprises all the texture data elements of a block of texture data elements that the texture has been divided into for encoding purposes, or a subset of the texture data elements of a block of texture data elements that the texture has been divided into for encoding purposes.

### Claim 14 (depends on 12)

The apparatus of claim 12, wherein the processing circuitry is configured to:
determine, for at least one plane that divides the set of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space from a point in the data space of an average value for the texture data elements of the set of texture data elements to be encoded whose values lie on one side of the plane in the data space to a point in the data space of an average value for the texture data elements of the set of texture data elements to be encoded whose values lie on the other side of the plane in the data space.

### Claim 15 (depends on 12)

The apparatus of claim 12, wherein the processing circuitry is further configured to first determine an average texture data element value for the set of texture data elements being considered, and to then offset each texture data element's value by the determined average value.

### Claim 16 (depends on 15)

The apparatus of claim 15 wherein the processing circuitry is configured to:
determine, for at least one plane that divides the offset values of the set of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space between the origin in the data space and the point in the data space of the sum of the offset values of the texture data elements of the set of texture data elements to be encoded whose values lie on one side of the plane in the data space; and
use the direction determined in the data space of the texture data elements for at least one of the at least one planes that divides the offset values of the set of texture data elements into two groups to determine a direction in the data space to be used when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements.

### Claim 17 (depends on 12)

The apparatus of claim 12, wherein each plane that divides the texture data elements in the data space for which the direction of a vector in the data space is determined is perpendicular to one of the axes of the data space.

### Claim 18 (depends on 12)

The apparatus of claim 12, wherein the processing circuitry is configured to determine whether to use a determined direction for a plane that has been used to divide the texture data element values as the direction to use when determining a base data value or values to use when encoding the set of texture data elements on the basis of the length of the vector in the data space.

### Claim 19 (depends on 12)

The apparatus of claim 12, wherein the processing circuitry is configured to determine the direction of a vector in the data space for each of plural different planes that divide the texture data elements in the data space.

### Claim 20 (depends on 19)

The apparatus of claim 19, wherein the processing circuitry is configured to select the direction determined in the data space of the texture data elements for one of the plural different planes that divide the texture data elements into two groups in the data space as the direction in the data space to use when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements on the basis of the lengths in the data space of the vectors that were used to determine the directions in the data space.

### Claim 21

An apparatus for encoding a texture map for use in a graphics processing system, the apparatus comprising:
processing circuitry configured to:
divide a texture map to be encoded into a plurality of blocks of texture data elements;
and configured to, for each block of texture data elements:
determine, for at least one plane that divides the block of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space from a point in the data space that is based on the values of texture data elements of the block of texture data elements to be encoded whose values lie on one side of the plane in the data space to a point in the data space that is based on the values of texture data elements of the block of texture data elements to be encoded whose values lie on the other side of the plane in the data space;
use the direction determined in the data space of the texture data elements for at least one of the at least one planes that divide the block of texture data elements into two groups in the data space to determine a direction in the data space to be used when determining a base data value or values to be used for the block of texture data elements when encoding the block of texture data elements;
use the at least one determined direction in the data space for the block of texture data elements to derive at least one base data value to be used when encoding the block of texture data elements; and
encode the block of texture data elements as a block of texture data representing the block of texture data elements using the derived at least one base data value.

### Claim 22 (depends on 21)

The apparatus of claim 21, wherein the processing circuitry is configured to use the at least one determined direction in the data space for the block of texture data elements to derive a pair of endpoint data values to be used when encoding the block of texture data elements.

### Claim 23

A computer readable storage medium storing computer software code which when executing on a processor performs a method of determining for a set of texture data elements to be encoded for use in a graphics processing system, a direction in the data space of the texture data elements to be used when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements, the method comprising:
determining, for at least one plane that divides the set of texture data elements to be encoded into two groups in the data space, the direction of a vector in the data space from a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on one side of the plane in the data space to a point in the data space that is based on the values of texture data elements of the set of texture data elements to be encoded whose values lie on the other side of the plane in the data space; and
using the direction determined in the data space of the texture data elements for at least one of the at least one planes that divide the set of texture data elements into two groups in the data space to determine a direction in the data space to be used when determining a base data value or values to be used for the set of texture data elements when encoding the set of texture data elements.
