video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2019-07-26 f6aa35eedbc76e7467a68dbe3aba63ec8cb352a5
csrc/wrapper.hpp
@@ -1,6 +1,10 @@
#ifndef _cffmpeg_wrapper_hpp_
#define _cffmpeg_wrapper_hpp_
extern "C"{
#include <libavcodec/avcodec.h>
}
#include <stdint.h>
#include <string>
@@ -51,13 +55,15 @@
        private: 
            std::unique_ptr<ffwrapper::FormatIn> init_reader(const char* input);
            ffwrapper::FormatIn* init_reader_gb28181(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);
            void cache_rec_info(int &index, std::string &path);
            void cache_pic(std::shared_ptr<ffwrapper::FrameData> &frame);
            void cacheAVPacket(const AVPacket &pkt);
        public: 
            int RunStream(const char* input);
        private: 
@@ -73,9 +79,12 @@
                                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);
            void GetPacket(unsigned char **pktData, int *size, int *key);
            //active api
            void ActiveDecoder(FUNC_DEC fn);
@@ -104,11 +113,16 @@
            std::list<pic_bgr24> list_pic_;
            std::mutex mutex_pic_;
            std::list<AVPacket> list_avpkt_;
            std::mutex mutex_avpkt_;
            // active api
            FUNC_REC func_rec_;
            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);