Files
sunnypilot/system/loggerd/encoder/v4l_encoder.h
Dean Lee b59b27e01e loggerd/encoder: refactor constructors to take EncoderInfo as parameter (#28921)
* refactor constructors to take EncoderInfo as parameter

* remove last arg codec

* use macro to init function pointers
old-commit-hash: 713d2ec586
2023-07-15 10:39:40 -07:00

33 lines
788 B
C++

#pragma once
#include "common/queue.h"
#include "system/loggerd/encoder/encoder.h"
#define BUF_IN_COUNT 7
#define BUF_OUT_COUNT 6
class V4LEncoder : public VideoEncoder {
public:
V4LEncoder(const EncoderInfo &encoder_info, int in_width, int in_height)
: VideoEncoder(encoder_info, in_width, in_height) { encoder_init(); }
~V4LEncoder();
void encoder_init();
int encode_frame(VisionBuf* buf, VisionIpcBufExtra *extra);
void encoder_open(const char* path);
void encoder_close();
private:
int fd;
bool is_open = false;
int segment_num = -1;
int counter = 0;
SafeQueue<VisionIpcBufExtra> extras;
static void dequeue_handler(V4LEncoder *e);
std::thread dequeue_handler_thread;
VisionBuf buf_out[BUF_OUT_COUNT];
SafeQueue<unsigned int> free_buf_in;
};