Client API. The Codename One framework your app is built on: this runs on the device, not in a backend.

public final class CameraFrame

  1. Object
  2. CameraFrame

A single frame delivered to a FrameListener.

Lifetime: the byte arrays returned by this class are valid only while FrameListener#onFrame(CameraFrame) is on the stack. After it returns the framework may reuse or release the underlying buffers. Clone any data you need to keep.

Nested types

interface CameraFrame.JpegEncoderEncodes a frame on demand.

Constructors

public CameraFrame(byte[] jpegBytes, byte[] rawBytes, int width, int height, int rotationDegrees, long timestampNanos, FrameFormat format)Used by platform implementations.
public CameraFrame(byte[] jpegBytes, byte[] rawBytes, int width, int height, int rotationDegrees, long timestampNanos, FrameFormat format, CameraFrame.JpegEncoder jpegEncoder)Used by ports that can supply raw frames without eagerly encoding JPEG.

Methods

public synchronized byte[] getJpegBytes()JPEG-encoded bytes for this frame.
public byte[] getRawBytes()Raw pixel bytes in the format requested via CameraSessionOptions#frameFormat(FrameFormat).
public int getWidth()Pixel width of the frame.
public int getHeight()Pixel height of the frame.
public int getRotationDegrees()Clockwise rotation in degrees (0, 90, 180, 270) that should be applied to the bytes to display them upright.
public long getTimestampNanos()Monotonic timestamp in nanoseconds.
public FrameFormat getFormat()Pixel format requested for this frame.

Inherited methods

Constructor details

CameraFrame

public CameraFrame(byte[] jpegBytes, byte[] rawBytes, int width, int height, int rotationDegrees, long timestampNanos, FrameFormat format)
Used by platform implementations.

CameraFrame

public CameraFrame(byte[] jpegBytes, byte[] rawBytes, int width, int height, int rotationDegrees, long timestampNanos, FrameFormat format, CameraFrame.JpegEncoder jpegEncoder)
Used by ports that can supply raw frames without eagerly encoding JPEG. The encoder is invoked at most once after a successful encoding, when #getJpegBytes() is first called. Existing eager callers need no encoder.

Method details

getJpegBytes

public synchronized byte[] getJpegBytes()
JPEG-encoded bytes for this frame. Always non-null regardless of the requested FrameFormat; use this when encoded image data is needed. VisionImage#fromCameraFrame(CameraFrame) instead selects the raw buffer for NV21 and RGBA8888 frames. A raw frame may encode its JPEG lazily on the first call; subsequent calls return the cached bytes.

getRawBytes

public byte[] getRawBytes()
Raw pixel bytes in the format requested via CameraSessionOptions#frameFormat(FrameFormat). This is null for JPEG requests and may also be null when the current port cannot expose the requested raw format. In that case getJpegBytes() remains available as a fallback.

getWidth

public int getWidth()
Pixel width of the frame.

getHeight

public int getHeight()
Pixel height of the frame.

getRotationDegrees

public int getRotationDegrees()
Clockwise rotation in degrees (0, 90, 180, 270) that should be applied to the bytes to display them upright.

getTimestampNanos

public long getTimestampNanos()
Monotonic timestamp in nanoseconds. Useful for measuring inter-frame intervals.

getFormat

public FrameFormat getFormat()
Pixel format requested for this frame. A non-JPEG value describes getRawBytes() when that buffer is available; ports that cannot expose raw pixels may return null there while still reporting the requested format. JPEG bytes returned by getJpegBytes() are always JPEG-encoded regardless of this value.