From ae87bf6bbddb781ff7316d032f8dc2302fb608ec Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期三, 19 十二月 2018 19:44:42 +0800
Subject: [PATCH] Merge QiaojiaoSystem Code (svn version is r3345)

---
 QiaoJiaSystem/StructureApp/AppPipeController.cpp      |  167 ++++++-----------------
 QiaoJiaSystem/StructureApp/NewRecordVideoElement.cpp  |  139 +++++++++++++++++--
 QiaoJiaSystem/DataManagerServer/http_configserver.cpp |   43 +++++-
 QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp    |    2 
 QiaoJiaSystem/DataManagerServer/http_configserver.h   |    2 
 QiaoJiaSystem/StructureApp/NewRecordVideoElement.h    |   31 +++
 QiaoJiaSystem/StructureApp/FaceRpcElement.cpp         |    2 
 QiaoJiaSystem/StructureApp/AppPipeController.h        |   18 --
 8 files changed, 231 insertions(+), 173 deletions(-)

diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
index eee56d7..789f602 100644
--- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
+++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -2336,7 +2336,7 @@
             // sub = sub > 3000 ? sub - 3000 : 0000;
             //shijian yuejie buchang
             // sub = sub < 0 ? 0000 : sub;
-            int haomiao = sub % 1000;
+            int haomiao = (sub % 1000) > 50 ? ((sub % 1000) - 50) : 0;
             sub /= 1000;
             int m = sub;
             int shi, fen, miao;
@@ -2345,10 +2345,10 @@
                 shi = m / 3600;
                 fen = m / 60 % 60;
                 miao = m % 60;
-                sprintf(ch_time, "%02d:%02d:%02d.%03d", shi, fen, miao, haomiao);
-                cout << ch_time << endl;
-            } else printf("杈撳叆鏁板�煎お澶�");
+                sprintf(ch_time, "%02d:%02d:%02d.%02d", shi, fen, miao, haomiao / 10);
 
+            } else printf("杈撳叆鏁板�煎お澶�");
+            DBG("ch_time" << ch_time);
             std::string str_time(ch_time);
             //#todo 鎸夌収鏃堕棿鍛藉悕
             std::string str_imgName(AppUtil::getTimeString() + ".jpg");// = "test.jpg";
@@ -2360,7 +2360,7 @@
 
             if (str_time > str_tmpTime) {
                 ERR("{\"error\":\"Time error\"}" << str_time << " str_tmpTime " << str_tmpTime);
-                str_time = str_tmpTime.size() > 0 ? str_tmpTime.substr(0, str_tmpTime.rfind(".")) : str_time;
+                str_time = str_tmpTime.size() > 0 ? str_tmpTime : str_time;
 //            return "{\"error\":\"Time error\"}";
             }
 
@@ -2541,16 +2541,19 @@
                 DBG("path=" << vec[i]);
                 t_FilePath += vec[i] + ".mp4";
                 sub = t - t1;
-                find = true;
+                find = sub < getVideoTime(t_FilePath);
                 break;
             }
 
         } else {
             sub = t - t1;
-            if (t >= t1 && sub <= 3000) {
+            if (t >= t1) {
                 DBG("path=" << vec[i]);
                 t_FilePath += vec[i] + ".mp4";
-                find = true;
+
+                find = sub < getVideoTime(t_FilePath);
+
+                DBG("find:" << find);
                 break;
             }
         }
@@ -2565,6 +2568,30 @@
 
 }
 
+qint64 devHttpServer_c::getVideoTime(const std::string &videoPath) {
+    std::string cmd_getVideoFileTime(
+        " ffmpeg -i '" + videoPath + "' 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");
+
+    std::string str_tmpTime = AppUtil::getCmdResult(cmd_getVideoFileTime);
+    DBG("str_tmpTime:" << str_tmpTime);//00:00:06.89
+    qint64 len_ms = 0;
+
+    QStringList list = QString::fromStdString(str_tmpTime).split(":");
+    if (list.size() == 3) {
+        len_ms = list[0].toInt() * 60 * 60 * 1000;
+        len_ms += list[1].toInt() * 60 * 1000;
+
+        QStringList s = list[2].split(".");
+        if (s.size() == 2) {
+            len_ms += s[0].toInt() * 1000;
+            len_ms += s[1].toInt() * 10;
+        }
+
+    }
+    DBG("len_ms:" << len_ms);
+    return len_ms;
+}
+
 std::vector<std::string> devHttpServer_c::forEachFile(const std::string &dir_name) {
     std::vector<std::string> v;
     auto dir = opendir(dir_name.data());
diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.h b/QiaoJiaSystem/DataManagerServer/http_configserver.h
index 09f8e27..69ee27b 100644
--- a/QiaoJiaSystem/DataManagerServer/http_configserver.h
+++ b/QiaoJiaSystem/DataManagerServer/http_configserver.h
@@ -173,6 +173,8 @@
     std::string getVideoPathByTime(const std::string& time,const std::string& camId,qint64& sub);
 
     std::vector<std::string> forEachFile(const std::string &dir_name);
+
+    qint64 getVideoTime(const std::string& videoPath);
 };
 
 #endif
diff --git a/QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp b/QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp
index 6f0272d..b2b89af 100644
--- a/QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp
+++ b/QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp
@@ -70,7 +70,7 @@
 }
 
 bool TriggerElement::getTriggerState() const {
-    return triggerState;
+    return state;
 }
 
 void TriggerElement::threadInitial() {
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.cpp b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
index 2a0062d..afb6584 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.cpp
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
@@ -36,17 +36,16 @@
     faceRpcElement(camId + "faceRpc"),
     m_json(json),
     faceExtractElement(camId + "faceExtract"),
-   // peTriggerElement(json["perimeter.tolerance"].asInt(), json["perimeter.delay"].asInt()),
+    // peTriggerElement(json["perimeter.tolerance"].asInt(), json["perimeter.delay"].asInt()),
 //    leftTriggerElement(json["keepRight.tolerance"].asInt(), json["keepRight.delay"].asInt()),
 //    rightTriggerElement(json["keepRight.tolerance"].asInt(), json["keepRight.delay"].asInt()),
-   // crowdTriggerElement(json["crowd.tolerance"].asInt(), json["crowd.delay"].asInt()),
+    // crowdTriggerElement(json["crowd.tolerance"].asInt(), json["crowd.delay"].asInt()),
     triggerElement(25, 4),
     recordVideoElement(camId, json["rtsp"].asString()),
     newRecordVideoElement(camId),
     perimeterElement(1),
     crowdElement(json["crowd.num"].asInt()),
-    bRecordVideoEnable(RecordVideoEnable)
-{
+    bRecordVideoEnable(RecordVideoEnable) {
     init();
     initPerimeter();
     initCrowd();
@@ -54,10 +53,7 @@
 }
 
 AppPipeController::~AppPipeController() {
-      if(recordStatus==RECORD_DOING)
-      {
-          newRecordVideoElement.endRecord();
-      }
+
 }
 
 //************************************
@@ -155,23 +151,33 @@
     }
 
 
-   //#todo
-  //  int max=appPref.getIntData("n_cut_max_duration");
-    recordInit(20,100);
+    //#todo
+    //  int max=appPref.getIntData("n_cut_max_duration");
+    // recordInit(40,100);
     videoCaptureElement.registerConnector([&] {
 
-
+        cv::Mat imageTemp = videoCaptureElement.getImage();
 
         std::string strNewTime;
+        strNewTime = AppUtil::getTimeUSecString();
+
+//        cv::putText(imageTemp, strNewTime, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 5,
+//                    cv::Scalar(255, 255, 0), 2);
         if (m_camId.size() > 0) {
-            strNewTime = AppUtil::getTimeUSecString();
 
-            if(bRecordVideoEnable)
-            {
-                newRecordVideoElement.pushImgBuf(strNewTime,videoCaptureElement.getImage());
-                setSdkTrigger();
 
-                doRecord();
+            if (bRecordVideoEnable) {
+                newRecordVideoElement.pushImgBuf(strNewTime, imageTemp);
+                newRecordVideoElement.setSdkTrigger(faceRpcElement.getTriggerState() ||//TODO
+                                                    yoloRpcElement.getTrigger() ||
+                                                    leftJudgment.getTriggerState() ||
+                                                    rightJudgment.getTriggerState() ||
+                                                    perimeterElement.getTriggerState() ||
+                                                    crowdElement.getTriggerState());
+                if (!newRecordVideoElement.isBusy()) {
+                    newRecordVideoElement.submit();
+                }
+
             }
 
         } else {
@@ -193,7 +199,7 @@
             //#todo
             faceRpcElement.setProperty("time", strNewTime);
 //            faceRpcElement.setProperty("time", uuid);
-            faceRpcElement.setImage(videoCaptureElement.getImage());
+            faceRpcElement.setImage(imageTemp);
             faceRpcElement.submit();
         }
 
@@ -201,12 +207,12 @@
 //            yoloRpcElement.setProperty("uuid", uuid);
             //#todo
             yoloRpcElement.setProperty("time", strNewTime);
-            yoloRpcElement.setImage(videoCaptureElement.getImage());
+            yoloRpcElement.setImage(imageTemp);
             yoloRpcElement.submit();
         }
 
         if (!imageDrawElement.isBusy()) {
-            imageDrawElement.setImage(videoCaptureElement.getImage());
+            imageDrawElement.setImage(imageTemp);
             imageDrawElement.submit();
         }
 
@@ -243,6 +249,18 @@
             ImageShowElement::showImage(to_string(this->m_index), *imageDrawElement.getImage());
         }
     });
+    newRecordVideoElement.registerConnector([&] {
+        if (faceRpcElement.getTriggerState() ||//TODO
+            yoloRpcElement.getTrigger() ||
+            leftJudgment.getTriggerState() ||
+            rightJudgment.getTriggerState() ||
+            perimeterElement.getTriggerState() ||
+            crowdElement.getTriggerState()
+            ) {
+
+        }
+
+    });
 
     registerElement(videoCaptureElement);
     if (m_json["yolo.enable"].asString() == "1") {
@@ -253,8 +271,8 @@
         registerElement(faceExtractElement);
     }
     registerElement(imageDrawElement);
-
-    videoCaptureElement.setOutPutInterval(3);
+    registerElement(newRecordVideoElement);
+    videoCaptureElement.setOutPutInterval(5);
     faceExtractElement.setProperty("index", to_string(m_index));
     //#todo setProperty
 //    faceExtractElement.setProperty("index", to_string(m_index));
@@ -319,7 +337,7 @@
     //area="[{\"x\":100,\"y\":6},{\"x\":100,\"y\":1200},{\"x\":1800,\"y\":1200},{\"x\":1800,\"y\":6}]";
     perimeterElement.setMask(area);
     perimeterElement.setFdfs(fdfsClient);
-    perimeterElement.setProperty("sdkType","perimeter");
+    perimeterElement.setProperty("sdkType", "perimeter");
     yoloRpcElement.registerConnector([&] {
         if (!perimeterElement.isBusy()) {
 
@@ -356,7 +374,7 @@
     //area="[{\"x\":100,\"y\":6},{\"x\":100,\"y\":1200},{\"x\":1800,\"y\":1200},{\"x\":1800,\"y\":6}]";
     crowdElement.setMask(area);
     crowdElement.setFdfs(fdfsClient);
-    crowdElement.setProperty("sdkType","crowd");
+    crowdElement.setProperty("sdkType", "crowd");
     yoloRpcElement.registerConnector([&] {
         if (!crowdElement.isBusy()) {
             crowdElement.setObjsResults(yoloRpcElement.getObjects());
@@ -405,104 +423,5 @@
     registerElement(leftJudgment);
     registerElement(rightJudgment);
 
-}
-
-
-//================
-void AppPipeController::recordInit(int videoMin, int videoMax) {
-    sdkTrigger = false;
-    fileMin = videoMin;
-    fileMax = videoMax;
-    triggerDelay = fileMin/2;
-
-    recordStatus = RECORD_STOP;
-    videoLength = 0;
-    recordDelay = 0;
-}
-
-void AppPipeController::setSdkTrigger() {
-    if( faceRpcElement.getTriggerState() ||//TODO
-        yoloRpcElement.getTrigger() ||
-        leftJudgment.getTriggerState()||
-        rightJudgment.getTriggerState() ||
-        perimeterElement.getTriggerState() ||
-        crowdElement.getTriggerState()
-            ){
-        triggerDelay = 0;
-        sdkTrigger = true;
-    } else{
-        if(triggerDelay++ >= fileMin/2) {
-            sdkTrigger = false;
-        }
-        else{
-            sdkTrigger = true;
-        }
-    }
-}
-
-void AppPipeController::doRecord() {
-    switch(recordStatus)
-    {
-        case RECORD_STOP:
-//        DBG("recordDelay:" << recordDelay);
-//        DBG("videoLength:" << videoLength);
-//        DBG("sdkTrigger:" << sdkTrigger);
-            videoLength = 0;
-            recordDelay = 0;
-            if(sdkTrigger){
-                recordStatus = RECORD_DOING;
-                newRecordVideoElement.startRecord();
-            }
-            else
-            {
-                ImgInfo info;
-                newRecordVideoElement.getImg(info);
-            }
-            break;
-
-        case RECORD_DOING:
-            videoLength++;
-            if(sdkTrigger){
-                if(videoLength < fileMax){
-                    newRecordVideoElement.doRecord();
-                }
-                else{
-                    recordStatus = RECORD_STOP;
-                    newRecordVideoElement.endRecord();
-                }
-            }else{
-                recordStatus = RECORD_ENDING;
-                newRecordVideoElement.doRecord();
-            }
-            break;
-
-        case RECORD_ENDING:
-            DBG("recordDelay:" << recordDelay);
-            DBG("videoLength:" << videoLength);
-            DBG("sdkTrigger:" << sdkTrigger);
-            recordDelay++;
-            videoLength++;
-            if(sdkTrigger){
-                if( (recordDelay < fileMin/4) &&
-                    (videoLength < fileMax)){
-                    newRecordVideoElement.doRecord();
-                }else{
-                    recordStatus = RECORD_STOP;
-                    newRecordVideoElement.endRecord();
-                }
-            }else{
-                if( (recordDelay < fileMin/2) &&
-                    (videoLength < fileMax)){
-                    newRecordVideoElement.doRecord();
-                }else{
-                    recordStatus = RECORD_STOP;
-                    newRecordVideoElement.endRecord();
-                }
-            }
-            break;
-
-        default:
-            break;
-    }
 }
 
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.h b/QiaoJiaSystem/StructureApp/AppPipeController.h
index 648b766..58f3e55 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.h
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.h
@@ -93,24 +93,6 @@
 
     std::string getFullFileName();
 
-
-    void recordInit(int videoMin, int videoMax);
-    void setSdkTrigger();
-    void doRecord();
-    int fileMin;
-    int fileMax;
-    bool sdkTrigger;
-    int triggerDelay;
-
-#define RECORD_STOP (0)
-#define RECORD_DOING (1)
-#define RECORD_ENDING (2)
-
-    int recordStatus;
-    int videoLength;
-    int recordDelay;
-
-
 };
 
 #endif // APPPIPECONTROLLER_H
diff --git a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
index ccee428..6f2cdd1 100644
--- a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
+++ b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
@@ -32,7 +32,7 @@
 FaceRpcElement::FaceRpcElement(string shareMemoryName) :
 //#todo
     rpcClient(appPref.getStringData("faceDete.proxy"), appPref.getStringData("faceDete.ip"),
-              appPref.getIntData("faceDete.port"), "tcp"), m_triggerElement(0, 50),
+              appPref.getIntData("faceDete.port"), "tcp"), m_triggerElement(0, 0),
 //    rpcClient("faceServer","",10002,"tcp"),
     sharedMemory(nullptr), trackingTrigger(nullptr) {
     sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
diff --git a/QiaoJiaSystem/StructureApp/NewRecordVideoElement.cpp b/QiaoJiaSystem/StructureApp/NewRecordVideoElement.cpp
index dda7544..a46ad7c 100644
--- a/QiaoJiaSystem/StructureApp/NewRecordVideoElement.cpp
+++ b/QiaoJiaSystem/StructureApp/NewRecordVideoElement.cpp
@@ -3,7 +3,7 @@
 
 //#todo index int -> string
 NewRecordVideoElement::NewRecordVideoElement(std::string camid) :
-videoEncoderElement(cv::Size(1920, 1080), 9, 0),
+videoEncoderElement(cv::Size(1920, 1080), 5, 0),
 camID(camid)
 {
 
@@ -12,7 +12,10 @@
 }
 
 NewRecordVideoElement::~NewRecordVideoElement() {
-m_imgBufQue.clear();
+    queue<ImgInfo> empty;
+    empty.swap(m_imgBufQue);
+
+//m_imgBufQue.clear();
 }
 
 std::string NewRecordVideoElement::startRecord() {
@@ -22,7 +25,7 @@
      getImg(info);
     std::string srcPath= getFileName(info.time);
 
-
+//    DBG("fisrt fps time"<<info.time);
     try {
         videoEncoderElement.threadInitial(srcPath, info.img);
     }
@@ -33,18 +36,20 @@
 }
 
 void NewRecordVideoElement::endRecord() {
-    ImgInfo info;
-    getImg(info);
+    doRecord();
+    doRecord();
+    doRecord();
     videoEncoderElement.threadClosing();
 }
 
 void NewRecordVideoElement::doRecord() {
 
 
-//    ImgInfo info=m_HiredisTool.getImage(camID);
+  //  ImgInfo info=m_HiredisTool.getImage(camID);
      ImgInfo info;
      getImg(info);
-     DBG(" time="<<info.time);
+
+//    DBG(" time="<<info.time);
     videoEncoderElement.doFunc(info.img);
 }
 
@@ -84,29 +89,131 @@
 
     return t_FilePath;
 }
-void NewRecordVideoElement::pushImgBuf(const std::string& time,cv::Mat img)
+void NewRecordVideoElement::pushImgBuf(const std::string& time,cv::Mat& img)
 {
      ImgInfo info;
-     info.img=img;
+     img.copyTo(info.img);
+//     info.img=img;
      info.time=time;
-     m_imgBufQue.push_front(info);
+     m_imgBufQue.push(info);
 //     int size=m_imgBufQue.size();
 //     DBG("m_imgBufQue size="<<size);
 }
  void NewRecordVideoElement::getImg(ImgInfo& info)
  {
         //todo
-        int len=10;
-         info=m_imgBufQue.back();
+        int len=20;
+         info=m_imgBufQue.front();
         int size=m_imgBufQue.size();
-        //DBG("m_imgBufQue size="<<size<<" time="<<info.time);
+//        DBG("m_imgBufQue size="<<size<<" time="<<info.time);
         if(size>len)
         {
-             m_imgBufQue.pop_back();
-
-
+             m_imgBufQue.pop();
         }
 
 
 
  }
+ void NewRecordVideoElement::threadFunc()
+ {
+        Record();
+ }
+ void NewRecordVideoElement::threadInitial()
+ {
+     recordInit(40,100);
+ }
+
+ void NewRecordVideoElement::Record() {
+     switch(recordStatus)
+     {
+         case RECORD_STOP:
+ //        DBG("recordDelay:" << recordDelay);
+ //        DBG("videoLength:" << videoLength);
+ //        DBG("sdkTrigger:" << sdkTrigger);
+             videoLength = 0;
+             recordDelay = 0;
+             if(sdkTrigger){
+                 recordStatus = RECORD_DOING;
+                 startRecord();
+             }
+             else
+             {
+                 ImgInfo info;
+                 getImg(info);
+             }
+             break;
+
+         case RECORD_DOING:
+             videoLength++;
+             if(sdkTrigger){
+                 if(videoLength < fileMax){
+                     doRecord();
+                 }
+                 else
+                 {
+                     recordStatus = RECORD_STOP;
+                     endRecord();
+                 }
+             }
+             else
+             {
+                 recordStatus = RECORD_ENDING;
+                 doRecord();
+             }
+             break;
+
+         case RECORD_ENDING:
+//             DBG("recordDelay:" << recordDelay);
+//             DBG("videoLength:" << videoLength);
+//             DBG("sdkTrigger:" << sdkTrigger);
+             recordDelay++;
+             videoLength++;
+             if(sdkTrigger){
+                 if( (recordDelay < fileMin/4) &&
+                     (videoLength < fileMax)){
+                     doRecord();
+                 }else{
+                     recordStatus = RECORD_STOP;
+                     endRecord();
+                 }
+             }else{
+                 if( (recordDelay < fileMin/2) &&
+                     (videoLength < fileMax)){
+                    doRecord();
+                 }else{
+                     recordStatus = RECORD_STOP;
+                     endRecord();
+                 }
+             }
+             break;
+
+         default:
+             break;
+     }
+ }
+ void NewRecordVideoElement::setSdkTrigger(bool isTrigger) {
+     if(isTrigger)
+     {
+         triggerDelay = 0;
+         sdkTrigger = true;
+     }
+     else
+     {
+         if(triggerDelay++ >= fileMin/2) {
+             sdkTrigger = false;
+         }
+         else{
+             sdkTrigger = true;
+         }
+     }
+ }
+ void NewRecordVideoElement::recordInit(int videoMin, int videoMax) {
+     sdkTrigger = false;
+     fileMin = videoMin;
+     fileMax = videoMax;
+     triggerDelay = fileMin/2;
+
+     recordStatus = RECORD_STOP;
+     videoLength = 0;
+     recordDelay = 0;
+ }
diff --git a/QiaoJiaSystem/StructureApp/NewRecordVideoElement.h b/QiaoJiaSystem/StructureApp/NewRecordVideoElement.h
index 8da45c7..4d56bc1 100644
--- a/QiaoJiaSystem/StructureApp/NewRecordVideoElement.h
+++ b/QiaoJiaSystem/StructureApp/NewRecordVideoElement.h
@@ -1,13 +1,13 @@
 #ifndef NEWRECORDVIDEOELEMENT_H
 #define NEWRECORDVIDEOELEMENT_H
-
+#include <basic/pipe/PipeElement.h>
 #include <basic/pipe_element/ffmpeg/FfmpegElement.h>
 struct ImgInfo
 {
     std::string time;
     cv::Mat img;
 };
-class NewRecordVideoElement {
+class NewRecordVideoElement : public basic::PipeElement{
 
 public:
 
@@ -17,14 +17,35 @@
     ~NewRecordVideoElement();
 
     std::string startRecord();
-
+    void setSdkTrigger(bool isTrigger);
     void doRecord();
 
     void endRecord();
 
-    void pushImgBuf(const std::string& time,cv::Mat img);
+    void pushImgBuf(const std::string& time,cv::Mat& img);
 
     void getImg(ImgInfo& info);
+private:
+    virtual void threadFunc() override;
+    virtual void threadInitial() override;
+private:
+    void recordInit(int videoMin, int videoMax);
+
+    void Record();
+    int fileMin;
+    int fileMax;
+    bool sdkTrigger;
+    int triggerDelay;
+
+#define RECORD_STOP (0)
+#define RECORD_DOING (1)
+#define RECORD_ENDING (2)
+
+    int recordStatus;
+    int videoLength;
+    int recordDelay;
+
+
 
 private:
     std::string getFileName(std::string timeStamp);
@@ -32,7 +53,7 @@
     ffmpeg::VideoEncodeElement videoEncoderElement;
     std::string camID;
     std::string m_cutPath;
-    std::list<ImgInfo> m_imgBufQue;
+    std::queue<ImgInfo> m_imgBufQue;
 };
 
 #endif // RECORDVIDEOELEMENT_H

--
Gitblit v1.8.0