|
@@ -5,6 +5,7 @@
|
|
|
|
|
|
#include "CalculateDBPhaseThread.h"
|
|
|
#include "ConsistencyCompareThread.h"
|
|
|
+#include "GlobalVariable.h"
|
|
|
#include "NoiseDetectThread.h"
|
|
|
#include "RtpOneRoadThread.h"
|
|
|
|
|
@@ -47,8 +48,8 @@ BaseRecordThread* ThreadManager::findRecordThread(EThreadType type, int cardID,
|
|
|
case EThreadType::Type_RecordSrc: /* 录音线程 */
|
|
|
for (auto& pThread : m_recordThreads)
|
|
|
{
|
|
|
- if (pThread->getThreadInfo().RoadInfo.roadInfo.nRoadNum == recordID &&
|
|
|
- pThread->getThreadInfo().RoadInfo.nSoundCardNum == cardID)
|
|
|
+ if (pThread->getThreadInfo().cardRoadInfo.roadInfo.nRoadNum == recordID &&
|
|
|
+ pThread->getThreadInfo().cardRoadInfo.nSoundCardNum == cardID)
|
|
|
{
|
|
|
return pThread;
|
|
|
}
|
|
@@ -57,8 +58,8 @@ BaseRecordThread* ThreadManager::findRecordThread(EThreadType type, int cardID,
|
|
|
case EThreadType::Type_CreateWAV: /* 创建wav小文件和分离左右声道的线程 */
|
|
|
for (auto& pThread : m_createWAVThreads)
|
|
|
{
|
|
|
- if (pThread->getThreadInfo().RoadInfo.nSoundCardNum == cardID &&
|
|
|
- pThread->getThreadInfo().RoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
+ if (pThread->getThreadInfo().cardRoadInfo.nSoundCardNum == cardID &&
|
|
|
+ pThread->getThreadInfo().cardRoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
{
|
|
|
return pThread;
|
|
|
}
|
|
@@ -67,8 +68,8 @@ BaseRecordThread* ThreadManager::findRecordThread(EThreadType type, int cardID,
|
|
|
case EThreadType::Type_CalculateDBAndPhase: /* 计算音量和反相的线程 */
|
|
|
for (auto& pThread : m_createDBPhaseThreads)
|
|
|
{
|
|
|
- if (pThread->getThreadInfo().RoadInfo.nSoundCardNum == cardID &&
|
|
|
- pThread->getThreadInfo().RoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
+ if (pThread->getThreadInfo().cardRoadInfo.nSoundCardNum == cardID &&
|
|
|
+ pThread->getThreadInfo().cardRoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
{
|
|
|
return pThread;
|
|
|
}
|
|
@@ -77,8 +78,8 @@ BaseRecordThread* ThreadManager::findRecordThread(EThreadType type, int cardID,
|
|
|
case EThreadType::Type_CreateLongWAV: /* 创建长文件的线程 */
|
|
|
for (auto& pThread : m_createLongWAVThreads)
|
|
|
{
|
|
|
- if (pThread->getThreadInfo().RoadInfo.nSoundCardNum == cardID &&
|
|
|
- pThread->getThreadInfo().RoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
+ if (pThread->getThreadInfo().cardRoadInfo.nSoundCardNum == cardID &&
|
|
|
+ pThread->getThreadInfo().cardRoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
{
|
|
|
return pThread;
|
|
|
}
|
|
@@ -87,8 +88,8 @@ BaseRecordThread* ThreadManager::findRecordThread(EThreadType type, int cardID,
|
|
|
case EThreadType::Type_AssignSrcData: /* 分派数据线程 */
|
|
|
for (auto& pThread : m_assignSrcDataThreads)
|
|
|
{
|
|
|
- if (pThread->getThreadInfo().RoadInfo.nSoundCardNum == cardID &&
|
|
|
- pThread->getThreadInfo().RoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
+ if (pThread->getThreadInfo().cardRoadInfo.nSoundCardNum == cardID &&
|
|
|
+ pThread->getThreadInfo().cardRoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
{
|
|
|
return pThread;
|
|
|
}
|
|
@@ -96,8 +97,8 @@ BaseRecordThread* ThreadManager::findRecordThread(EThreadType type, int cardID,
|
|
|
case EThreadType::Type_RtpSend: /* RTP发送线程 */
|
|
|
for (auto& pThread : m_rtpSendThreads)
|
|
|
{
|
|
|
- if (pThread->getThreadInfo().RoadInfo.nSoundCardNum == cardID &&
|
|
|
- pThread->getThreadInfo().RoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
+ if (pThread->getThreadInfo().cardRoadInfo.nSoundCardNum == cardID &&
|
|
|
+ pThread->getThreadInfo().cardRoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
{
|
|
|
return pThread;
|
|
|
}
|
|
@@ -118,8 +119,8 @@ CreateWAVThread* ThreadManager::getCreateWAVThread(int cardID, int recordID)
|
|
|
{
|
|
|
for(auto& pThread : m_createWAVThreads)
|
|
|
{
|
|
|
- if(pThread->getThreadInfo().RoadInfo.nSoundCardNum == cardID &&
|
|
|
- pThread->getThreadInfo().RoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
+ if(pThread->getThreadInfo().cardRoadInfo.nSoundCardNum == cardID &&
|
|
|
+ pThread->getThreadInfo().cardRoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
{
|
|
|
return dynamic_cast<CreateWAVThread*>(pThread);
|
|
|
}
|
|
@@ -132,8 +133,8 @@ CreateDBPhaseThread* ThreadManager::getCreateDBPhaseThread(int cardID, int recor
|
|
|
{
|
|
|
for(auto& pThread : m_createDBPhaseThreads)
|
|
|
{
|
|
|
- if(pThread->getThreadInfo().RoadInfo.nSoundCardNum == cardID &&
|
|
|
- pThread->getThreadInfo().RoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
+ if(pThread->getThreadInfo().cardRoadInfo.nSoundCardNum == cardID &&
|
|
|
+ pThread->getThreadInfo().cardRoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
{
|
|
|
return dynamic_cast<CreateDBPhaseThread*>(pThread);
|
|
|
}
|
|
@@ -146,8 +147,8 @@ RTPOneRoadThread* ThreadManager::getRtpSendThread(int cardID, int recordID)
|
|
|
{
|
|
|
for(auto& pThread : m_rtpSendThreads)
|
|
|
{
|
|
|
- if(pThread->getThreadInfo().RoadInfo.nSoundCardNum == cardID &&
|
|
|
- pThread->getThreadInfo().RoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
+ if(pThread->getThreadInfo().cardRoadInfo.nSoundCardNum == cardID &&
|
|
|
+ pThread->getThreadInfo().cardRoadInfo.roadInfo.nRoadNum == recordID)
|
|
|
{
|
|
|
return dynamic_cast<RTPOneRoadThread*>(pThread);
|
|
|
}
|
|
@@ -162,7 +163,7 @@ RTPOneRoadThread* ThreadManager::getRtpSendThread(int cardID, int recordID)
|
|
|
* -------------------------------------------------------------------------------------------- */
|
|
|
|
|
|
/* 获取一致性比对线程,线程不存在则创建 */
|
|
|
-ConsistencyCompareThread* ThreadManager::getConsistencyCompareThread(const CompareItemRoadInfo_t& roadInfo1, const CompareItemRoadInfo_t& roadInfo2)
|
|
|
+ConsistencyCompareThread* ThreadManager::getConsistencyCompareThread(const SoundCardRoadInfo_t& roadInfo1, const SoundCardRoadInfo_t& roadInfo2)
|
|
|
{
|
|
|
std::lock_guard<std::mutex> lock(m_mutexConsistencyCompareThreads);
|
|
|
for(const auto pThread : m_listConsistencyCompareThreads)
|
|
@@ -173,9 +174,16 @@ ConsistencyCompareThread* ThreadManager::getConsistencyCompareThread(const Compa
|
|
|
}
|
|
|
}
|
|
|
/* 没找到该线程,创建新的线程 */
|
|
|
+ CompareItemRoadInfo_t item1;
|
|
|
+ item1.nCompareRoadNum = 1;
|
|
|
+ item1.scRoadInfo = roadInfo1;
|
|
|
+ CompareItemRoadInfo_t item2;
|
|
|
+ item2.nCompareRoadNum = 2;
|
|
|
+ item2.scRoadInfo = roadInfo2;
|
|
|
+
|
|
|
CalculateThreadInfo_t threadInfo;
|
|
|
- threadInfo.compareItemInfo.mapRoad.insert(roadInfo1.nCompareRoadNum, roadInfo1);
|
|
|
- threadInfo.compareItemInfo.mapRoad.insert(roadInfo2.nCompareRoadNum, roadInfo2);
|
|
|
+ threadInfo.compareItemInfo.mapRoad.insert(item1.nCompareRoadNum, item1);
|
|
|
+ threadInfo.compareItemInfo.mapRoad.insert(item2.nCompareRoadNum, item2);
|
|
|
ConsistencyCompareThread* newThread = new ConsistencyCompareThread(threadInfo);
|
|
|
|
|
|
if(newThread == nullptr)
|
|
@@ -192,7 +200,7 @@ ConsistencyCompareThread* ThreadManager::getConsistencyCompareThread(const Compa
|
|
|
}
|
|
|
|
|
|
/* 去掉线程,线程使用的计数减一,计数为0则销毁该线程 */
|
|
|
-bool ThreadManager::removeConsistencyCompareThread(RoadNumberInfo_t& roadInfo1, RoadNumberInfo_t& roadInfo2)
|
|
|
+bool ThreadManager::removeConsistencyCompareThread(SoundCardRoadInfo_t& roadInfo1, SoundCardRoadInfo_t& roadInfo2)
|
|
|
{
|
|
|
std::lock_guard<std::mutex> lock(m_mutexConsistencyCompareThreads);
|
|
|
ConsistencyCompareThread* pThreadToRemove = nullptr;
|
|
@@ -206,7 +214,8 @@ bool ThreadManager::removeConsistencyCompareThread(RoadNumberInfo_t& roadInfo1,
|
|
|
}
|
|
|
if(pThreadToRemove == nullptr)
|
|
|
{
|
|
|
- SPDLOG_LOGGER_WARN(m_logger, "{}-{} 一致性比对线程未找到", roadInfo1.strRoadName, roadInfo2.strRoadName);
|
|
|
+ SPDLOG_LOGGER_WARN(m_logger, "{}:{} - {}:{} 一致性比对线程未找到", roadInfo1.strSoundCardName.toStdString(), roadInfo1.roadInfo.nRoadNum,
|
|
|
+ roadInfo2.strSoundCardName.toStdString(), roadInfo2.roadInfo.nRoadNum);
|
|
|
return false; // 没找到该线程
|
|
|
}
|
|
|
m_referCountConsistencyCompare--; // 引用计数减一
|
|
@@ -217,26 +226,32 @@ bool ThreadManager::removeConsistencyCompareThread(RoadNumberInfo_t& roadInfo1,
|
|
|
delete pThreadToRemove; // 删除线程
|
|
|
pThreadToRemove = nullptr;
|
|
|
m_referCountConsistencyCompare = 0; // 重置引用计数
|
|
|
- SPDLOG_LOGGER_INFO(m_logger, "{}-{} 一致性比对线程已销毁", roadInfo1.strRoadName, roadInfo2.strRoadName);
|
|
|
+ SPDLOG_LOGGER_WARN(m_logger, "{}:{} - {}:{} 一致性比对线程已销毁", roadInfo1.strSoundCardName.toStdString(), roadInfo1.roadInfo.nRoadNum,
|
|
|
+ roadInfo2.strSoundCardName.toStdString(), roadInfo2.roadInfo.nRoadNum);
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
/* 获取噪音检测线程 */
|
|
|
-NoiseDetectThread* ThreadManager::getNoiseDetectThread(const RoadNumberInfo_t& roadInfo)
|
|
|
+NoiseDetectThread* ThreadManager::getNoiseDetectThread(const SoundCardRoadInfo_t& roadInfo)
|
|
|
{
|
|
|
std::lock_guard<std::mutex> lock(m_mutexNoiseDetectThreads);
|
|
|
for(const auto pThread : m_listNoiseDetectThreads)
|
|
|
{
|
|
|
- if(pThread->getRoadInfo().roadID == roadInfo.roadID)
|
|
|
+ const SoundCardRoadInfo_t& threadRoadInfo = pThread->getRoadInfo();
|
|
|
+ if(threadRoadInfo.nSoundCardNum == roadInfo.nSoundCardNum &&
|
|
|
+ threadRoadInfo.roadInfo.nRoadNum == roadInfo.roadInfo.nRoadNum)
|
|
|
{
|
|
|
return pThread; // 找到相同的线程,直接返回
|
|
|
}
|
|
|
}
|
|
|
/* 没找到该线程,创建新的线程 */
|
|
|
CalculateThreadInfo_t threadInfo;
|
|
|
- threadInfo.vecRoad.push_back(roadInfo);
|
|
|
+ CompareItemRoadInfo_t item;
|
|
|
+ item.nCompareRoadNum = 1; // 假设噪音检测线程
|
|
|
+ item.scRoadInfo = roadInfo;
|
|
|
+ threadInfo.compareItemInfo.mapRoad.insert(item.nCompareRoadNum, item);
|
|
|
NoiseDetectThread* newThread = new NoiseDetectThread(threadInfo);
|
|
|
if(newThread == nullptr)
|
|
|
{
|
|
@@ -251,13 +266,15 @@ NoiseDetectThread* ThreadManager::getNoiseDetectThread(const RoadNumberInfo_t& r
|
|
|
}
|
|
|
|
|
|
/* 去掉噪音检测线程,线程使用的计数减一,计数为0则销毁该线程 */
|
|
|
-bool ThreadManager::removeNoiseDetectThread(RoadNumberInfo_t& roadInfo)
|
|
|
+bool ThreadManager::removeNoiseDetectThread(SoundCardRoadInfo_t& roadInfo)
|
|
|
{
|
|
|
std::lock_guard<std::mutex> lock(m_mutexNoiseDetectThreads);
|
|
|
NoiseDetectThread* pThreadToRemove = nullptr;
|
|
|
for(const auto pThread : m_listNoiseDetectThreads)
|
|
|
{
|
|
|
- if(pThread->getRoadInfo().roadID == roadInfo.roadID)
|
|
|
+ const SoundCardRoadInfo_t& threadRoadInfo = pThread->getRoadInfo();
|
|
|
+ if(threadRoadInfo.nSoundCardNum == roadInfo.nSoundCardNum &&
|
|
|
+ threadRoadInfo.roadInfo.nRoadNum == roadInfo.roadInfo.nRoadNum)
|
|
|
{
|
|
|
pThreadToRemove = pThread; // 找到相同的线程,直接返回
|
|
|
break;
|
|
@@ -265,7 +282,7 @@ bool ThreadManager::removeNoiseDetectThread(RoadNumberInfo_t& roadInfo)
|
|
|
}
|
|
|
if(pThreadToRemove == nullptr)
|
|
|
{
|
|
|
- SPDLOG_LOGGER_WARN(m_logger, "{} 噪音检测线程未找到", roadInfo.strRoadName);
|
|
|
+ SPDLOG_LOGGER_WARN(m_logger, "{}:{} 噪音检测线程未找到", roadInfo.strSoundCardName.toStdString(), roadInfo.roadInfo.nRoadNum);
|
|
|
return false; // 没找到该线程
|
|
|
}
|
|
|
m_referCountNoiseDetect--; // 引用计数减一
|
|
@@ -276,70 +293,76 @@ bool ThreadManager::removeNoiseDetectThread(RoadNumberInfo_t& roadInfo)
|
|
|
delete pThreadToRemove; // 删除线程
|
|
|
pThreadToRemove = nullptr;
|
|
|
m_referCountNoiseDetect = 0; // 重置引用计数
|
|
|
- SPDLOG_LOGGER_INFO(m_logger, "{} 噪音检测线程已销毁", roadInfo.strRoadName);
|
|
|
+ SPDLOG_LOGGER_INFO(m_logger, "{}:{} 噪音检测线程已销毁", roadInfo.strSoundCardName.toStdString(), roadInfo.roadInfo.nRoadNum);
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-/* 获取音量报警线程 */
|
|
|
-CalculateDBPhaseThread* ThreadManager::getCalculateDBPhaseThread(const RoadNumberInfo_t& roadInfo)
|
|
|
-{
|
|
|
- std::lock_guard<std::mutex> lock(m_mutexCalculateDBPhaseThreads);
|
|
|
- for(const auto pThread : m_listCalculateDBPhaseThreads)
|
|
|
- {
|
|
|
- if(pThread->getRoadInfo().roadID == roadInfo.roadID)
|
|
|
- {
|
|
|
- return pThread; // 找到相同的线程,直接返回
|
|
|
- }
|
|
|
- }
|
|
|
- /* 没找到该线程,创建新的线程 */
|
|
|
- CalculateThreadInfo_t threadInfo;
|
|
|
- threadInfo.vecRoad.push_back(roadInfo);
|
|
|
- CalculateDBPhaseThread* newThread = new CalculateDBPhaseThread(threadInfo);
|
|
|
+// /* 获取音量报警线程 */
|
|
|
+// CalculateDBPhaseThread* ThreadManager::getCalculateDBPhaseThread(const SoundCardRoadInfo_t& roadInfo)
|
|
|
+// {
|
|
|
+// std::lock_guard<std::mutex> lock(m_mutexCalculateDBPhaseThreads);
|
|
|
+// for(const auto pThread : m_listCalculateDBPhaseThreads)
|
|
|
+// {
|
|
|
+// const SoundCardRoadInfo_t& threadRoadInfo = pThread->getRoadInfo();
|
|
|
+// if(threadRoadInfo.nSoundCardNum == roadInfo.nSoundCardNum &&
|
|
|
+// threadRoadInfo.roadInfo.nRoadNum == roadInfo.roadInfo.nRoadNum)
|
|
|
+// {
|
|
|
+// return pThread; // 找到相同的线程,直接返回
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// /* 没找到该线程,创建新的线程 */
|
|
|
+// CompareItemRoadInfo_t item;
|
|
|
+// item.nCompareRoadNum = 1; // 假设音量报警线程
|
|
|
+// item.scRoadInfo = roadInfo;
|
|
|
|
|
|
- if(newThread == nullptr)
|
|
|
- {
|
|
|
- SPDLOG_LOGGER_ERROR(m_logger, "创建音量报警线程失败");
|
|
|
- return nullptr; // 创建失败
|
|
|
- }
|
|
|
- CPPTP.add_task(&CalculateDBPhaseThread::threadTask, newThread);
|
|
|
-
|
|
|
- m_listCalculateDBPhaseThreads.push_back(newThread);
|
|
|
- m_referCountCalculateDBPhase++; // 引用计数加一
|
|
|
+// threadInfo.compareItemInfo.mapRoad.insert(item.nCompareRoadNum, item);
|
|
|
+// CalculateDBPhaseThread* newThread = new CalculateDBPhaseThread(threadInfo);
|
|
|
+
|
|
|
+// if(newThread == nullptr)
|
|
|
+// {
|
|
|
+// SPDLOG_LOGGER_ERROR(m_logger, "创建音量报警线程失败");
|
|
|
+// return nullptr; // 创建失败
|
|
|
+// }
|
|
|
+// CPPTP.add_task(&CalculateDBPhaseThread::threadTask, newThread);
|
|
|
|
|
|
- return newThread;
|
|
|
-}
|
|
|
+// m_listCalculateDBPhaseThreads.push_back(newThread);
|
|
|
+// m_referCountCalculateDBPhase++; // 引用计数加一
|
|
|
|
|
|
-/* 去掉音量报警线程,线程使用的计数减一,计数为0则销毁该线程 */
|
|
|
-bool ThreadManager::removeCalculateDBPhaseThread(RoadNumberInfo_t& roadInfo)
|
|
|
-{
|
|
|
- std::lock_guard<std::mutex> lock(m_mutexCalculateDBPhaseThreads);
|
|
|
- CalculateDBPhaseThread* pThreadToRemove = nullptr;
|
|
|
- for(const auto pThread : m_listCalculateDBPhaseThreads)
|
|
|
- {
|
|
|
- if(pThread->getRoadInfo().roadID == roadInfo.roadID)
|
|
|
- {
|
|
|
- pThreadToRemove = pThread; // 找到相同的线程,直接返回
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(pThreadToRemove == nullptr)
|
|
|
- {
|
|
|
- SPDLOG_LOGGER_WARN(m_logger, "{} 音量报警线程未找到", roadInfo.strRoadName);
|
|
|
- return false; // 没找到该线程
|
|
|
- }
|
|
|
- m_referCountCalculateDBPhase--; // 引用计数减一
|
|
|
- if(m_referCountCalculateDBPhase <= 0)
|
|
|
- {
|
|
|
- pThreadToRemove->stopThread(); // 停止线程
|
|
|
- m_listCalculateDBPhaseThreads.remove(pThreadToRemove); // 从列表中移除
|
|
|
- delete pThreadToRemove; // 删除线程
|
|
|
- pThreadToRemove = nullptr;
|
|
|
- m_referCountCalculateDBPhase = 0; // 重置引用计数
|
|
|
- SPDLOG_LOGGER_INFO(m_logger, "{} 音量报警线程已销毁", roadInfo.strRoadName);
|
|
|
- }
|
|
|
+// return newThread;
|
|
|
+// }
|
|
|
|
|
|
- return true;
|
|
|
-}
|
|
|
+// /* 去掉音量报警线程,线程使用的计数减一,计数为0则销毁该线程 */
|
|
|
+// bool ThreadManager::removeCalculateDBPhaseThread(RoadNumberInfo_t& roadInfo)
|
|
|
+// {
|
|
|
+// std::lock_guard<std::mutex> lock(m_mutexCalculateDBPhaseThreads);
|
|
|
+// CalculateDBPhaseThread* pThreadToRemove = nullptr;
|
|
|
+// for(const auto pThread : m_listCalculateDBPhaseThreads)
|
|
|
+// {
|
|
|
+// if(pThread->getRoadInfo().roadID == roadInfo.roadID)
|
|
|
+// {
|
|
|
+// pThreadToRemove = pThread; // 找到相同的线程,直接返回
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if(pThreadToRemove == nullptr)
|
|
|
+// {
|
|
|
+// SPDLOG_LOGGER_WARN(m_logger, "{} 音量报警线程未找到", roadInfo.strRoadName);
|
|
|
+// return false; // 没找到该线程
|
|
|
+// }
|
|
|
+// m_referCountCalculateDBPhase--; // 引用计数减一
|
|
|
+// if(m_referCountCalculateDBPhase <= 0)
|
|
|
+// {
|
|
|
+// pThreadToRemove->stopThread(); // 停止线程
|
|
|
+// m_listCalculateDBPhaseThreads.remove(pThreadToRemove); // 从列表中移除
|
|
|
+// delete pThreadToRemove; // 删除线程
|
|
|
+// pThreadToRemove = nullptr;
|
|
|
+// m_referCountCalculateDBPhase = 0; // 重置引用计数
|
|
|
+// SPDLOG_LOGGER_INFO(m_logger, "{} 音量报警线程已销毁", roadInfo.strRoadName);
|
|
|
+// }
|
|
|
+
|
|
|
+// return true;
|
|
|
+// }
|
|
|
|