XAudio2 操作集

本概述介绍了几种 XAudio2 方法,可以在操作集中调用这些方法。

几种 XAudio2 方法采用 OperationSet 参数,这允许将它们作为延迟组的一部分调用。 在特定时间,可以通过使用该组的 OperationSet 标识符调用函数 IXAudio2::CommitChanges 来同时应用整个更改集。 标识符是任意数字。 因此,它允许客户端代码的不同部分将单独的原子更改应用于图形,而不会发生任何冲突。 建议的做法是客户端在需要生成唯一的新 OperationSet 标识符时递增全局计数器。 一组以原子方式应用的图形更改保证样本准确。 例如,语音将同步启动。

如果将 OperationSet 设置为 XAUDIO2_COMMIT_NOW,则会立即应用更改。 它在方法调用后的第一个音频处理阶段生效。 如果使用 XAUDIO2_COMMIT_ALL 调用 CommitChanges ,则会对所有挂起的操作集执行更改,而不考虑其 OperationSet 标识符。

某些方法在从 具有 XAUDIO2_COMMIT_NOW OperationSet 的 XAudio2 回调调用时立即生效。 采用 OperationSet 参数的所有其他方法仅在调用 该方法后(如果使用 XAUDIO2_COMMIT_NOW) 调用)或在同一 OperationSet 调用 CommitChanges 之后的下一个处理阶段生效 (。 因此,某些方法调用可能并不总是按照调用它们的顺序进行。

调用 IXAudio2::StopEngine 时,以原子方式提交所有挂起的操作。 无论提供的 OperationSet 值如何,在停止引擎时调用的任何方法都会立即生效。 重启引擎时,XAudio2 将返回到异步模式。

操作集有用的简单方案包括以下示例。

  • 同时启动多个语音。
  • 同时将缓冲区提交到语音、设置语音参数和启动语音。
  • 对图形进行大规模更改,例如将所有源语音连接到新的子混合语音。

有关使用操作集的示例,请参阅 如何:将音频方法分组为 操作集。

操作集方法

可以将以下方法作为操作集的一部分调用。

如前所述,客户端代码最终必须调用函数 IXAudio2::CommitChanges 以执行延迟的更改。

操作集

XAudio2 编程指南

如何:按操作集组合音频方法