DirectSound 8 添加了一些新功能,用于在音频捕获期间启用和控制第三方效果。 此版本和更高版本的 DirectSound 支持以下两个捕获效果:
声学回声取消 (AEC)
噪音抑制 (NS)
在电话会议等全双工音频应用程序中,扬声器输出的播放流的回声会被生成捕获流的麦克风拾取。 在对房间或其他物理环境中的声音反射进行特征化后,全双工系统利用 AEC 监控渲染流,以消除其添加到捕获流中的回声。 系统可以通过使用 NS 检测干扰峰值并将其从流中删除来进一步提高捕获流的质量。
全双工 DirectSound 应用程序可以使用 IDirectSoundCaptureFXAec 和 IDirectSoundCaptureFXNoiseSuppress 接口来控制 AEC 和 NS 效果。 IDirectSoundCaptureBuffer::GetObjectInPath 方法检索指向具有这些接口的对象的指针。 DirectSoundFullDuplexCreate 函数创建 IDirectSoundCaptureBuffer 对象,调用方传递给此函数的参数包括 DSCEFFECTDESC 结构的数组。 数组指定要在捕获缓冲区中启用的效果。 数组中每个结构的 guidDSCFXClass 成员包含指定效果的 GUID:AEC 或 NS。 下表显示了每个 GUID 的 DirectSound 名称,以及相同 GUID 值的 KS 名称。 有关详细信息,请参阅 DirectX 8.0 SDK 文档。
| DirectSound GUID 名称 | KS GUID 名称 |
|---|---|
GUID_DSCFX_CLASS_AEC |
|
GUID_DSCFX_CLASS_NS |
在 Microsoft Windows XP 及更高版本中,你可以向 DirectSound 应用程序公开音频设备的硬件加速捕获效果。 此外,AEC 系统筛选器(Aec.sys)还提供 AEC 和 NS 效果的软件仿真。
本部分的其余部分将讨论这些主题: