Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
AV4L2ElementPlane.h
1#pragma once
2
3#include "AV4L2Buffer.h"
4#include <functional>
5#include <libv4l2.h>
6
7#include <pthread.h>
8
10{
11public:
12 AV4L2ElementPlane(int fd, uint32_t type, uint32_t pixelFormat, enum v4l2_memory memType);
14
15 void setPlaneFormat(uint32_t width, uint32_t height);
16 void setupPlane();
17 void deinitPlane();
18 void setStreamStatus(bool status);
19
21
22 typedef std::function<void (AV4L2Buffer*)> dqThreadCallback;
24 void startDQThread();
25 int waitForDQThread(uint32_t max_wait_ms);
26 static void* dqThread(void *plane);
27
28 int qBuffer(uint32_t index);
29 void qAllBuffers();
30
31 void setEOSFlag(AV4L2Buffer* buffer);
32
33private:
34 void reqbufs(uint32_t count);
35 void queryBuffer(uint32_t i);
36 void exportBuffer(uint32_t i);
37
38 int dqBuffer(AV4L2Buffer **buffer, uint32_t retries);
39
40public:
41 struct v4l2_format mFormat;
42
43private:
44 int mCount;
46 uint32_t mType;
47 uint32_t mPixelFormat;
48 enum v4l2_memory mMemType;
49 uint32_t mNumPlanes;
50 int mFD;
51
54
56
57 pthread_mutex_t plane_lock;
58 pthread_cond_t plane_cond;
59
63 pthread_t mDQThread;
64};
Definition AV4L2Buffer.h:17
Definition AV4L2ElementPlane.h:10
struct v4l2_format mFormat
Definition AV4L2ElementPlane.h:41
bool mStreamOn
Definition AV4L2ElementPlane.h:55
int mFreeCount
Definition AV4L2ElementPlane.h:45
AV4L2Buffer * getFreeBuffer()
Definition AV4L2ElementPlane.cpp:354
void setDQThreadCallback(dqThreadCallback callback)
Definition AV4L2ElementPlane.cpp:177
void reqbufs(uint32_t count)
Definition AV4L2ElementPlane.cpp:62
void qAllBuffers()
Definition AV4L2ElementPlane.cpp:368
uint32_t mNumPlanes
Definition AV4L2ElementPlane.h:49
enum v4l2_memory mMemType
Definition AV4L2ElementPlane.h:48
uint32_t mPixelFormat
Definition AV4L2ElementPlane.h:47
void startDQThread()
Definition AV4L2ElementPlane.cpp:260
void deinitPlane()
Definition AV4L2ElementPlane.cpp:381
pthread_cond_t plane_cond
Definition AV4L2ElementPlane.h:58
std::function< void(AV4L2Buffer *)> dqThreadCallback
Definition AV4L2ElementPlane.h:22
void queryBuffer(uint32_t i)
Definition AV4L2ElementPlane.cpp:111
AV4L2Buffer * mTempBuffer
Definition AV4L2ElementPlane.h:53
pthread_t mDQThread
Definition AV4L2ElementPlane.h:63
void setupPlane()
Definition AV4L2ElementPlane.cpp:45
void setEOSFlag(AV4L2Buffer *buffer)
Definition AV4L2ElementPlane.cpp:396
static void * dqThread(void *plane)
Definition AV4L2ElementPlane.cpp:275
int dqBuffer(AV4L2Buffer **buffer, uint32_t retries)
Definition AV4L2ElementPlane.cpp:188
uint32_t mType
Definition AV4L2ElementPlane.h:46
bool mStopDQThread
Definition AV4L2ElementPlane.h:62
pthread_mutex_t plane_lock
Definition AV4L2ElementPlane.h:57
int qBuffer(uint32_t index)
Definition AV4L2ElementPlane.cpp:241
bool mDQThreadRunning
Definition AV4L2ElementPlane.h:61
int mFD
Definition AV4L2ElementPlane.h:50
~AV4L2ElementPlane()
Definition AV4L2ElementPlane.cpp:21
int mCount
Definition AV4L2ElementPlane.h:44
int waitForDQThread(uint32_t max_wait_ms)
Definition AV4L2ElementPlane.cpp:309
void setPlaneFormat(uint32_t width, uint32_t height)
Definition AV4L2ElementPlane.cpp:27
void exportBuffer(uint32_t i)
Definition AV4L2ElementPlane.cpp:122
void setStreamStatus(bool status)
Definition AV4L2ElementPlane.cpp:143
dqThreadCallback mCallback
Definition AV4L2ElementPlane.h:60
AV4L2ElementPlane(int fd, uint32_t type, uint32_t pixelFormat, enum v4l2_memory memType)
Definition AV4L2ElementPlane.cpp:5
AV4L2Buffer ** mBuffers
Definition AV4L2ElementPlane.h:52