Added in API level 26

HardwareBuffer


class HardwareBuffer : AutoCloseable, Parcelable
kotlin.Any
   ↳ android.hardware.HardwareBuffer

HardwareBuffer wraps a native AHardwareBuffer object, which is a low-level object representing a memory buffer accessible by various hardware units. HardwareBuffer allows sharing buffers across different application processes. In particular, HardwareBuffers may be mappable to memory accessible to various hardware systems, such as the GPU, a sensor or context hub, or other auxiliary processing units. For more information, see the NDK documentation for AHardwareBuffer.

Summary

Constants
static Int

32-bit packed format that has 2-bit A, 10-bit R, G, and B components, in that order, from the most-significant bits to the least-significant bits.

static Int

32-bit packed format that has 2-bit unused, 10-bit R, G, and B components, in that order, from the most-significant bits to the least-significant bits.

static Int

Format: opaque format used for raw data transfer; must have a height of 1

static Int

Format: 24 bits depth, 8 bits stencil

static Int

Format: 32 bits depth, 8 bits stencil

static Int

Format: 16 bits depth

static Int

Format: 24 bits depth

static Int

Format: 32 bits depth

static Int

Format: 10 bits each red, green, blue, alpha

static Int

Format: 10 bits each red, green, blue, 2 bits alpha

static Int

64-bit format that has 12-bit R, G, B, and A components, in that order, from the lowest memory address to the highest memory address.

static Int

64-bit format that has 14-bit R, G, B, and A components, in that order, from the lowest memory address to the highest memory address.

static Int

Format: 8 bits each red, green, blue, alpha.

static Int

Format: 16 bits each red, green, blue, alpha

static Int

Format: 8 bits each red, green, blue, alpha, alpha is always 0xFF

static Int

Format: 5 bits each red and blue, 6 bits green, no alpha

static Int

Format: 8 bits each red, green, blue, no alpha

static Int

32-bit format that has 12-bit R and G components, in that order, from the lowest memory address to the highest memory address.

static Int

32-bit format that has 14-bit R and G components, in that order, from the lowest memory address to the highest memory address.

static Int

Format: 16 bits each red, green.

static Int

16 bit format with a single 12-bit component.

static Int

16 bit format with a single 14-bit component.

static Int

Format: 16 bits red.

static Int

Format: 8 bits red

static Int

Format: 8 bits stencil

static Long

The buffer will be used as a hardware composer overlay layer.

static Long

Usage: The buffer will often be read by the CPU

static Long

Usage: The buffer will sometimes be read by the CPU.

static Long

Usage: The buffer will often be written to by the CPU

static Long

Usage: The buffer will sometimes be written to by the CPU

static Long

Usage: The buffer is used for front-buffer rendering.

static Long

Usage: The buffer will be written to by the GPU

static Long

Usage: The buffer will be used as a cube map texture

static Long

Usage: The buffer will be used as a shader storage or uniform buffer object

static Long

Usage: The buffer contains a complete mipmap hierarchy

static Long

Usage: The buffer will be read from by the GPU

static Long

Usage: The buffer must not be used outside of a protected hardware path

static Long

Usage: The buffer will be used for sensor direct data

static Long

Usage: The buffer will be read by a hardware video encoder

static Int

Format: Planar YCbCr 420; must have an even width and height

static Int

Android YUV P010 format.

static Int

Android YUV P210 format.

Inherited constants
Public methods
Unit

Destroys this buffer immediately.

static HardwareBuffer
create(width: Int, height: Int, format: Int, layers: Int, usage: Long)

Creates a new HardwareBuffer instance.

Int

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

Int

Returns the @Format of this buffer.

Int

Returns the height of this buffer in pixels.

Long

Returns the system-wide unique id for this buffer This can be useful as a cache key for associating additional objects with a given HardwareBuffer, such as associating an imported EGLImage with the target HardwareBuffer when processing a stream of buffers from ImageReader.

Int

Returns the number of layers in this buffer.

Long

Returns the usage flags of the usage hints set on this buffer.

Int

Returns the width of this buffer in pixels.

Boolean

Indicates whether this buffer has been closed.

static Boolean
isSupported(width: Int, height: Int, format: Int, layers: Int, usage: Long)

Queries whether the given buffer description is supported by the system.

Unit
writeToParcel(dest: Parcel, flags: Int)

Flatten this object in to a Parcel.

Protected methods
Unit

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

Properties
static Parcelable.Creator<HardwareBuffer!>

Constants

BGRA_1010102

Added in API level 37
static val BGRA_1010102: Int

32-bit packed format that has 2-bit A, 10-bit R, G, and B components, in that order, from the most-significant bits to the least-significant bits. The component values are unsigned normalized to the range [0, 1], whose interpretation is defined by the dataspace.

Value: 67

BGRX_1010102

Added in API level 37
static val BGRX_1010102: Int

32-bit packed format that has 2-bit unused, 10-bit R, G, and B components, in that order, from the most-significant bits to the least-significant bits. The component values are unsigned normalized to the range [0, 1], whose interpretation is defined by the dataspace.

Value: 68

BLOB

Added in API level 26
static val BLOB: Int

Format: opaque format used for raw data transfer; must have a height of 1

Value: 33

DS_24UI8

Added in API level 28
static val DS_24UI8: Int

Format: 24 bits depth, 8 bits stencil

Value: 50

DS_FP32UI8

Added in API level 28
static val DS_FP32UI8: Int

Format: 32 bits depth, 8 bits stencil

Value: 52

D_16

Added in API level 28
static val D_16: Int

Format: 16 bits depth

Value: 48

D_24

Added in API level 28
static val D_24: Int

Format: 24 bits depth

Value: 49

D_FP32

Added in API level 28
static val D_FP32: Int

Format: 32 bits depth

Value: 51

RGBA_10101010

Added in API level 35
static val RGBA_10101010: Int

Format: 10 bits each red, green, blue, alpha

Value: 59

RGBA_1010102

Added in API level 26
static val RGBA_1010102: Int

Format: 10 bits each red, green, blue, 2 bits alpha

Value: 43

RGBA_12121212

Added in API level 37
static val RGBA_12121212: Int

64-bit format that has 12-bit R, G, B, and A components, in that order, from the lowest memory address to the highest memory address. The format is 64-bit unsigned integer that has a 12-bit R component in the top 12 bits of the word in bytes 0..1, a 12-bit G component in the top 12 bits of the word in bytes 2..3, a 12-bit B component in the top 12 bits of the word in bytes 4..5, and a 12-bit A component in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused.

Value: 65

RGBA_14141414

Added in API level 37
static val RGBA_14141414: Int

64-bit format that has 14-bit R, G, B, and A components, in that order, from the lowest memory address to the highest memory address. The format is 64-bit unsigned integer that has a 14-bit R component in the top 14 bits of the word in bytes 0..1, a 14-bit G component in the top 14 bits of the word in bytes 2..3, a 14-bit B component in the top 14 bits of the word in bytes 4..5, and a 14-bit A component in the top 14 bits of the word in bytes 6..7, with the bottom 2 bits of each word unused.

Value: 66

RGBA_FP16

Added in API level 26
static val RGBA_FP16: Int

Format: 16 bits each red, green, blue, alpha

Value: 22

RGBX_8888

Added in API level 26
static val RGBX_8888: Int

Format: 8 bits each red, green, blue, alpha, alpha is always 0xFF

Value: 2

RGB_565

Added in API level 26
static val RGB_565: Int

Format: 5 bits each red and blue, 6 bits green, no alpha

Value: 4

RGB_888

Added in API level 26
static val RGB_888: Int

Format: 8 bits each red, green, blue, no alpha

Value: 3

RG_1212

Added in API level 37
static val RG_1212: Int

32-bit format that has 12-bit R and G components, in that order, from the lowest memory address to the highest memory address. The format is 32-bit unsigned integer that has a 12-bit R component in the top 12 bits of the word in bytes 0..1, and a 12-bit G component in the top 12 bits of the word in bytes 2..3, with the bottom 4 bits of each word unused.

Value: 63

RG_1414

Added in API level 37
static val RG_1414: Int

32-bit format that has 14-bit R and G components, in that order, from the lowest memory address to the highest memory address. The format is 32-bit unsigned integer that has a 14-bit R component in the top 14 bits of the word in bytes 0..1, and a 14-bit G component in the top 14 bits of the word in bytes 2..3, with the bottom 2 bits of each word unused.

Value: 64

RG_1616

Added in API level 35
static val RG_1616: Int

Format: 16 bits each red, green. When sampled on the GPU this is represented as an unsigned integer instead of implicit unsigned normalize. For more information see https://www.khronos.org/opengl/wiki/Normalized_Integer

Value: 58

R_12

Added in API level 37
static val R_12: Int

16 bit format with a single 12-bit component. The format is 16 bits unsigned integer that has 12 bits of R component in the top 12 bits of the 16-bit word with the bottom 4 bits unused.

Value: 61

R_14

Added in API level 37
static val R_14: Int

16 bit format with a single 14-bit component. The format is 16-bit unsigned integer that has 14 bits of R component in the top 14 bits of the 16-bit word with the bottom 2 bits unused.

Value: 62

R_16

Added in API level 35
static val R_16: Int

Format: 16 bits red. When sampled on the GPU this is represented as an unsigned integer instead of implicit unsigned normalize. For more information see https://www.khronos.org/opengl/wiki/Normalized_Integer

Value: 57

R_8

Added in API level 35
static val R_8: Int

Format: 8 bits red

Value: 56

S_UI8

Added in API level 28
static val S_UI8: Int

Format: 8 bits stencil

Value: 53

USAGE_COMPOSER_OVERLAY

Added in API level 33
static val USAGE_COMPOSER_OVERLAY: Long

The buffer will be used as a hardware composer overlay layer. That is, it will be displayed using the system compositor via SurfaceControl This flag is currently only needed when using android.view.SurfaceControl.Transaction.setBuffer(SurfaceControl,HardwareBuffer) to set a buffer. In all other cases, the framework adds this flag internally to buffers that could be presented in a composer overlay.

Value: 2048L

USAGE_CPU_READ_OFTEN

Added in API level 26
static val USAGE_CPU_READ_OFTEN: Long

Usage: The buffer will often be read by the CPU

Value: 3L

USAGE_CPU_WRITE_OFTEN

Added in API level 26
static val USAGE_CPU_WRITE_OFTEN: Long

Usage: The buffer will often be written to by the CPU

Value: 48L

USAGE_CPU_WRITE_RARELY

Added in API level 26
static val USAGE_CPU_WRITE_RARELY: Long

Usage: The buffer will sometimes be written to by the CPU

Value: 32L

USAGE_FRONT_BUFFER

Added in API level 33
static val USAGE_FRONT_BUFFER: Long

Usage: The buffer is used for front-buffer rendering. When front-buffering rendering is specified, different usages may adjust their behavior as a result. For example, when used as USAGE_GPU_COLOR_OUTPUT the buffer will behave similar to a single-buffered window. When used with USAGE_COMPOSER_OVERLAY, the system will try to prioritize the buffer receiving an overlay plane & avoid caching it in intermediate composition buffers.

Value: 4294967296L

USAGE_GPU_COLOR_OUTPUT

Added in API level 26
static val USAGE_GPU_COLOR_OUTPUT: Long

Usage: The buffer will be written to by the GPU

Value: 512L

USAGE_GPU_CUBE_MAP

Added in API level 28
static val USAGE_GPU_CUBE_MAP: Long

Usage: The buffer will be used as a cube map texture

Value: 33554432L

USAGE_GPU_DATA_BUFFER

Added in API level 26
static val USAGE_GPU_DATA_BUFFER: Long

Usage: The buffer will be used as a shader storage or uniform buffer object

Value: 16777216L

USAGE_GPU_MIPMAP_COMPLETE

Added in API level 28
static val USAGE_GPU_MIPMAP_COMPLETE: Long

Usage: The buffer contains a complete mipmap hierarchy

Value: 67108864L

USAGE_GPU_SAMPLED_IMAGE

Added in API level 26
static val USAGE_GPU_SAMPLED_IMAGE: Long

Usage: The buffer will be read from by the GPU

Value: 256L

USAGE_PROTECTED_CONTENT

Added in API level 26
static val USAGE_PROTECTED_CONTENT: Long

Usage: The buffer must not be used outside of a protected hardware path

Value: 16384L

USAGE_SENSOR_DIRECT_DATA

Added in API level 26
static val USAGE_