video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2019-07-19 e6725cb3cf4ced3a6985d4d3db4d5cf1336a30d8
csrc/wrapper.hpp
@@ -15,7 +15,8 @@
namespace ffwrapper{
    class FormatIn;
    class FormatOut;
    class VideoProp;
    class CodedData;
    class FrameData;
@@ -26,6 +27,7 @@
enum WORKER{
    WORKER_RECORDER = 0,
    WORKER_DECODER,
    WORKER_ENCODER,
};
namespace cffmpeg_wrap{
@@ -49,6 +51,7 @@
        private: 
            std::unique_ptr<ffwrapper::FormatIn> init_reader(const char* input);
            ffwrapper::FormatIn* init_reader_gb28181(const char* input);
            void init_worker(ffwrapper::FormatIn *in);
            int init_recorder(ffwrapper::FormatIn *in, std::string dir, const int mind, const int maxd);
            void run_worker(ffwrapper::FormatIn *in, buz::avpacket &pkt);
@@ -70,11 +73,18 @@
                                FUNC_REC func);
            void ScalePicture(const int w, const int h, const int flags);
            void UseGB28181();
            void UseCPU();
        public: //decoder
            void BuildDecoder();
            void GetPicDecoder(unsigned char **data, int *w, int *h);
            //active api
            void ActiveDecoder(FUNC_DEC fn);
        public:
            void BuildEncoder(const char *file, const int w, const int h, const int fps, const int br, const int gi);
            int init_encoder(ffwrapper::FormatIn *in, const char *file, const int w, const int h, const int fps, const int br, const int gi);
        private:
            std::string input_url_;
@@ -101,10 +111,19 @@
            FUNC_DEC func_dec_;
            int scale_w_, scale_h_, scale_f_;
            int gb_, cpu_;
        //////////////////test frame to bgr24
        public:
            uint8_t *decodeJPEG(const char *file, int *w, int *h);
        private:
            ffwrapper::FormatOut *encoder_;
    };
    void *CreateEncoder(const int w, const int h, const int fps, const int br, const int scale_flag, const int gi);
    void DestroyEncoder(void *h);
    int Encode(void *hdl, uint8_t *in, const int w, const int h, uint8_t **out, int *size, int *key);
}
#endif