#ifndef TRANS_CODE_H #define TRANS_CODE_H #include #include #include #include #include "MThread.h" #include "V4l2Device.h" #include "V4l2Capture.h" #include "RkEncoder.h" #include "DeCompress.h" class TransCoder : public MThread { public: typedef struct { int width; int height; int fps; int fix_qp; std::string format; std::string device_name; } Config_t; TransCoder(); ~TransCoder(); void init(); void run() override; void setOnEncoderDataCallback(std::function &&)> callback); TransCoder::Config_t const &getConfig() const; private: Config_t config; V4l2Capture *capture; uint8_t *yuv_buf; int yuv_size; uint8_t *encodeData; int frameSize; std::function &&)> onEncodedDataCallback; RkEncoder *rk_encoder; DeCompress *decompress; }; #endif