XAudio2CreateReverb 函数 (xaudio2fx.h)

创建一个新的混响音频处理对象 (APO) ,并返回指向它的指针。

语法

HRESULT XAudio2CreateReverb(
  [in, out] IUnknown     **ppApo,
  [in]      UINT32 Flags DEFAULT
);

参数

[in, out] ppApo

包含指向创建的混响 APO 的指针。

[in] DEFAULT

指定 APO 行为的标志。 此参数的值必须为 0。

返回值

如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

XAudio2CreateReverb 创建执行普林斯顿数字混响的效果。 XAPOFX (XAPOFX) 的 XAPO 效果库包含备用混响效果。 使用 CreateFX 创建此备用效果。

混响 APO 支持具有以下限制:

  • 输入音频数据必须FLOAT32。
  • 帧速率必须XAUDIO2FX_REVERB_MIN_FRAMERATE (20,000 Hz) ,XAUDIO2FX_REVERB_MAX_FRAMERATE (48,000 Hz) 。
  • 输入和输出通道必须是以下组合之一。
    • 单声道输入与单声道输出
    • 单声道输入和 5.1 输出
    • 立体声输入和立体声输出
    • 立体声输入和 5.1 输出
混响 APO 维护处理样本之间的内部状态信息。 一次只能将 APO 实例与一个音频数据源一起使用。 需要混响效果的多个语音都需要使用 XAudio2CreateReverb 创建单独的混响效果。

有关创建用于 XAudio2 的新效果的信息,请参阅 XAPO 概述

Windows
由于 XAudio2CreateReverb 在 Windows 上调用 CoCreateInstance,因此应用程序必须在调用 XAudio2CreateReverb 之前调用 CoInitializeEx 方法。 XAudio2Create 具有相同的要求,这意味着在调用 XAudio2CreateReverb 之前,通常会调用 CoInitializeEx

Windows 上的典型调用模式如下所示:

#ifndef _XBOX
CoInitializeEx(NULL, COINIT_MULTITHREADED);
#endif
IXAudio2* pXAudio2 = NULL;
HRESULT hr;
if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
    return hr;
...
IUnknown * pReverbAPO;
XAudio2CreateReverb(&pReverbAPO);

 

xaudio2fx.h 标头将 AudioReverb 类 GUID 定义为 XAPO) (跨平台音频处理对象。

class __declspec(uuid("C2633B16-471B-4498-B8C5-4F0959E2EC09")) AudioReverb;

XAudio2CreateReverb 将此对象作为指向 ppApo 参数中 IUnknown 的指针返回。 尽管可以从此 IUnknown 查询 IXAPOIXAPOParameters 接口,但通常永远不会直接使用这些接口。 而是在创建语音以将其添加为效果链的一部分时使用它们。

混响使用通过 IXAudio2Voice::SetEffectParameters 访问的 XAUDIO2FX_REVERB_PARAMETERS 参数结构。

注意XAudio2CreateReverb 是 xaudio2fx.h 中调用 CreateAudioReverb 的内联函数:“”语法

XAUDIO2FX_STDAPI CreateAudioReverb (Outptr IUnknown** ppApo) ;__inline HRESULT XAudio2CreateReverb (Outptr IUnknown** ppApo, UINT32 /Flags/ DEFAULT (0) ) { return CreateAudioReverb (ppApo) ; }


</div>
<div> </div>
<h3><a id="Platform_Requirements"></a><a id="platform_requirements"></a><a id="PLATFORM_REQUIREMENTS"></a>Platform Requirements</h3>
Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); DirectX SDK (XAudio 2.7)

## Requirements
| Requirement | Value |
| ---- |:---- |
| **Target Platform** | Windows |
| **Header** | xaudio2fx.h |
| **Library** | Xaudio2.lib |
| **DLL** | Windows.Media.Audio.dll |

## See also

<a href="/windows/desktop/xaudio2/how-to--create-an-effect-chain">How to: Create an Effect Chain</a>



<a href="/windows/desktop/api/xaudio2/nf-xaudio2-ixaudio2voice-seteffectparameters">IXAudio2Voice::SetEffectParameters</a>



<a href="/windows/desktop/api/xaudio2fx/ns-xaudio2fx-xaudio2fx_reverb_parameters">XAUDIO2FX_REVERB_PARAMETERS</a>



<a href="/windows/desktop/xaudio2/functions">XAudio2 Functions</a>