2#include <boost/pool/object_pool.hpp>
5#include "AV4L2ElementPlane.h"
6#include "V4L2CUYUV420Converter.h"
7#include <v4l2_nv_extensions.h>
13 static std::shared_ptr<H264EncoderV4L2Helper>
create(
enum v4l2_memory memType, uint32_t pixelFormat, uint32_t width, uint32_t height, uint32_t step, uint32_t bitrate,
bool enableMotionVectors,
int motionVectorThreshold, uint32_t fps, std::string
h264FrameOutputPinId, std::string
motionVectorFramePinId, framemetadata_sp
h264Metadata, std::function<frame_sp(
size_t size,
string& pinId)>
makeFrame,
SendFrameContainer sendFrameContainer);
15 H264EncoderV4L2Helper(
enum v4l2_memory memType, uint32_t pixelFormat, uint32_t width, uint32_t height, uint32_t step, uint32_t bitrate,
bool enableMotionVectors,
int motionVectorThreshold, uint32_t fps,std::string
h264FrameOutputPinId, std::string
motionVectorFramePinId, framemetadata_sp
h264Metadata, std::function<frame_sp(
size_t size,
string& pinId)>
makeFrame,
SendFrameContainer sendFrameContainer);
24 void setSelf(std::shared_ptr<H264EncoderV4L2Helper> &mother);
32 void setFrameRate(uint32_t framerate_num, uint32_t framerate_den);
45 v4l2_ctrl_videoenc_outputbuf_metadata_MV &enc_mv_metadata);
46 void serializeMotionVectors(v4l2_ctrl_videoenc_outputbuf_metadata_MV enc_mv_metadata, frame_container &frames);
48 std::shared_ptr<H264EncoderV4L2Helper>
mSelf;
61 std::function<frame_sp(
size_t size,
string& pinId)>
makeFrame;
Definition AV4L2Buffer.h:17
void stop()
Definition H264EncoderV4L2Helper.cpp:93
int mFD
Definition H264EncoderV4L2Helper.h:49
void capturePlaneDQCallback(AV4L2Buffer *buffer)
Definition H264EncoderV4L2Helper.cpp:315
int getMotionVectors(uint32_t buffer_index, v4l2_ctrl_videoenc_outputbuf_metadata_MV &enc_mv_metadata)
Definition H264EncoderV4L2Helper.cpp:251
framemetadata_sp h264Metadata
Definition H264EncoderV4L2Helper.h:60
std::unique_ptr< AV4L2ElementPlane > mCapturePlane
Definition H264EncoderV4L2Helper.h:51
std::function< void(frame_container &errorFrame)> SendFrameContainer
Definition H264EncoderV4L2Helper.h:12
void initEncoderParams(uint32_t bitrate, uint32_t fps)
Definition H264EncoderV4L2Helper.cpp:160
int getExtControls(v4l2_ext_controls &ctl)
Definition H264EncoderV4L2Helper.cpp:241
int motionVectorThreshold
Definition H264EncoderV4L2Helper.h:57
int mHeight
Definition H264EncoderV4L2Helper.h:55
std::string h264FrameOutputPinId
Definition H264EncoderV4L2Helper.h:58
void setBitrate(uint32_t bitrate)
Definition H264EncoderV4L2Helper.cpp:172
std::function< frame_sp(size_t size, string &pinId)> makeFrame
Definition H264EncoderV4L2Helper.h:61
void initV4L2()
Definition H264EncoderV4L2Helper.cpp:107
std::unique_ptr< AV4L2ElementPlane > mOutputPlane
Definition H264EncoderV4L2Helper.h:50
int setExtControlsMV(v4l2_ext_controls &ctl)
Definition H264EncoderV4L2Helper.cpp:130
bool processEOS()
Definition H264EncoderV4L2Helper.cpp:357
std::queue< uint64_t > incomingTimeStamp
Definition H264EncoderV4L2Helper.h:64
std::string motionVectorFramePinId
Definition H264EncoderV4L2Helper.h:59
void setSelf(std::shared_ptr< H264EncoderV4L2Helper > &mother)
Definition H264EncoderV4L2Helper.cpp:35
int mWidth
Definition H264EncoderV4L2Helper.h:54
static std::shared_ptr< H264EncoderV4L2Helper > create(enum v4l2_memory memType, uint32_t pixelFormat, uint32_t width, uint32_t height, uint32_t step, uint32_t bitrate, bool enableMotionVectors, int motionVectorThreshold, uint32_t fps, std::string h264FrameOutputPinId, std::string motionVectorFramePinId, framemetadata_sp h264Metadata, std::function< frame_sp(size_t size, string &pinId)> makeFrame, SendFrameContainer sendFrameContainer)
Definition H264EncoderV4L2Helper.cpp:27
void setLevel()
Definition H264EncoderV4L2Helper.cpp:201
boost::object_pool< ExtFrame > frame_opool
Definition H264EncoderV4L2Helper.h:52
void serializeMotionVectors(v4l2_ctrl_videoenc_outputbuf_metadata_MV enc_mv_metadata, frame_container &frames)
Definition H264EncoderV4L2Helper.cpp:273
~H264EncoderV4L2Helper()
Definition H264EncoderV4L2Helper.cpp:81
int enableMotionVectorReporting()
Definition H264EncoderV4L2Helper.cpp:141
std::shared_ptr< H264EncoderV4L2Helper > mSelf
Definition H264EncoderV4L2Helper.h:48
void setFrameRate(uint32_t framerate_num, uint32_t framerate_den)
Definition H264EncoderV4L2Helper.cpp:212
void termV4L2()
Definition H264EncoderV4L2Helper.cpp:98
H264EncoderV4L2Helper(enum v4l2_memory memType, uint32_t pixelFormat, uint32_t width, uint32_t height, uint32_t step, uint32_t bitrate, bool enableMotionVectors, int motionVectorThreshold, uint32_t fps, std::string h264FrameOutputPinId, std::string motionVectorFramePinId, framemetadata_sp h264Metadata, std::function< frame_sp(size_t size, string &pinId)> makeFrame, SendFrameContainer sendFrameContainer)
Definition H264EncoderV4L2Helper.cpp:40
SendFrameContainer mSendFrameContainer
Definition H264EncoderV4L2Helper.h:53
bool process(frame_sp &frame)
Definition H264EncoderV4L2Helper.cpp:342
bool enableMotionVectors
Definition H264EncoderV4L2Helper.h:56
int setExtControls(v4l2_ext_control &control)
Definition H264EncoderV4L2Helper.cpp:228
void reuseCatureBuffer(ExtFrame *pointer, uint32_t index, std::shared_ptr< H264EncoderV4L2Helper > self)
Definition H264EncoderV4L2Helper.cpp:335
std::unique_ptr< V4L2CUYUV420Converter > mConverter
Definition H264EncoderV4L2Helper.h:62
void setProfile()
Definition H264EncoderV4L2Helper.cpp:183