public final class FakeImagePlane implements ImagePlane


Fake implementation of ImagePlane for testing classes that consume camera image planes.

This class provides lazy buffer allocation and multiple construction paradigms to support both standalone dimension-based allocation and slicing from a shared contiguous parent buffer.

Usage Examples

1. Standalone Allocation by Dimensions

Allocates a direct ByteBuffer of size rowStride * rowCount when accessed.

val plane = FakeImagePlane(rowStride = 640, rowCount = 480)
assertThat(plane.buffer.capacity()).isEqualTo(640 * 480)

2. Custom Strides and Sub-sampling

Useful for mocking interleaved UV planes where pixel stride is 2.

val uvPlane = FakeImagePlane(rowStride = 640, rowCount = 240, pixelStride = 2)

3. Backing by an Existing Buffer Slice

Avoids extra allocations by wrapping an existing buffer window (e.g. from a contiguous NV12 buffer). Ensure the slice maintains native byte ordering (order(ByteOrder.nativeOrder())).

val slice = parentBuffer.slice().order(ByteOrder.nativeOrder())
val plane = FakeImagePlane(rowStride = 640, pixelStride = 1, buffer = slice)
assertThat(plane.buffer).isSameInstanceAs(slice)

Summary

Public constructors

FakeImagePlane(
    int rowStride,
    int rowCount,
    int pixelStride,
    ByteBuffer buffer
)

Public methods

@NonNull ByteBuffer

A ByteBuffer containing the image data for this plane.

int

The distance between adjacent pixel samples in bytes.

int

The row stride of the plane in bytes.

T
<T extends Object> unwrapAs(@NonNull Class<@NonNull T> type)

Unwraps this fake image plane to its underlying implementation types.

Public constructors

FakeImagePlane

Added in 1.7.0-alpha03
public FakeImagePlane(
    int rowStride,
    int rowCount,
    int pixelStride,
    ByteBuffer buffer
)
Parameters
int rowStride

The row stride of the plane in bytes.

int rowCount

The height of the plane in rows. Used for lazy buffer allocation if buffer is null. Defaults to 1 (convenient for single-row compressed formats like JPEG).

int pixelStride

The distance between adjacent pixel samples in bytes. Defaults to 1.

ByteBuffer buffer

An optional pre-allocated ByteBuffer to back this plane. If null, a direct ByteBuffer of size rowStride * rowCount is allocated lazily using FakeByteBuffers.allocateNative upon first access.

Public methods

getBuffer

Added in 1.7.0-alpha03
public @NonNull ByteBuffer getBuffer()

A ByteBuffer containing the image data for this plane.

If a custom buffer was passed to the constructor, it is returned directly. Otherwise, a direct ByteBuffer with native byte order and capacity equal to rowStride * rowCount is allocated lazily upon first access.

getPixelStride

Added in 1.7.0-alpha03
public int getPixelStride()

The distance between adjacent pixel samples in bytes. Defaults to 1.

getRowStride

Added in 1.7.0-alpha03
public int getRowStride()

The row stride of the plane in bytes.

unwrapAs

Added in 1.7.0-alpha03
public T <T extends Object> unwrapAs(@NonNull Class<@NonNull T> type)

Unwraps this fake image plane to its underlying implementation types.

This implementation supports unwrapping to:

Parameters
@NonNull Class<@NonNull T> type

The class representing the type to unwrap to.

Returns
T

The unwrapped object instance of type T, or null if the requested type is not supported.