From a6dd7933e0bd8ae1fd083639758f7fee9fc7a151 Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期二, 10 九月 2019 16:34:10 +0800
Subject: [PATCH] Merge branch 'master' of ssh://192.168.1.14:29418/valib/goffmpeg

---
 csrc/wrapper.hpp |   30 ++++++++++++++++++++++++------
 1 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/csrc/wrapper.hpp b/csrc/wrapper.hpp
index 943936f..66f2aca 100644
--- a/csrc/wrapper.hpp
+++ b/csrc/wrapper.hpp
@@ -35,6 +35,8 @@
         unsigned char *data;
         int w;
         int h;
+
+        int64_t id;
     }pic_bgr24;
 
     namespace buz{
@@ -42,11 +44,14 @@
         struct avpacket;
     }
 
-    typedef std::function<std::shared_ptr<buz::Recorder>(ffwrapper::FormatIn*)> FN_REC;
+    // 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;    
+        std::string rid;
+        std::string dir;
+        int min;
+        int max;
+        std::unique_ptr<buz::Recorder> rec;    
     }FnRec;
 
     class Wrapper{
@@ -58,10 +63,10 @@
             std::unique_ptr<ffwrapper::FormatIn> init_reader(const char* input);
             // ffwrapper::FormatIn* init_reader_gb28181(const char* input);
             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);
+            std::unique_ptr<buz::Recorder> init_recorder(ffwrapper::FormatIn *in, std::string id,std::string dir, const int mind, const int maxd);
 
             void cache_rec_info(std::string &id, int &index, std::string &path);
-            void cache_pic(std::shared_ptr<ffwrapper::FrameData> &frame);
+            void cache_pic(std::shared_ptr<ffwrapper::FrameData> &frame, int64_t &id);
 
             void cacheAVPacket(const AVPacket &pkt);
         public: 
@@ -80,7 +85,7 @@
             void UseCPU();
         public: //decoder
             void BuildDecoder();
-            void GetPicDecoder(unsigned char **data, int *w, int *h);
+            void GetPicDecoder(unsigned char **data, int *w, int *h, int64_t *id);
             void GetPacket(unsigned char **pktData, int *size, int *key);
             //active api
 
@@ -100,6 +105,7 @@
             struct record_file_info{
                 int file_frame_index;
                 std::string file_path;
+                std::string rec_id;
             };
             std::list<struct record_file_info>  list_rec_;
             std::unordered_map<std::string, std::string> list_rec_map_;
@@ -114,6 +120,18 @@
 
             int scale_w_, scale_h_, scale_f_;
             int gb_, cpu_;
+
+            typedef struct recpkt{
+                std::shared_ptr<ffwrapper::CodedData> data;
+                int64_t id;
+            }recpkt;
+            std::list<recpkt> list_rec_pkt_;
+            std::mutex mtx_rec_pkt_;
+            int cache_rec_pkt(const buz::avpacket &pkt);
+            void maybe_dump_rec_pkt();
+            int     maxduration;
+            int     minduration;
+
         //////////////////test frame to bgr24
         public:
             uint8_t *decodeJPEG(const char *file, int *w, int *h);

--
Gitblit v1.8.0