Freigeben über


XAudio2CreateReverb-Funktion (xaudio2fx.h)

Erstellt ein neues Hallaudioverarbeitungsobjekt (APO) und gibt einen Zeiger darauf zurück.

Syntax

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

Die Parameter

[in, out] ppApo

Enthält einen Zeiger auf das hallige APO, das erstellt wird.

[in] DEFAULT

Flags, die das Verhalten der APO angeben. Der Wert dieses Parameters muss 0 sein.

Rückgabewert

Wenn diese Funktion erfolgreich ist, wird S_OKzurückgegeben. Andernfalls wird ein HRESULT- Fehlercode zurückgegeben.

Bemerkungen

XAudio2CreateReverb erzeugt einen Effekt, der Denkeffekt von Princeton Digital Reverb bewirkt. Die XAPO-Effektbibliothek (XAPOFX) enthält einen alternativen Halleffekt. Verwenden Sie CreateFX , um diesen alternativen Effekt zu erstellen.

Das Hallen-APO unterstützt die folgenden Einschränkungen:

  • Eingabeaudiodaten müssen FLOAT32 werden.
  • Die Framerate muss innerhalb XAUDIO2FX_REVERB_MIN_FRAMERATE (20.000 Hz) und XAUDIO2FX_REVERB_MAX_FRAMERATE (48.000 Hz) sein.
  • Die Eingabe- und Ausgabekanäle müssen eine der folgenden Kombinationen sein:
    • Mono-Eingang und Mono-Ausgabe
    • Mono-Eingang und 5,1-Ausgabe
    • Stereoeingabe und Stereoausgabe
    • Stereo-Eingang und 5.1-Ausgabe
Das Hallen-APO verwaltet interne Zustandsinformationen zwischen Verarbeitungsbeispielen. Sie können jeweils nur eine Instanz des APO mit einer Quelle von Audiodaten verwenden. Mehrere Stimmen, die Halleffekte erfordern, müssten jeweils einen separaten Halleffekt mit XAudio2CreateReverb erstellen.

Informationen zum Erstellen neuer Effekte für die Verwendung mit XAudio2 finden Sie in der XAPO-Übersicht.

Fenster
Da XAudio2CreateReverbCoCreateInstance unter Windows aufruft, muss die Anwendung die CoInitializeEx-Methode aufgerufen haben, bevor XAudio2CreateReverb aufgerufen wird. XAudio2Create hat dieselbe Anforderung, was bedeutet, dass CoInitializeEx normalerweise lange aufgerufen wird, bevor XAudio2CreateReverb aufgerufen wird.

Ein typisches Anrufmuster unter Windows wäre wie folgt:

#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);

 

Der xaudio2fx.h-Header definiert die GUID der AudioReverb-Klasse als plattformübergreifendes Audioverarbeitungsobjekt (XAPO).

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

XAudio2CreateReverb gibt dieses Objekt als Zeiger auf einen Zeiger auf IUnknown im ppApo-Parameter zurück. Obwohl Sie die IXAPO - und IXAPOParameters-Schnittstellen von diesem IUnknown abfragen können, verwenden Sie diese Schnittstellen in der Regel nie direkt. Stattdessen verwenden Sie sie, wenn Sie eine Stimme erstellen, um sie als Teil der Effektkette hinzuzufügen.

Der Halleffekt verwendet die XAUDIO2FX_REVERB_PARAMETERS Parameterstruktur, auf die Sie über die IXAudio2Voice::SetEffectParameters zugreifen.

Hinweis

  XAudio2CreateReverb ist eine Inlinefunktion in xaudio2fx.h, die CreateAudioReverb aufruft, wie im folgenden Codebeispiel veranschaulicht.

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

Plattformanforderungen

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

Anforderungen

Anforderung Wert
Zielplattform Fenster
Kopfzeile xaudio2fx.h
Bibliothek Xaudio2.lib
DLL Windows.Media.Audio.dll

Siehe auch

Gewusst wie: Erstellen einer Effektkette

IXAudio2Voice::SetEffectParameters

XAUDIO2FX_REVERB_PARAMETERS

XAudio2-Funktionen