From d2bec7c45f71a12734b359f10bda6302ecd8a657 Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期一, 29 七月 2019 11:49:22 +0800
Subject: [PATCH] Merge branch 'master' of ssh://192.168.1.14:29418/valib/goffmpeg

---
 csrc/wrapper.hpp |   47 ++++++++++++++++++-----------------------------
 1 files changed, 18 insertions(+), 29 deletions(-)

diff --git a/csrc/wrapper.hpp b/csrc/wrapper.hpp
index db45ea7..943936f 100644
--- a/csrc/wrapper.hpp
+++ b/csrc/wrapper.hpp
@@ -28,15 +28,8 @@
     class cvbridge;
 }
 
-enum WORKER{
-    WORKER_RECORDER = 0,
-    WORKER_DECODER,
-    WORKER_ENCODER,
-};
-
 namespace cffmpeg_wrap{
 
-    typedef std::function<int(ffwrapper::FormatIn*)> FUNC_WORKER;
 
     typedef struct _pic_bgr24{
         unsigned char *data;
@@ -48,6 +41,14 @@
         class Recorder;
         struct avpacket;
     }
+
+    typedef std::function<std::shared_ptr<buz::Recorder>(ffwrapper::FormatIn*)> FN_REC;
+
+    typedef struct _fn_rec{
+        FN_REC fn_init;
+        std::shared_ptr<buz::Recorder> rec;    
+    }FnRec;
+
     class Wrapper{
         public:
             Wrapper();
@@ -56,11 +57,10 @@
         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);
+            std::shared_ptr<buz::Recorder> init_recorder(ffwrapper::FormatIn *in, std::string id,std::string dir, const int mind, const int maxd);
 
-            void cache_rec_info(int &index, std::string &path);
+            void cache_rec_info(std::string &id, int &index, std::string &path);
             void cache_pic(std::shared_ptr<ffwrapper::FrameData> &frame);
 
             void cacheAVPacket(const AVPacket &pkt);
@@ -70,13 +70,10 @@
             void run_stream_thread();
 
         public: //recorder
-            void BuildRecorder(const char *dir, const int mind, const int maxd);
-            int FireRecorder(const int64_t &id);
+            void BuildRecorder(const char* id,const char *dir, const int mind, const int maxd);
+            int FireRecorder(const char* sid,const int64_t &id);
             void GetInfoRecorder(int &index, std::string &path);
-
-            // active api
-            void ActiveRecorder(const char *dir, const int mind, const int maxd,
-                                FUNC_REC func);
+            std::string GetRecorderID(const std::string &path);
 
             void ScalePicture(const int w, const int h, const int flags);
             void UseGB28181();
@@ -86,22 +83,18 @@
             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);
-
-        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_;
-            buz::Recorder  *recorder_;
 
             std::unique_ptr<std::thread> thread_;
             std::atomic_bool    stop_stream_;
 
             ffwrapper::cvbridge *bridge_;
-            std::unordered_map<int, FUNC_WORKER> map_workers_;
+
+            bool use_decoder_;
+            std::unordered_map<std::string, FnRec> map_rec_;
 
             //passive api
             struct record_file_info{
@@ -109,6 +102,8 @@
                 std::string file_path;
             };
             std::list<struct record_file_info>  list_rec_;
+            std::unordered_map<std::string, std::string> list_rec_map_;
+
             std::mutex mutex_rec_;
 
             std::list<pic_bgr24> list_pic_;
@@ -117,18 +112,12 @@
             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);
 
-        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);

--
Gitblit v1.8.0