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
Definition H264EncoderV4L2Helper.h:10
void stop()
Definition H264EncoderV4L2Helper.cpp:94
int mFD
Definition H264EncoderV4L2Helper.h:49
void capturePlaneDQCallback(AV4L2Buffer *buffer)
Definition H264EncoderV4L2Helper.cpp:389
int getMotionVectors(uint32_t buffer_index, v4l2_ctrl_videoenc_outputbuf_metadata_MV &enc_mv_metadata)
Definition H264EncoderV4L2Helper.cpp:252
framemetadata_sp h264Metadata
Definition H264EncoderV4L2Helper.h:60
std::unique_ptr< AV4L2ElementPlane > mCapturePlane
Definition H264EncoderV4L2Helper.h:51
void initEncoderParams(uint32_t bitrate, uint32_t fps)
Definition H264EncoderV4L2Helper.cpp:161
int getExtControls(v4l2_ext_controls &ctl)
Definition H264EncoderV4L2Helper.cpp:242
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:173
std::function< frame_sp(size_t size, string &pinId)> makeFrame
Definition H264EncoderV4L2Helper.h:61
void initV4L2()
Definition H264EncoderV4L2Helper.cpp:108
std::unique_ptr< AV4L2ElementPlane > mOutputPlane
Definition H264EncoderV4L2Helper.h:50
int setExtControlsMV(v4l2_ext_controls &ctl)
Definition H264EncoderV4L2Helper.cpp:131
bool processEOS()
Definition H264EncoderV4L2Helper.cpp:445
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:36
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:28
std::function< void(frame_container &errorFrame)> SendFrameContainer
Definition H264EncoderV4L2Helper.h:12
void setLevel()
Definition H264EncoderV4L2Helper.cpp:202
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:313
~H264EncoderV4L2Helper()
Definition H264EncoderV4L2Helper.cpp:82
int enableMotionVectorReporting()
Definition H264EncoderV4L2Helper.cpp:142
std::shared_ptr< H264EncoderV4L2Helper > mSelf
Definition H264EncoderV4L2Helper.h:48
void setFrameRate(uint32_t framerate_num, uint32_t framerate_den)
Definition H264EncoderV4L2Helper.cpp:213
void termV4L2()
Definition H264EncoderV4L2Helper.cpp:99
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:41
SendFrameContainer mSendFrameContainer
Definition H264EncoderV4L2Helper.h:53
bool process(frame_sp &frame)
Definition H264EncoderV4L2Helper.cpp:430
bool enableMotionVectors
Definition H264EncoderV4L2Helper.h:56
int setExtControls(v4l2_ext_control &control)
Definition H264EncoderV4L2Helper.cpp:229
void reuseCatureBuffer(ExtFrame *pointer, uint32_t index, std::shared_ptr< H264EncoderV4L2Helper > self)
Definition H264EncoderV4L2Helper.cpp:423
std::unique_ptr< V4L2CUYUV420Converter > mConverter
Definition H264EncoderV4L2Helper.h:62
void setProfile()
Definition H264EncoderV4L2Helper.cpp:184