IXAudio2::CreateSubmixVoice 方法 (xaudio2.h)

创建并配置子混合语音。

语法

HRESULT CreateSubmixVoice(
  [out]          IXAudio2SubmixVoice        **ppSubmixVoice,
  [in]           UINT32                     InputChannels,
  [in]           UINT32                     InputSampleRate,
  [in]           UINT32                     Flags,
  [in]           UINT32                     ProcessingStage,
  [in, optional] const XAUDIO2_VOICE_SENDS  *pSendList,
  [in, optional] const XAUDIO2_EFFECT_CHAIN *pEffectChain
);

参数

[out] ppSubmixVoice

成功后,返回指向新的 IXAudio2SubmixVoice 对象的指针。

[in] InputChannels

子混合语音的输入音频数据中的声道数。 InputChannels 必须小于或等于 XAUDIO2_MAX_AUDIO_CHANNELS。

[in] InputSampleRate

子混合语音的输入音频数据的采样率。 此速率必须是XAUDIO2_QUANTUM_DENOMINATOR的倍数。 InputSampleRate 必须介于 XAUDIO2_MIN_SAMPLE_RATE 和 XAUDIO2_MAX_SAMPLE_RATE 之间。

[in] Flags

指定子混合语音行为的标志。 它可以是 0 或以下值:

说明
XAUDIO2_VOICE_USEFILTER 此语音应提供筛选器效果。

[in] ProcessingStage

如果 XAudio2 引擎正在运行其他子混合语音,则指定处理此语音时相对于其他子混合语音的时间的任意数字。 该语音在包含较小 ProcessingStage 值的所有其他语音之后处理,在包含较大 ProcessingStage 值的所有其他语音之前处理。 包含相同 ProcessingStage 值的语音按任意顺序进行处理。 子混合语音不能发送到另一个具有较低或等于 ProcessingStage 值的子混合语音。 这可以防止音频因子混合循环而丢失。

[in, optional] pSendList

指向 XAUDIO2_VOICE_SENDS 结构列表的指针,这些结构描述子混合语音的目标语音集。 如果 pSendList 为 NULL,则发送列表将默认为创建的第一个主语音的单个输出。

[in, optional] pEffectChain

指向 XAUDIO2_EFFECT_CHAIN 结构的指针,这些结构描述要用于子混合语音的效果链。

返回值

如果成功,则返回S_OK;否则为错误代码。

有关 XAudio2 特定错误代码的说明,请参阅 XAudio2 错误代码。

注解

子混合语音接收一个或多个源语音或子混合语音的输出。 处理输出,然后将其发送到另一个子混合语音或主语音。

子混合语音执行从输入采样率到 pSendList 中输出语音的输入速率的采样率转换。 如果指定多个语音发送,则它们必须具有相同的输入采样率。

在主语音存在之前,无法创建任何源语音或子混合语音;如果任何源或子混合语音仍然存在,则无法销毁主语音。

首次创建时,子混合语音处于启动状态。

XAudio2 对格式相同的语音使用内部内存池程序。 这意味着,随着创建并销毁更多语音,语音的内存分配频率会降低。 若要最大程度地减少实时分配,游戏可以预先创建所需的预期最大语音数,然后根据需要将其删除。 然后,将从 XAudio2 池中重复使用语音。 内存池绑定到 XAudio2 引擎实例。 可以通过销毁 XAudio2 对象并根据需要重新创建 XAudio2 对象来回收 XAudio2 引擎实例使用的所有内存, (必须根据需要重新应用通过预分配增长的内存池) 。

从回调 (IXAudio2EngineCallbackIXAudio2VoiceCallback) 调用 CreateSubmixVoice 无效。 如果在回调中调用 CreateSubmixVoice ,它将返回XAUDIO2_E_INVALID_CALL。

CreateSubmixVoice 成功完成后,不再需要作为 pEffectChain 参数传入的XAUDIO2_EFFECT_CHAIN以及其中包含的任何XAUDIO2_EFFECT_DESCRIPTOR信息,并且可能在调用 CreateSubmixVoice 后立即删除。

平台要求

Windows 10 (XAudio2.9) ;Windows 8,Windows Phone 8 (XAudio 2.8) ;DirectX SDK (XAudio 2.7)

要求

要求
目标平台 Windows
标头 xaudio2.h

另请参阅

IXAudio2

XAudio2 采样率转换