to top
Android APIs
public class

ETC1

extends Object
java.lang.Object
   ↳ android.opengl.ETC1

Class Overview

Methods for encoding and decoding ETC1 textures.

The standard for the ETC1 texture format can be found at http://www.khronos.org/registry/gles/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt

The PKM file format is of a 16-byte header that describes the image bounds followed by the encoded ETC1 texture data.

See Also

Summary

Constants
int DECODED_BLOCK_SIZE Size in bytes of a decoded block.
int ENCODED_BLOCK_SIZE Size in bytes of an encoded block.
int ETC1_RGB8_OES Accepted by the internalformat parameter of glCompressedTexImage2D.
int ETC_PKM_HEADER_SIZE Size of a PKM file header, in bytes.
Public Constructors
ETC1()
Public Methods
static void decodeBlock(Buffer in, Buffer out)
Decode a block of pixels.
static void decodeImage(Buffer in, Buffer out, int width, int height, int pixelSize, int stride)
Decode an entire image.
static void encodeBlock(Buffer in, int validPixelMask, Buffer out)
Encode a block of pixels.
static void encodeImage(Buffer in, int width, int height, int pixelSize, int stride, Buffer out)
Encode an entire image.
static void formatHeader(Buffer header, int width, int height)
Format a PKM header
static int getEncodedDataSize(int width, int height)
Return the size of the encoded image data (does not include size of PKM header).
static int getHeight(Buffer header)
Read the image height from a PKM header
static int getWidth(Buffer header)
Read the image width from a PKM header
static boolean isValid(Buffer header)
Check if a PKM header is correctly formatted.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final int DECODED_BLOCK_SIZE

Added in API level 8

Size in bytes of a decoded block.

Constant Value: 48 (0x00000030)

public static final int ENCODED_BLOCK_SIZE

Added in API level 8

Size in bytes of an encoded block.

Constant Value: 8 (0x00000008)

public static final int ETC1_RGB8_OES

Added in API level 8

Accepted by the internalformat parameter of glCompressedTexImage2D.

Constant Value: 36196 (0x00008d64)

public static final int ETC_PKM_HEADER_SIZE

Added in API level 8

Size of a PKM file header, in bytes.

Constant Value: 16 (0x00000010)

Public Constructors

public ETC1 ()

Added in API level 8

Public Methods

public static void decodeBlock (Buffer in, Buffer out)

Added in API level 8

Decode a block of pixels.

Parameters
in a native order direct buffer of size ENCODED_BLOCK_SIZE that contains the ETC1 compressed version of the data.
out a native order direct buffer of size DECODED_BLOCK_SIZE that will receive the decoded data. The data represents a 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R value of pixel (x, y).

public static void decodeImage (Buffer in, Buffer out, int width, int height, int pixelSize, int stride)

Added in API level 8

Decode an entire image.

Parameters
in native order direct buffer of the encoded data.
out native order direct buffer of the image data. Will be written such that pixel (x,y) is at pIn + pixelSize * x + stride * y. Must be large enough to store entire image.
pixelSize must be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image.

public static void encodeBlock (Buffer in, int validPixelMask, Buffer out)

Added in API level 8

Encode a block of pixels.

Parameters
in a native order direct buffer of size DECODED_BLOCK_SIZE that represent a 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R value of pixel (x, y).
validPixelMask is a 16-bit mask where bit (1 << (x + y * 4)) indicates whether the corresponding (x,y) pixel is valid. Invalid pixel color values are ignored when compressing.
out a native order direct buffer of size ENCODED_BLOCK_SIZE that receives the ETC1 compressed version of the data.

public static void encodeImage (Buffer in, int width, int height, int pixelSize, int stride, Buffer out)

Added in API level 8

Encode an entire image.

Parameters
in a native order direct buffer of the image data. Formatted such that pixel (x,y) is at pIn + pixelSize * x + stride * y;
pixelSize must be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image.
out a native order direct buffer of the encoded data. Must be large enough to store entire encoded image.

public static void formatHeader (Buffer header, int width, int height)

Added in API level 8

Format a PKM header

Parameters
header native order direct buffer of the header.
width the width of the image in pixels.
height the height of the image in pixels.

public static int getEncodedDataSize (int width, int height)

Added in API level 8

Return the size of the encoded image data (does not include size of PKM header).

public static int getHeight (Buffer header)

Added in API level 8

Read the image height from a PKM header

Parameters
header native order direct buffer of the header.

public static int getWidth (Buffer header)

Added in API level 8

Read the image width from a PKM header

Parameters
header native order direct buffer of the header.

public static boolean isValid (Buffer header)

Added in API level 8

Check if a PKM header is correctly formatted.

Parameters
header native order direct buffer of the header.