From ed223aee5fe5f3b222488549597976f34c679c3d Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期二, 05 三月 2019 14:00:47 +0800
Subject: [PATCH] 代码格式化及部分bug修改

---
 QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp |  181 +++++++++++++++++++++++++++++++++++---------
 1 files changed, 142 insertions(+), 39 deletions(-)

diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
index 6166a4f..60dc82e 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -10,11 +10,10 @@
 
 RtspAnalysManager::RtspAnalysManager(LDBTool *_dbTool) : m_lDBTool(nullptr), m_maxCount(50), m_currentCount(0) {
     INFO("MYH DEBUG HERE");
-    m_lDBTool=new LDBTool;
+    m_lDBTool = new LDBTool;
     init();
 
 }
-
 
 
 static std::string rtspAddrBuild(std::string ip, const int port, std::string username,
@@ -41,6 +40,8 @@
 //鍒濆鍖栧嚱鏁�
 void RtspAnalysManager::init() {
     INFO("MYH DEBUG HERE")
+    //#todo GB28181
+#ifndef GB28181
     auto lst = m_lDBTool->searchCamDevTableAll();
     Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
 
@@ -50,27 +51,25 @@
     if (lst.size() > 0) {
         int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep");
         int CamCount = appPref.getIntData("CamStep");
-        INFO("StartCamNO: "<<startCamNO<<" CamStep: "<<CamCount);
+        INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount);
         auto itor = lst.begin();
 
-        if(startCamNO >= lst.size())
-        {
+        if (startCamNO >= lst.size()) {
             ERR("startCamNO > lst.size()");
             return;
         }
 
-        for(int i=0; i < startCamNO; i++){
+        for (int i = 0; i < startCamNO; i++) {
 
             std::string t_camIdex = itor->str_cam_dev_id.toStdString();
             std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(),
                                                  itor->str_password.toStdString(), itor->str_brand.toStdString());
-            INFO("JumpCam: "<<t_camIdex<<"  URL: "<<rtsp_url);
+            INFO("JumpCam: " << t_camIdex << "  URL: " << rtsp_url);
             itor++;
         }
 
         for (int i = 0; i < CamCount; i++) {
-            if (itor == lst.end())
-            {
+            if (itor == lst.end()) {
                 ERR("itor == lst.end()");
                 return;
             }
@@ -96,13 +95,68 @@
     } else {
         ERR("searchCamDevTableAll size is 0");
     }
+#else
+    auto lst = m_lDBTool->searchCamDevTableByType(1);
+    Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
 
+    //璁剧疆瑙嗛鐨勬渶闀垮拰鏈�鐭椂闂撮棿闅�
+    appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration);
+    appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration);
+    if (lst.size() > 0) {
+//        int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep");
+//        int CamCount = appPref.getIntData("CamStep");
+//        INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount);
+//        auto itor = lst.begin();
+//
+//        if (startCamNO >= lst.size()) {
+//            ERR("startCamNO > lst.size()");
+//            return;
+//        }
+//        for (int i = 0; i < startCamNO; i++) {
+//
+//            std::string t_camIdex = itor->str_cam_dev_id.toStdString();
+//            std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(),
+//                                                 itor->str_password.toStdString(), itor->str_brand.toStdString());
+//            INFO("JumpCam: " << t_camIdex << "  URL: " << rtsp_url);
+//            itor++;
+//        }
+//
+//        for (int i = 0; i < CamCount; i++) {
+//            if (itor == lst.end()) {
+//                ERR("itor == lst.end()");
+//                return;
+//            }
+//            std::string t_camIdex = itor->str_cam_dev_id.toStdString();
+//            std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(),
+//                                                 itor->str_password.toStdString(), itor->str_brand.toStdString());
+//            INFO("cam add is " << itor->str_addr.toStdString());
+//
+//            addCamera(t_camIdex, rtsp_url);
+//            itor++;
+//        }
+
+        for (auto item : lst) {
+            std::string t_camIdex = item.str_cam_dev_id.toStdString();
+            std::string rtsp_url = "GB28181";
+//            rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(),
+//                                                 item.str_password.toStdString(), item.str_brand.toStdString());
+            INFO("cam add is " << item.str_addr.toStdString());
+
+            addCamera(t_camIdex, rtsp_url);
+
+        }
+    } else {
+        ERR("searchCamDevTableAll size is 0");
+    }
+
+
+#endif
 }
 
 RtspAnalysManager::~RtspAnalysManager() {
     INFO("Program Exit");
     for (auto controller: m_controllers) {
-        INFO("Delete Controller: "<<controller.first);
+        INFO("Delete Controller: " << controller.first);
         delete controller.second;
     }
     m_controllers.clear();
@@ -116,23 +170,56 @@
  * @param rtsp 涓婇潰鐨勬憚鍍忔満瀵瑰簲鐨勮棰戣矾寰�
  * @return -1 娣诲姞澶辫触,0 娣诲姞鎴愬姛
  */
-int RtspAnalysManager::addCamera(const std::string &index, const std::string& rtsp) {
-    auto lst = m_lDBTool->searchCamDevTableAll();
+int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) {
+#ifndef GB28181
+    //    why search lst ?
+    //    auto lst = m_lDBTool->searchCamDevTableAll();
+        Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
+        if (m_controllers.find(index) == m_controllers.end()) {
+            INFO("MYH DEBUG HERE");
+            if (m_currentCount >= m_maxCount) {
+                ERR("addCamera faild, camera's num is full!")
+                return -1;
+            }
+            INFO("RTSP: " << rtsp << "  INDEX:" << index);
+            m_imgRedisControllers[index] = new RtspImageRedisElement(index);
+            m_imgRedisControllers[index]->start();
+
+            m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this);
+            m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, lst_dev.n_cut_max_duration);
+            m_controllers[index]->start();
+            m_currentCount++;
+            return 0;
+
+        } else {
+            removeCamera(index);
+            INFO("removeCamera " << index);
+            //DBG("removeCamera " << index);
+            return addCamera(index, rtsp);
+        }
+#else
+    //#todo
+//    why search lst ?
+//    auto lst = m_lDBTool->searchCamDevTableAll();
     Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
 
-    if (m_controllers.find(index) == m_controllers.end()) {
+    //#todo end
+    if (m_controllers_videoCapElem.find(index) == m_controllers_videoCapElem.end()) {
         INFO("MYH DEBUG HERE");
         if (m_currentCount >= m_maxCount) {
             ERR("addCamera faild, camera's num is full!")
             return -1;
         }
-        INFO("RTSP: "<<rtsp<<"  INDEX:"<<index);
+        INFO("RTSP: " << rtsp << "  INDEX:" << index);
         m_imgRedisControllers[index] = new RtspImageRedisElement(index);
         m_imgRedisControllers[index]->start();
 
-        m_controllers[index] = new RtspCaptureElement(rtsp,index, 25,3000,0,this);
-        m_controllers[index]->start();
-        m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration,lst_dev.n_cut_max_duration);
+        //VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1)
+        m_controllers_videoCapElem[index] = new BASICGB28181::VideoCaptureElementWithRtp(const_cast<string &>(index),
+                                                                                         25, 1, 0);
+        m_controllers_videoCapElem[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration,
+                                                                 lst_dev.n_cut_max_duration);
+        m_controllers_videoCapElem[index]->start();
         m_currentCount++;
         return 0;
 
@@ -142,6 +229,7 @@
         //DBG("removeCamera " << index);
         return addCamera(index, rtsp);
     }
+#endif
 }
 
 /**
@@ -151,6 +239,7 @@
  */
 int RtspAnalysManager::removeCamera(const std::string &index) {
     INFO("MYH DEBUG HERE");
+#ifndef GB28181
     if (m_controllers.find(index) == m_controllers.end())return -1;
     auto controller = m_controllers[index];
     controller->stop();
@@ -158,6 +247,16 @@
     delete controller;
     m_controllers.erase(index);
     m_currentCount--;
+
+#else
+    if (m_controllers_videoCapElem.find(index) == m_controllers_videoCapElem.end())return -1;
+    auto controller = m_controllers_videoCapElem[index];
+    controller->stop();
+    controller->wait();
+    delete controller;
+    m_controllers_videoCapElem.erase(index);
+    m_currentCount--;
+#endif
 
     auto imgRedis = m_imgRedisControllers[index];
     imgRedis->stop();
@@ -174,6 +273,7 @@
  */
 int RtspAnalysManager::removeAll() {
     INFO("MYH DEBUG HERE");
+#ifndef GB28181
     for (auto controller: m_controllers) {
         controller.second->stop();
     }
@@ -182,9 +282,18 @@
         delete controller.second;
     }
     m_controllers.clear();
+#else
+    for (auto controller: m_controllers_videoCapElem) {
+        controller.second->stop();
+    }
+    for (auto controller: m_controllers_videoCapElem) {
+        controller.second->wait();
+        delete controller.second;
+    }
+    m_controllers_videoCapElem.clear();
+#endif
     INFO("MYH DEBUG HERE");
 
-
     for (auto controller: m_imgRedisControllers) {
         controller.second->stop();
     }
@@ -192,7 +301,7 @@
         controller.second->wait();
         delete controller.second;
     }
-    m_controllers.clear();
+    m_imgRedisControllers.clear();
 
 
     m_currentCount = 0;
@@ -212,37 +321,31 @@
 
 
 //褰曞彇瑙嗛鐨凴PC鐨勬帴鍙e嚱鏁�
-::std::string RtspAnalysManager::recordVideo(const ::std::string& name, const ::Ice::Current&)
-{
-    INFO("Record Video For: "<<name);
-    ImageName_s_t nameSt=ImageName_s_t::fromString(name);
-    if(nameSt.Valid())
-    {
+::std::string RtspAnalysManager::recordVideo(const ::std::string &name, const ::Ice::Current &) {
+    INFO("Record Video For: " << name);
+    ImageName_s_t nameSt = ImageName_s_t::fromString(name);
+    if (nameSt.Valid()) {
         auto pCaptureElem = m_controllers.find(nameSt.m_camId);
-        if(pCaptureElem!= m_controllers.end())
-        {
+        if (pCaptureElem != m_controllers.end()) {
             pCaptureElem->second->SaveVideo(name);
-        } else{
-            ERR("Can not Find CamId "<<nameSt.m_camId);
+        } else {
+            ERR("Can not Find CamId " << nameSt.m_camId);
         }
-    }
-    else{
-        ERR("Record Video Failed:Name Not Valid  Name:  "<<name);
+    } else {
+        ERR("Record Video Failed:Name Not Valid  Name:  " << name);
     }
     return name;
 }
 
 //淇濆瓨瑙嗛鍒癛tspImageRedis鐨勯槦鍒�,鐢盧tspCaptureElement璋冪敤
-bool RtspAnalysManager::SaveImageToRedis(const std::string& camId,const std::string& imageName,const cv::Mat& img)
-{
+bool RtspAnalysManager::SaveImageToRedis(const std::string &camId, const std::string &imageName, const cv::Mat &img) {
     INFO("MYH DEBUG HERE");
     auto item = m_imgRedisControllers.find(camId);
-    if(item!=m_imgRedisControllers.end())
-    {
-        INFO("Save Succeed Cam: "<<camId<<" ImageKey: "<<imageName);
-        item->second->SaveImage(imageName,img);
+    if (item != m_imgRedisControllers.end()) {
+        INFO("Save Succeed Cam: " << camId << " ImageKey: " << imageName);
+        item->second->SaveImage(imageName, img);
     } else {
-        ERR("Save Failed Cam: "<<camId<<" ImageKey: "<<imageName);
+        ERR("Save Failed Cam: " << camId << " ImageKey: " << imageName);
     }
     INFO("MYH DEBUG HERE");
     return true;

--
Gitblit v1.8.0