From c8d9556e2aa8e64f956a5b516c8c80dbbc195b5d Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期二, 05 三月 2019 09:25:30 +0800
Subject: [PATCH] 添加GB28181模块

---
 QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 56 insertions(+), 3 deletions(-)

diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
index dd25e47..a5ea3b0 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -114,9 +114,9 @@
  * @return -1 娣诲姞澶辫触,0 娣诲姞鎴愬姛
  */
 int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) {
+#ifndef GB28181
     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) {
@@ -139,6 +139,38 @@
         //DBG("removeCamera " << index);
         return addCamera(index, rtsp);
     }
+#else
+    //#todo
+    auto lst = m_lDBTool->searchCamDevTableAll();
+    Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
+
+    //#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);
+        m_imgRedisControllers[index] = new RtspImageRedisElement(index);
+        m_imgRedisControllers[index]->start();
+
+        //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]->start();
+        m_controllers_videoCapElem[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration,
+                                                                 lst_dev.n_cut_max_duration);
+        m_currentCount++;
+        return 0;
+
+    } else {
+        removeCamera(index);
+        INFO("removeCamera " << index);
+        //DBG("removeCamera " << index);
+        return addCamera(index, rtsp);
+    }
+#endif
 }
 
 /**
@@ -148,6 +180,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();
@@ -155,6 +188,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();
@@ -171,6 +214,7 @@
  */
 int RtspAnalysManager::removeAll() {
     INFO("MYH DEBUG HERE");
+#ifndef GB28181
     for (auto controller: m_controllers) {
         controller.second->stop();
     }
@@ -179,9 +223,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();
     }
@@ -189,7 +242,7 @@
         controller.second->wait();
         delete controller.second;
     }
-    m_controllers.clear();
+    m_imgRedisControllers.clear();
 
 
     m_currentCount = 0;

--
Gitblit v1.8.0