2.5 KiB
2.5 KiB
IAudioEffect
命名空间: XCEngine::Audio
类型: class (interface)
头文件: XCEngine/Audio/IAudioEffect.h
描述: 定义音频效果器的最小公共接口,包括样本处理入口和通用的启用/湿声比例控制。
角色概述
IAudioEffect 是 Audio 模块里最轻量的一层效果器抽象。它要求具体效果器至少提供:
- 一个 in-place 的
ProcessAudio()入口 - 一个启用开关
- 一个
wetMix参数
从 API 形状看,这是一种很常见的 DSP effect base class 设计,适合作为 AudioMixer 的效果槽接口。
当前实现行为
基类本身非常轻:
ProcessAudio()是纯虚函数SetEnabled()/IsEnabled()默认只读写m_enabledSetWetMix()/GetWetMix()默认只读写m_wetMix
它不拥有缓冲区,也不定义线程模型、样本格式转换或多通道路由规则。
当前实现语境
当前已取证到的派生效果器包括:
但需要明确:
- 这些效果器当前没有自动插入 AudioSystem 主链路
- AudioMixer 虽然能保存 effect 指针,但当前也不会真正执行效果链
使用和实现上的注意点
IAudioEffect不约束所有权,调用方需要决定 effect 实例何时创建和销毁。- 不同派生类对
wetMix的支持成熟度并不一致。 - 基类并不保证派生类一定会把
wetMix真正作用到样本处理结果上。
这也是为什么类型页需要区分“接口形状”和“具体效果器当前实现”。
线程语义
- 当前接口不提供线程安全保证。
- 典型使用方式应视为同一线程内配置和处理,除非具体实现另有说明。
当前实现限制
- 这是最小接口,不是完整 DSP graph 节点规范。
wetMix只是公共参数约定,具体效果器是否真实使用它,要看各自实现。- 没有看到该接口层的专门测试覆盖。