5#ifndef WPIUTIL_WPI_RAWFRAME_H_
6#define WPIUTIL_WPI_RAWFRAME_H_
19#ifdef WPI_RAWFRAME_JNI
82 size_t capacity,
void* cbdata,
83 void (*freeFunc)(
void* cbdata,
void* data,
109 rhs.freeFunc =
nullptr;
110 rhs.freeCbData =
nullptr;
117 rhs.freeFunc =
nullptr;
118 rhs.freeCbData =
nullptr;
137#ifdef WPI_RAWFRAME_JNI
138template <std::same_as<wpi::RawFrame> T>
139void SetFrameData(JNIEnv* env, jclass rawFrameCls, jobject jframe,
140 const T& frame,
bool newData) {
142 static jmethodID setData = env->GetMethodID(
143 rawFrameCls,
"setDataJNI",
"(Ljava/nio/ByteBuffer;IIIIJI)V");
145 jframe, setData, env->NewDirectByteBuffer(frame.data, frame.size),
146 static_cast<jint
>(frame.width),
static_cast<jint
>(frame.height),
147 static_cast<jint
>(frame.stride),
static_cast<jint
>(frame.pixelFormat),
148 static_cast<jlong
>(frame.timestamp),
149 static_cast<jint
>(frame.timestampSrc));
151 static jmethodID setInfo =
152 env->GetMethodID(rawFrameCls,
"setInfoJNI",
"(IIIIJI)V");
153 env->CallVoidMethod(jframe, setInfo,
static_cast<jint
>(frame.width),
154 static_cast<jint
>(frame.height),
155 static_cast<jint
>(frame.stride),
156 static_cast<jint
>(frame.pixelFormat),
157 static_cast<jlong
>(frame.timestamp),
158 static_cast<jint
>(frame.timestampSrc));
int WPI_AllocateRawFrameData(WPI_RawFrame *frame, size_t requestedSize)
WPI_PixelFormat
Pixel formats.
Definition RawFrame.h:51
@ WPI_PIXFMT_YUYV
Definition RawFrame.h:54
@ WPI_PIXFMT_Y16
Definition RawFrame.h:58
@ WPI_PIXFMT_UYVY
Definition RawFrame.h:59
@ WPI_PIXFMT_BGRA
Definition RawFrame.h:60
@ WPI_PIXFMT_MJPEG
Definition RawFrame.h:53
@ WPI_PIXFMT_GRAY
Definition RawFrame.h:57
@ WPI_PIXFMT_RGB565
Definition RawFrame.h:55
@ WPI_PIXFMT_BGR
Definition RawFrame.h:56
@ WPI_PIXFMT_UNKNOWN
Definition RawFrame.h:52
WPI_TimestampSource
Timestamp metadata.
Definition RawFrame.h:66
@ WPI_TIMESRC_UNKNOWN
Definition RawFrame.h:67
@ WPI_TIMESRC_V4L_SOE
Definition RawFrame.h:73
@ WPI_TIMESRC_V4L_EOF
Definition RawFrame.h:71
@ WPI_TIMESRC_FRAME_DEQUEUE
Definition RawFrame.h:68
void WPI_SetRawFrameData(WPI_RawFrame *frame, void *data, size_t size, size_t capacity, void *cbdata, void(*freeFunc)(void *cbdata, void *data, size_t capacity))
void WPI_FreeRawFrameData(WPI_RawFrame *frame)
struct WPI_RawFrame WPI_RawFrame
Raw Frame.
Foonathan namespace.
Definition ntcore_cpp.h:26
Raw Frame.
Definition RawFrame.h:32
int pixelFormat
Definition RawFrame.h:40
uint64_t timestamp
Definition RawFrame.h:44
void * freeCbData
Definition RawFrame.h:37
void(* freeFunc)(void *cbdata, void *data, size_t capacity)
Definition RawFrame.h:36
size_t capacity
Definition RawFrame.h:38
uint8_t * data
Definition RawFrame.h:34
size_t size
Definition RawFrame.h:39
int height
Definition RawFrame.h:42
int stride
Definition RawFrame.h:43
int width
Definition RawFrame.h:41
int timestampSrc
Definition RawFrame.h:45
RawFrame(RawFrame &&rhs) noexcept
Definition RawFrame.h:107
RawFrame & operator=(const RawFrame &)=delete
void SetData(void *data, size_t size, size_t capacity, void *cbdata, void(*freeFunc)(void *cbdata, void *data, size_t capacity))
Definition RawFrame.h:124
RawFrame & operator=(RawFrame &&rhs) noexcept
Definition RawFrame.h:114
bool Reserve(size_t size)
Definition RawFrame.h:130
RawFrame(const RawFrame &)=delete
RawFrame()
Definition RawFrame.h:93
~RawFrame()
Definition RawFrame.h:134