From 23bd97eaa5626ad96ca3f5d3e97e93d14705ca6d Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期六, 30 三月 2019 17:50:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/yangwu1.3' into 1.3nsq

---
 QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp |  165 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 137 insertions(+), 28 deletions(-)

diff --git a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
index f64710f..e354f4e 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
+++ b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
@@ -26,8 +26,8 @@
 }
 
 RtspAnalysElement::RtspAnalysElement(LDBTool *_dbTool) : m_lDBTool(_dbTool), maxCount(50), currentCount(0) {
-    init();
     resetFdfs();
+    init();
     {
 //        std::thread httpServer([&]() {
 //            //#todo port
@@ -68,42 +68,151 @@
 }
 
 void RtspAnalysElement::init() {
-    auto lst = m_lDBTool->searchCamDevTableAll();
+
+    m_GB28181_Enable = appPref.getIntData("GB28181_Enable");
+
     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) {
-        Json::Value json;
-        for (auto item : lst) {
-            std::string t_camIdex = item.str_cam_dev_id.toStdString();
-            std::string rtsp_url = rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(),
-                                                 item.str_password.toStdString(), item.str_brand.toStdString());
-            SdkRuleMap ruleMap = m_lDBTool->searchSdkRuleByCamId(item.str_cam_dev_id);
-            for (auto &rule:ruleMap) {
-                if (rule.second.nThreshold < 5 || rule.second.nThreshold > 95) {
-                    rule.second.nThreshold = 75;
-                }
-                rule.second.fSensitivity = (float) (rule.second.nThreshold) / 100;
-                DBG("fSensitivity" << rule.second.fSensitivity);
-                rule.second.strAddr = item.str_addr;
-                rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(item.str_cam_dev_id, rule.first);
+    //#todo GB28181
+    if (m_GB28181_Enable) {
+        auto lst = m_lDBTool->searchCamDevTableByType(1);
+
+        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) {
+            Json::Value json;
+            int startCamNO = appPref.getIntData("CamStartNO");
+            int CamCount = appPref.getIntData("CamEndNO") - appPref.getIntData("CamStartNO") + 1;
+            auto itor = lst.begin();
+
+            if (startCamNO >= lst.size()) {
+                ERR("startCamNO > lst.size()");
+                return;
             }
-            appPref.setStringData(t_camIdex + "rtsp", rtsp_url);
-            // appPref.setStringData(t_camIdex+"addr", item.str_addr.toStdString());
-            json["rtsp"] = rtsp_url;
-            // json["addr"] = item.str_addr.toStdString();
 
-            INFO("cam add is " << item.str_addr.toStdString());
+            for (int i = 0; i < startCamNO; i++) {
+                itor++;
+            }
 
-            addCamera(t_camIdex, ruleMap);
+            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 = "GB28181";
+
+                SdkRuleMap ruleMap = m_lDBTool->searchSdkRuleByCamId(itor->str_cam_dev_id);
+                for (auto &rule:ruleMap) {
+
+                    rule.second.strAddr = itor->str_addr;
+                    rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(itor->str_cam_dev_id, rule.first);
+
+                    if (rule.second.nSdkType == PerStaticSdk) {
+                        float temp = 1 - (float) (rule.second.nThreshold) / 100;
+                        rule.second.fSensitivity = (75 + 25 * temp) / 100;
+
+                    } else if (rule.second.nSdkType != FaceSdk) {
+                        float temp = 1 - (float) (rule.second.nThreshold) / 100;
+                        rule.second.fSensitivity = (5 + 90 * temp) / 100;
+                    }
+                    DBG("fSensitivity" << rule.second.fSensitivity);
+                }
+                appPref.setStringData(t_camIdex + "rtsp", rtsp_url);
+
+                INFO("cam add is " << itor->str_addr.toStdString());
+                addCamera(t_camIdex, ruleMap);
+                itor++;
+            }
+
+//            for (auto &item : lst) {
+//                std::string t_camIdex = item.str_cam_dev_id.toStdString();
+//                std::string rtsp_url = "GB28181";
+//
+//                SdkRuleMap ruleMap = m_lDBTool->searchSdkRuleByCamId(item.str_cam_dev_id);
+//                for (auto &rule:ruleMap) {
+//
+//                    rule.second.strAddr = item.str_addr;
+//                    rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(item.str_cam_dev_id, rule.first);
+//
+//                    if (rule.second.nSdkType == PerStaticSdk) {
+//                        float temp = 1 - (float) (rule.second.nThreshold) / 100;
+//                        rule.second.fSensitivity = (75 + 25 * temp) / 100;
+//
+//                    } else if (rule.second.nSdkType != FaceSdk) {
+//                        float temp = 1 - (float) (rule.second.nThreshold) / 100;
+//                        rule.second.fSensitivity = (5 + 90 * temp) / 100;
+//                    }
+//                    DBG("fSensitivity" << rule.second.fSensitivity);
+//                }
+//                appPref.setStringData(t_camIdex + "rtsp", rtsp_url);
+//                INFO("cam add is " << item.str_addr.toStdString());
+//                addCamera(t_camIdex, ruleMap);
+//            }
+        } else {
+            ERR("searchCamDevTableAll size is 0");
         }
-    } else {
-        ERR("searchCamDevTableAll size is 0");
-    }
 
+    } else {
+
+        auto lst = m_lDBTool->searchCamDevTableByType(0);
+
+        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) {
+            Json::Value json;
+            int startCamNO = appPref.getIntData("CamStartNO");
+            int CamCount = appPref.getIntData("CamEndNO") - appPref.getIntData("CamStartNO") + 1;
+            auto itor = lst.begin();
+
+            if (startCamNO >= lst.size()) {
+                ERR("startCamNO > lst.size()");
+                return;
+            }
+
+            for (int i = 0; i < startCamNO; i++) {
+                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());
+                SdkRuleMap ruleMap = m_lDBTool->searchSdkRuleByCamId(itor->str_cam_dev_id);
+                for (auto &rule:ruleMap) {
+
+                    rule.second.strAddr = itor->str_addr;
+                    rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(itor->str_cam_dev_id, rule.first);
+
+                    if (rule.second.nSdkType == PerStaticSdk) {
+                        float temp = 1 - (float) (rule.second.nThreshold) / 100;
+                        rule.second.fSensitivity = (75 + 25 * temp) / 100;
+
+                    } else if (rule.second.nSdkType != FaceSdk) {
+                        float temp = 1 - (float) (rule.second.nThreshold) / 100;
+                        rule.second.fSensitivity = (5 + 90 * temp) / 100;
+                    }
+                    DBG("fSensitivity" << rule.second.fSensitivity);
+                }
+                appPref.setStringData(t_camIdex + "rtsp", rtsp_url);
+                json["rtsp"] = rtsp_url;
+
+                INFO("cam add is " << itor->str_addr.toStdString());
+                addCamera(t_camIdex, ruleMap);
+                itor++;
+            }
+        } else {
+            ERR("searchCamDevTableAll size is 0");
+        }
+
+    }
 }
 
+
 RtspAnalysElement::~RtspAnalysElement() {
     for (auto controller: controllers) {
         delete controller.second;

--
Gitblit v1.8.0