| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- #ifndef IAUDIORENDERER_H
- #define IAUDIORENDERER_H
- #include <functional>
- #include <memory>
- #include <vector>
- namespace AVPlayer2 {
- namespace Core {
- /**
- * 音频渲染器状态枚举
- */
- enum class AudioRendererState {
- Stopped, // 停止状态
- Playing, // 播放状态
- Paused, // 暂停状态
- Error // 错误状态
- };
- } // namespace Core
- namespace Types {
- /**
- * 音频格式参数
- */
- struct AudioFormat {
- int sampleRate; // 采样率
- int channels; // 声道数
- int bitsPerSample; // 位深度
- int frameSize; // 帧大小
- };
- } // namespace Types
- namespace Core {
- /**
- * 音频渲染器抽象接口
- * 提供与平台无关的音频输出功能
- */
- class IAudioRenderer {
- public:
- virtual ~IAudioRenderer() = default;
- /**
- * 初始化音频渲染器
- * @param format 音频格式参数
- * @return 是否初始化成功
- */
- virtual bool initialize(const Types::AudioFormat& format) = 0;
- /**
- * 开始播放
- * @return 是否开始成功
- */
- virtual bool start() = 0;
- /**
- * 停止播放
- */
- virtual void stop() = 0;
- /**
- * 暂停播放
- */
- virtual void pause() = 0;
- /**
- * 恢复播放
- */
- virtual void resume() = 0;
- /**
- * 写入音频数据
- * @param data 音频数据指针
- * @param size 数据大小(字节)
- * @return 实际写入的字节数
- */
- virtual int writeData(const char* data, int size) = 0;
- /**
- * 设置音量
- * @param volume 音量值 (0.0 - 1.0)
- */
- virtual void setVolume(float volume) = 0;
- /**
- * 获取当前音量
- * @return 当前音量值 (0.0 - 1.0)
- */
- virtual float getVolume() const = 0;
- /**
- * 设置静音状态
- * @param muted 是否静音
- */
- virtual void setMuted(bool muted) = 0;
- /**
- * 获取静音状态
- * @return 是否静音
- */
- virtual bool isMuted() const = 0;
- /**
- * 获取当前状态
- * @return 渲染器状态
- */
- virtual AudioRendererState getState() const = 0;
- /**
- * 获取缓冲区大小
- * @return 缓冲区大小(字节)
- */
- virtual int getBufferSize() const = 0;
- /**
- * 获取可用缓冲区大小
- * @return 可用缓冲区大小(字节)
- */
- virtual int getAvailableBufferSize() const = 0;
- /**
- * 清空缓冲区
- */
- virtual void clearBuffer() = 0;
- /**
- * 设置状态变化回调
- * @param callback 状态变化回调函数
- */
- virtual void setStateCallback(std::function<void(AudioRendererState)> callback) = 0;
- /**
- * 设置缓冲区不足回调
- * @param callback 缓冲区不足回调函数
- */
- virtual void setUnderrunCallback(std::function<void()> callback) = 0;
- };
- /**
- * 音频渲染器工厂接口
- */
- class IAudioRendererFactory {
- public:
- virtual ~IAudioRendererFactory() = default;
- /**
- * 创建音频渲染器实例
- * @return 音频渲染器智能指针
- */
- virtual std::unique_ptr<IAudioRenderer> createRenderer() = 0;
- /**
- * 获取支持的音频格式列表
- * @return 支持的音频格式列表
- */
- virtual std::vector<Types::AudioFormat> getSupportedFormats() = 0;
- /**
- * 检查是否支持指定格式
- * @param format 音频格式
- * @return 是否支持
- */
- virtual bool isFormatSupported(const Types::AudioFormat& format) = 0;
- };
- } // namespace Core
- } // namespace AVPlayer2
- #endif // IAUDIORENDERER_H
|