|
@@ -1,6 +1,7 @@
|
|
|
#include "CompareItemThread.h"
|
|
|
|
|
|
#include "ChannelParam.h"
|
|
|
+#include "CreateRecordFileThread.h"
|
|
|
#include "FromMQTT.h"
|
|
|
#include "GlobalInfo.h"
|
|
|
#include "SystemConfig.h"
|
|
@@ -231,16 +232,12 @@ bool CompareItemThread::initData()
|
|
|
// SPDLOG_LOGGER_ERROR(m_logger, "{} 获取创建实时音量线程失败", m_logBase);
|
|
|
return false;
|
|
|
}
|
|
|
- // for(const auto& pThread : m_mapCreateDBThreads)
|
|
|
- // {
|
|
|
- // if(pThread.second == nullptr)
|
|
|
- // {
|
|
|
- // SPDLOG_LOGGER_ERROR(m_logger, "{} 获取创建实时音量线程失败,通道: {}", m_logBase, pThread.first);
|
|
|
- // }else {
|
|
|
- // SPDLOG_LOGGER_INFO(m_logger, "{} 获取创建实时音量线程成功,通道: {}", m_logBase, pThread.first);
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
+
|
|
|
+ /* 获取录音线程 */
|
|
|
+ startOrStopRecord(false); // 停止录音
|
|
|
+ getRecordThread();
|
|
|
+ /* 开始录音 */
|
|
|
+ startOrStopRecord(true);
|
|
|
|
|
|
|
|
|
/* 初始化存储结果的数据结构 */
|
|
@@ -380,6 +377,29 @@ bool CompareItemThread::getCreateDBThread()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/* 获取录音线程,这个属于录音线程,不需要移除释放 */
|
|
|
+void CompareItemThread::getRecordThread()
|
|
|
+{
|
|
|
+ m_mapRecordThreads.clear();
|
|
|
+ /* 获取录音通道,不需要录音的不获取 */
|
|
|
+ for(const auto& road : m_threadInfo.compareItemInfo.mapRoad)
|
|
|
+ {
|
|
|
+ if(road.isEnableRecord == false)
|
|
|
+ {
|
|
|
+ continue; // 不需要录音的通道,不获取录音线程
|
|
|
+ }
|
|
|
+ CreateRecordFileThread* pThread = ThreadMan.getCreateRecordFileThread(road.scRoadInfo.nSoundCardNum, road.scRoadInfo.roadInfo.nRoadNum);
|
|
|
+ if(pThread != nullptr)
|
|
|
+ {
|
|
|
+ m_mapRecordThreads.insert({road.nCompareRoadNum, pThread});
|
|
|
+ // SPDLOG_LOGGER_INFO(m_logger, "{} 获取录音线程成功,通道: {}:{}", m_logBase, road.scRoadInfo.strSoundCardName.toStdString(), road.scRoadInfo.roadInfo.nRoadNum);
|
|
|
+ } else
|
|
|
+ {
|
|
|
+ SPDLOG_LOGGER_WARN(m_logger, "{} 获取录音线程失败,通道: {}:{}", m_logBase, road.scRoadInfo.strSoundCardName.toStdString(), road.scRoadInfo.roadInfo.nRoadNum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
|
|
|
/* 创建两个对比线程,主通道是第一个通道,其他都需要和主通道进行对比 */
|
|
@@ -529,44 +549,6 @@ void CompareItemThread::destroyNoiseDetectThreads()
|
|
|
SPDLOG_LOGGER_INFO(m_logger, "{} 噪音检测线程销毁完成", m_logBase);
|
|
|
}
|
|
|
|
|
|
-/* 获取噪音检测的线程 */
|
|
|
-// bool CompareItemThread::getNoiseDetectThreads()
|
|
|
-// {
|
|
|
-// for(const auto& road : m_threadInfo.compareItemInfo.mapRoad)
|
|
|
-// {
|
|
|
-// NoiseDetectThread* pThread = ThreadMan.getNoiseDetectThread(road.scRoadInfo, m_threadInfo.compareItemInfo.nID);
|
|
|
-// if(pThread == nullptr)
|
|
|
-// {
|
|
|
-// SPDLOG_LOGGER_ERROR(m_logger, "{} 获取噪音检测线程失败", m_logBase);
|
|
|
-// return false; // 获取线程失败
|
|
|
-// }
|
|
|
-// /* 向噪音检测线程写入对比项通道信息 */
|
|
|
-// pThread->startCompareItemNoiseAlarm(m_threadInfo.compareItemInfo.nID, m_threadInfo.compareItemInfo.strName, road);
|
|
|
-// m_mapNoiseDetectThreads.insert({road.nCompareRoadNum, pThread});
|
|
|
-// }
|
|
|
-
|
|
|
-// return true;
|
|
|
-// }
|
|
|
-
|
|
|
-/* 移除噪音检测的线程 */
|
|
|
-// void CompareItemThread::removeNoiseDetectThreads()
|
|
|
-// {
|
|
|
-// if(m_mapNoiseDetectThreads.size() == 0)
|
|
|
-// {
|
|
|
-// return; // 没有噪音检测线程
|
|
|
-// }
|
|
|
-// SPDLOG_LOGGER_INFO(m_logger, "{} 移除噪音检测线程", m_logBase);
|
|
|
-// for(auto& pair : m_mapNoiseDetectThreads)
|
|
|
-// {
|
|
|
-// if(pair.second != nullptr)
|
|
|
-// {
|
|
|
-// ThreadMan.removeNoiseDetectThread(pair.second->getRoadInfo(), m_threadInfo.compareItemInfo.nID);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// m_mapNoiseDetectThreads.clear();
|
|
|
-// SPDLOG_LOGGER_INFO(m_logger, "{} 噪音检测线程移除完成", m_logBase);
|
|
|
-// }
|
|
|
-
|
|
|
|
|
|
/**
|
|
|
音量包更新逻辑:
|
|
@@ -916,3 +898,32 @@ bool CompareItemThread::checkDetectPeriod()
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/* 开启或结束录音 */
|
|
|
+void CompareItemThread::startOrStopRecord(bool isStart)
|
|
|
+{
|
|
|
+ for(auto& pair : m_mapRecordThreads)
|
|
|
+ {
|
|
|
+ CreateRecordFileThread* pThread = pair.second;
|
|
|
+ if(pThread == nullptr)
|
|
|
+ {
|
|
|
+ SPDLOG_LOGGER_ERROR(m_logger, "{} 录音线程失效,通道: {}", m_logBase, pair.first);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ OneCompareItemRoadInfo_t itemRoadInfo;
|
|
|
+ itemRoadInfo.nCompareItemID = m_threadInfo.compareItemInfo.nID;
|
|
|
+ itemRoadInfo.nCompareRoadNum = pair.first;
|
|
|
+ itemRoadInfo.nSoundCardNum = m_threadInfo.compareItemInfo.mapRoad[pair.first].scRoadInfo.nSoundCardNum;
|
|
|
+ itemRoadInfo.nSoundCardRoadNum = m_threadInfo.compareItemInfo.mapRoad[pair.first].scRoadInfo.roadInfo.nRoadNum;
|
|
|
+ if(isStart)
|
|
|
+ {
|
|
|
+ pThread->startRecordLongFile(itemRoadInfo);
|
|
|
+ // SPDLOG_LOGGER_INFO(m_logger, "{} 开始录音,通道: {}", m_logBase, pair.first);
|
|
|
+ }else {
|
|
|
+ pThread->stopRecordLongFile(itemRoadInfo);
|
|
|
+ // SPDLOG_LOGGER_INFO(m_logger, "{} 停止录音,通道: {}", m_logBase, pair.first);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|