123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef _RECORDTHREAD_H_
- #define _RECORDTHREAD_H_
- #include <mutex>
- #include <condition_variable>
- #include "AudioData.h"
- #include "RingQueue.hpp"
- #include "GlobalVariable.h"
- #include "BaseRecordThread.h"
- #include "AudioRecord.h"
- #include "spdlog/spdlog.h"
- #define RECORD_READFILE true
- 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();
- /* 测试数据 */
- void testOpenData();
- void testGetData(char* buffer, int32_t bufferSize, int32_t recordFrames);
- void preciseSleepMs(int ms);
- 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; /* 分派数据线程指针 */
- /* ---------------------- 测试数据 ---------------------- */
- QByteArray m_testData; /* 测试数据 */
- int m_testReadSize = 0; /* 已读取的数据大小 */
- // std::chrono::steady_clock::time_point m_testLastTime; /* 上次读取数据的时间 */
- };
- #endif // _RECORDTHREAD_H_
|