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
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)

Attempt to unwrap this object into an underlying type.

Public constructors

FakeImagePlane

Added in 1.7.0-alpha02
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 buffer of size rowStride * rowCount is allocated lazily upon first access.

Public methods

getBuffer

Added in 1.7.0-alpha02
public @NonNull ByteBuffer getBuffer()
See also
getBuffer

getPixelStride

Added in 1.7.0-alpha02
public int getPixelStride()

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

getRowStride

Added in 1.7.0-alpha02
public int getRowStride()

The row stride of the plane in bytes.

unwrapAs

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

Attempt to unwrap this object into an underlying type.

This operation is not safe and should be used with caution as it makes no guarantees about the state of the underlying objects. In particular, implementations should assume that fakes, test wrappers will always return null. Finally this method should return null when unwrapping into the provided type is not supported.

Returns
T

unwrapped object matching T or null