12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #ifndef CONSISTENCYCOMPARETHREAD_H_
- #define CONSISTENCYCOMPARETHREAD_H_
- #include "BaseCalculateThread.h"
- #include "RingQueueManualMutex.hpp"
- #include "AudioData.h"
- #include "ConsistencyResult.h"
- class CreateWAVThread;
- /**
- * @brief 计算一致性的线程类
- * 1、一致性对比线程是调用动态库对比,没有对比参数,不和对比项有关联
- *
- */
- class ConsistencyCompareThread : public BaseCalculateThread
- {
- public:
- ConsistencyCompareThread(CalculateThreadInfo_t& threadInfo);
- ~ConsistencyCompareThread() override;
- /* 获取一致性比对的结果 */
- StConsistencyResult getConsistencyResult();
- /* 判断录音通道是否相等 */
- bool isRoadEqual(const SoundCardRoadInfo_t& roadInfo1, const SoundCardRoadInfo_t& roadInfo2);
- protected:
- /* 线程功能函数 */
- void task() override;
- /* 初始化数据 */
- bool initData() override;
- /* 清理数据 */
- void clearData() override;
- private:
- /* 比对两个wav文件的一致性 */
- bool compareConsistency();
- private:
- /* 两个录音通道的信息 */
- SoundCardRoadInfo_t m_roadInfo1; /* 录音通道1信息,这里不使用通道num */
- SoundCardRoadInfo_t m_roadInfo2; /* 录音通道2信息 */
- /* 两个录音通道的线程指针,直接通过录音类获取最新的数据 */
- CreateWAVThread* m_pCreateWAVThread1 = nullptr; /* 通道1的录音线程 */
- CreateWAVThread* m_pCreateWAVThread2 = nullptr; /* 通道2的录音线程 */
- WavFilePath m_wavFilePath1; /* 通道1的wav文件路径 */
- WavFilePath m_wavFilePath2; /* 通道2的wav文件路径 */
- WavFilePath m_prevWavFilePath1; /* 通道1的上一个wav文件路径 */
- WavFilePath m_prevWavFilePath2; /* 通道2的上一个wav文件路径 */
- double m_sensitivity = 20.0; /* 比对灵敏度,默认20,范围[0-100] */
- std::mutex m_mutexResult; /* 互斥锁,一致性比对的结果 */
- StConsistencyResult m_consistencyResult; /* 一致性计算结果 */
- double m_similarity = 0.0; /* 比对结果相似度 */
- };
- #endif // CONSISTENCYCOMPARETHREAD_H_
|