XAPO–Übersicht

Die XAPO-API ermöglicht die Erstellung plattformübergreifender Audioverarbeitungsobjekte (Cross-Platform Audio Processing Objects, XAPO) für die Verwendung in XAudio2 unter Windows und Xbox 360. Ein XAPO-Objekt ist ein Objekt, das eingehende Audiodaten akzeptiert und einen Vorgang für die Daten ausführt, bevor er sie weitergibt. Sie können eine XAPO verwenden, um eine Vielzahl von Aufgaben auszuführen, darunter das Hinzufügen von Hall zu einem Audiostream und die Überwachung von Spitzenlautstärken.

Erstellen neuer XAPOs

Die XAPO-API stellt die IXAPO-Schnittstelle und die CXAPOBase-Klasse zum Erstellen neuer XAPO-Typen bereit. Die IXAPO-Schnittstelle enthält alle Methoden, die implementiert werden müssen, um ein neues XAPO zu erstellen. Die CXAPOBase-Klasse bietet eine grundlegende Implementierung der IXAPO-Schnittstelle . CXAPOBase implementiert alle IXAPO-Schnittstellenmethoden mit Ausnahme der IXAPO::P rocess-Methode , die für jeden XAPO eindeutig ist.

Ein Beispiel zum Erstellen eines neuen XAPO finden Sie unter Vorgehensweise: Erstellen eines XAPO.

Ein Beispiel für das Erstellen eines XAPO, das Laufzeitparameter akzeptiert, finden Sie unter Vorgehensweise: Hinzufügen von Laufzeitparameterunterstützung zu einem XAPO.

XAPOs und COM

XAPOs implementieren die IUnknown-Schnittstelle . Die IXAPO- und IXAPOParameters-Schnittstellen umfassen die drei IUnknown-Methoden: QueryInterface, AddRef und Release. CXAPOBase bietet Implementierungen aller drei IUnknown-Methoden. Eine neue instance von CXAPOBase weist die Referenzanzahl 1 auf. Sie wird zerstört, wenn die Referenzanzahl 0 wird. Implementierungen von IXAPO und IXAPOParameters sollten demselben Muster folgen, um die ordnungsgemäße Verwaltung zu ermöglichen, wenn sie mit XAudio2 verwendet werden.

XAPO-Instanzen werden als IUnknown-Schnittstellen an XAudio2 übergeben. XAudio2 verwendet QueryInterface , um eine IXAPO-Schnittstelle zu erhalten und zu erkennen, ob das XAPO die IXAPOParameters-Schnittstelle implementiert. Implementierungen von IXAPO müssen Anforderungen für __uuidof (IXAPO) akzeptieren. Wenn IXAPOParameters implementiert ist, muss es auch Anforderungen für __uuidof(IXAPOParameters) akzeptieren.

Verwenden eines XAPO in XAudio2

XAPOs werden in XAudio2 verwendet, indem sie an Stimmen angefügt werden. Jede XAudio2-Stimme verfügt über eine Effektkette, die null oder mehr Audioeffekte enthält. Audiodaten, die an eine Stimme gesendet werden, werden durch jeden Effekt in der Kette weitergeleitet, bevor sie an die Ausgabeziele der Stimme gesendet werden. Daten werden von der Stimme an jeden Effekt mit dem pInputProcessParameters-Parameter der IXAPO::P rocess-Methode übergeben. Anschließend wird sie mithilfe des pOutputProcessParameters-Parameters an die Stimme zurückgegeben. Die Stimme übernimmt die Ausgabe jedes Effekts und leitet sie in den nächsten Effekt in der Kette ein, bis keine Effekte in der Kette verbleiben.

Weitere Informationen zu XAudio2-Effektketten finden Sie unter XAudio2-Audioeffekte.

Ein Beispiel für die Verwendung eines XAPO in XAudio2 finden Sie unter Vorgehensweise: Verwenden eines XAPO in XAudio2.

Effektbibliotheken

Die XAPO-Effektbibliothek enthält mehrere XAPOs und eine gängige Instanziierungsmethode. Informationen zu XAPOFX finden Sie unter Übersicht über XAPOFX . Außerdem verfügt XAudio2 über integrierte Hall- und Volume-Meter-Effekte. Weitere Informationen zu den integrierten XAudio2-Effekten finden Sie unter XAudio2-Audioeffekte .

Audioeffekte

XAudio2-Audioeffekte