1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef _BASERECORDTHREAD_H_
- #define _BASERECORDTHREAD_H_
- #include "GlobalVariable.h"
- #include "spdlog/spdlog.h"
- class QDateTime;
- struct AudioSrcData;
- class BaseRecordThread
- {
- public:
- BaseRecordThread(RecordThreadInfo_t& threadInfo);
- virtual ~BaseRecordThread();
- /* 线程任务函数,子类需要实现 */
- virtual void threadTask();
- /* 停止线程 */
- virtual void stopThread();
- /* 获取录音通道信息 */
- const RecordThreadInfo_t& getThreadInfo();
- /* 设置数据 */
- virtual bool setData(const AudioSrcData& srcData) = 0;
- protected:
- /* 任务函数 */
- virtual void task() = 0;
- /* 初始化数据 */
- virtual bool initData() = 0;
- /* 清除数据*/
- virtual void clearData() = 0;
- /* 根据当前时间和数据大小向前推算时间 */
- QDateTime previTime(QDateTime& currentTime, int64_t dataSize);
- /*根据当前时间和数据大小向后推算时间 */
- QDateTime nextTime(QDateTime& currentTime, int64_t dataSize);
- /* 计算出到下一个整点秒需要去掉多少个字节 */
- int32_t calculateOffsetToNextSecond(QDateTime& currentTime);
- protected:
- std::shared_ptr<spdlog::logger> m_logger = nullptr; /* 日志记录器 */
- RecordThreadInfo_t m_threadInfo; /* 线程信息 */
- std::atomic_bool m_isRunning = false; /* 线程运行标志 */
- std::string m_logBase; /* 日志基础信息 */
- int32_t m_oneSecondSize = 0; /* 每秒钟的音频数据大小 */
- /* 音频相关的默认参数 */
- int32_t m_sampleRate = 44100; /* 采样率 */
- uint16_t m_numChannels = 2; /* 声道数 */
- uint16_t m_bitsPerSample = 16; /* 每个采样点的位数 */
-
- };
- #endif // _BASERECORDTHREAD_H_
|