public class VideoFrameRef
extends java.lang.Object
VideoFrameRef
class encapsulates a single video frame - the output of a
VideoStream
at a specific time. The data contained will be a single frame of color, IR,
or depth video, along with associated meta data.
An object of type VideoFrameRef
does not actually hold the data of the frame, but only a
reference to it. OpenNI uses a ref-count to decide when the data buffer can be freed.
Once the frame is no longer needed, it can be released by calling the release()
method.
Although the finalization process of the garbage collector also releases the reference,
it is preferable to manually release it by calling this method rather than to
rely on a finalization process which may not run to completion for a long period of time.
The usual way to obtain VideoFrameRef
objects is by a call to
VideoStream.readFrame()
. Please note that the returned frame
holds native memory. Although the finalization process of the garbage collector
also disposes of the same system resources, it is preferable to manually free
the associated resources by calling this method rather than to rely on a finalization
process which may not run to completion for a long period of time.
All data references by a VideoFrameRef
is stored as a primitive array of pixels. Each
pixel will be of a type according to the configured pixel format (see VideoMode
).Modifier and Type | Method | Description |
---|---|---|
protected void |
finalize() |
|
int |
getCropOriginX() |
Indicates the X coordinate of the upper left corner of the crop window.
|
int |
getCropOriginY() |
Indicates the Y coordinate of the upper left corner of the crop window.
|
boolean |
getCroppingEnabled() |
Indicates whether cropping was enabled when the frame was produced.
|
java.nio.ByteBuffer |
getData() |
Getter function for the array of data pointed to by this object.
|
int |
getFrameIndex() |
Frames are provided sequential frame ID numbers by the sensor that produced them.
|
int |
getHeight() |
Gives the current height of this frame, measured in pixels.
|
SensorType |
getSensorType() |
Getter function for the sensor type used to produce this frame.
|
int |
getStrideInBytes() |
Gives the length of one row of pixels, measured in bytes.
|
long |
getTimestamp() |
Provides a timestamp for the frame.
|
VideoMode |
getVideoMode() |
Returns a reference to the
VideoMode object assigned to this frame. |
int |
getWidth() |
Gives the current width of this frame, measured in pixels.
|
void |
release() |
Release the reference to the frame.
|
public final java.nio.ByteBuffer getData()
getVideoMode()
).public SensorType getSensorType()
SensorType
enumeration for all possible return
values from this function.public final VideoMode getVideoMode()
VideoMode
object assigned to this frame. This object
describes the video mode the sensor was configured to when the frame was produced and can be
used to determine the pixel format and resolution of the data. It will also provide the frame
rate that the sensor was running at when it recorded this frame.VideoMode
assigned to this frame.public long getTimestamp()
public int getFrameIndex()
Device.setDepthColorSyncEnabled(boolean)
, then frame numbers for
corresponding frames of depth and color are guaranteed to match.
If frame synchronization is not enabled, then there is no guarantee of matching frame indexes
between VideoStream
"VideoStreams". In the latter case, applications should use
timestamps instead of frame indexes to align frames in time.public int getWidth()
VideoMode
used to produce this frame.public int getHeight()
VideoMode
used to produce this frame.public boolean getCroppingEnabled()
public int getCropOriginX()
public int getCropOriginY()
public int getStrideInBytes()
public void release()
VideoStream
::readFrame() call.
Although the finalization process of the garbage collector also releases the reference,
it is preferable to manually release it by calling this method rather than to
rely on a finalization process which may not run to completion for a long period of time.protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable