| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #ifndef IAUDIOCAPTURER_H
- #define IAUDIOCAPTURER_H
- #include <cstdint>
- #include <functional>
- // 平台无关的音频格式结构
- struct AudioFormat
- {
- uint32_t sampleRate; // 采样率 (Hz)
- uint16_t channels; // 通道数
- uint16_t bitsPerSample; // 每个样本的位数
- uint32_t avgBytesPerSec; // 平均每秒字节数
- uint16_t blockAlign; // 数据块对齐大小
- // 默认构造函数
- AudioFormat()
- : sampleRate(0)
- , channels(0)
- , bitsPerSample(0)
- , avgBytesPerSec(0)
- , blockAlign(0)
- {}
- // 带参数的构造函数
- AudioFormat(uint32_t rate, uint16_t ch, uint16_t bits)
- : sampleRate(rate)
- , channels(ch)
- , bitsPerSample(bits)
- {
- blockAlign = channels * bitsPerSample / 8;
- avgBytesPerSec = sampleRate * blockAlign;
- }
- };
- class IAudioCapturer
- {
- public:
- enum Type { Microphone, Speaker };
- using CallBack = std::function<void(void* data, size_t size, void* userInfo)>;
- virtual ~IAudioCapturer() = default;
- virtual bool Init(Type deviceType, CallBack callback, void* userInfo = nullptr) = 0;
- virtual bool Start() = 0;
- virtual void Stop() = 0;
- // 获取音频格式
- virtual const AudioFormat& GetFormat() const = 0;
- // // 获取音频格式信息
- // virtual int GetSampleRate() const = 0;
- // virtual int GetChannels() const = 0;
- // virtual int GetBitsPerSample() const = 0;
- // // 用于兼容现有代码的格式获取方法
- // virtual void* GetNativeFormat() const = 0;
- };
- #endif // IAUDIOCAPTURER_H
|