#include "BaseRecordThread.h" #include BaseRecordThread::BaseRecordThread(RecordThreadInfo_t& threadInfo) : m_threadInfo(threadInfo) { m_logBase = fmt::format("录音通道: {}:{}", m_threadInfo.cardRoadInfo.strSoundCardName.toStdString(), m_threadInfo.cardRoadInfo.roadInfo.nRoadNum); } BaseRecordThread::~BaseRecordThread() { } /* 停止线程 */ void BaseRecordThread::stopThread() { m_isRunning.store(false); } /* 获取频率ID */ RecordThreadInfo_t BaseRecordThread::getThreadInfo() { return m_threadInfo; } /* 根据文件大小计算时间长度,单位ms */ QDateTime BaseRecordThread::previTime(QDateTime& currentTime, uint32_t dataSize) { int64_t offsetMS = dataSize * 1000 / m_oneSecondSize; return currentTime.addMSecs(-offsetMS); } /*根据当前时间和数据大小向后推算时间 */ QDateTime BaseRecordThread::nextTime(QDateTime& currentTime, uint32_t dataSize) { int64_t offsetMS = dataSize * 1000 / m_oneSecondSize; return currentTime.addMSecs(offsetMS); } /* 计算出到下一个整点秒需要去掉多少个字节 */ uint32_t BaseRecordThread::calculateOffsetToNextSecond(QDateTime& currentTime) { QDateTime nextSecond = currentTime.addSecs(1); nextSecond = nextSecond.addMSecs(-nextSecond.time().msec()); // 去掉毫秒部分 int64_t offsetMS = nextSecond.toMSecsSinceEpoch() - currentTime.toMSecsSinceEpoch(); return static_cast(offsetMS * m_oneSecondSize / 1000); // 转换为字节数 }