BaseRecordThread.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "BaseRecordThread.h"
  2. #include <QDateTime>
  3. BaseRecordThread::BaseRecordThread(RecordThreadInfo_t& threadInfo)
  4. : m_threadInfo(threadInfo)
  5. {
  6. m_logBase = fmt::format("录音通道: {}:{}", m_threadInfo.cardRoadInfo.strSoundCardName.toStdString(),
  7. m_threadInfo.cardRoadInfo.roadInfo.nRoadNum);
  8. }
  9. BaseRecordThread::~BaseRecordThread()
  10. {
  11. }
  12. /* 停止线程 */
  13. void BaseRecordThread::stopThread()
  14. {
  15. m_isRunning.store(false);
  16. }
  17. /* 获取频率ID */
  18. RecordThreadInfo_t BaseRecordThread::getThreadInfo()
  19. {
  20. return m_threadInfo;
  21. }
  22. /* 根据文件大小计算时间长度,单位ms */
  23. QDateTime BaseRecordThread::previTime(QDateTime& currentTime, uint32_t dataSize)
  24. {
  25. int64_t offsetMS = dataSize * 1000 / m_oneSecondSize;
  26. return currentTime.addMSecs(-offsetMS);
  27. }
  28. /*根据当前时间和数据大小向后推算时间 */
  29. QDateTime BaseRecordThread::nextTime(QDateTime& currentTime, uint32_t dataSize)
  30. {
  31. int64_t offsetMS = dataSize * 1000 / m_oneSecondSize;
  32. return currentTime.addMSecs(offsetMS);
  33. }
  34. /* 计算出到下一个整点秒需要去掉多少个字节 */
  35. uint32_t BaseRecordThread::calculateOffsetToNextSecond(QDateTime& currentTime)
  36. {
  37. QDateTime nextSecond = currentTime.addSecs(1);
  38. nextSecond = nextSecond.addMSecs(-nextSecond.time().msec()); // 去掉毫秒部分
  39. int64_t offsetMS = nextSecond.toMSecsSinceEpoch() - currentTime.toMSecsSinceEpoch();
  40. return static_cast<uint32_t>(offsetMS * m_oneSecondSize / 1000); // 转换为字节数
  41. }