#ifndef _RECORDTHREAD_H_ #define _RECORDTHREAD_H_ #include #include #include "AudioData.h" #include "RingQueue.hpp" #include "GlobalVariable.h" #include "BaseRecordThread.h" #include "AudioRecord.h" #include "spdlog/spdlog.h" class AssignSrcDataThread; /** * @brief 获取原始音频数据的线程 * */ class RecordThread : public BaseRecordThread { public: RecordThread(RecordThreadInfo_t& threadInfo); ~RecordThread() override; /* 设置声卡描述符 */ void setAudioRecordDesc(const std::string& desc); /* 设置分派线程的指针 */ void setAssignSrcDataThread(AssignSrcDataThread* pThread); private: /* 线程任务函数 */ void task() override; /* 设置数据,这里用不到 */ bool setData(const AudioSrcData& srcData) override; /* 初始化数据 */ bool initData() override; /* 清除数据 */ void clearData() override; /* 获取AssignSrcDataThread线程 */ AssignSrcDataThread* getAssignSrcDataThread(); private: AudioRecord m_audioRecord; /* 音频录制类 */ std::string m_audioRecordDesc; /* 声卡描述符 */ char* m_pRecordBuffer = nullptr; /* 录音数据缓存 */ int32_t m_recordBufferSize = 0; /* 录音数据缓存大小 */ int32_t m_oneRecordCount = 0; /* 每次录音的音频数据大小,单位音频帧,位深度 * 通道数 */ AssignSrcDataThread* m_assignThread = nullptr; /* 分派数据线程指针 */ }; #endif // _RECORDTHREAD_H_