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 | 126 +++++++++++++++++++++++++++++++++++++++--
1 files changed, 119 insertions(+), 7 deletions(-)
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
index dd25e47..60dc82e 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -40,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();
@@ -93,7 +95,62 @@
} 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() {
@@ -114,10 +171,40 @@
* @return -1 娣诲姞澶辫触,0 娣诲姞鎴愬姛
*/
int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) {
- auto lst = m_lDBTool->searchCamDevTableAll();
+#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!")
@@ -127,9 +214,12 @@
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;
@@ -139,6 +229,7 @@
//DBG("removeCamera " << index);
return addCamera(index, rtsp);
}
+#endif
}
/**
@@ -148,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();
@@ -155,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();
@@ -171,6 +273,7 @@
*/
int RtspAnalysManager::removeAll() {
INFO("MYH DEBUG HERE");
+#ifndef GB28181
for (auto controller: m_controllers) {
controller.second->stop();
}
@@ -179,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();
}
@@ -189,7 +301,7 @@
controller.second->wait();
delete controller.second;
}
- m_controllers.clear();
+ m_imgRedisControllers.clear();
m_currentCount = 0;
--
Gitblit v1.8.0