XAudio2-Vorgangssätze
In dieser Übersicht werden mehrere XAudio2-Methoden vorgestellt, die Sie als Teil eines Vorgangssatzes aufrufen können.
Mehrere XAudio2-Methoden verwenden das OperationSet--Argument, mit dem sie als Teil einer verzögerten Gruppe aufgerufen werden können. Zu einem bestimmten Zeitpunkt können Sie einen ganzen Satz von Änderungen gleichzeitig anwenden, indem Sie die Funktion IXAudio2::CommitChanges mit dem bezeichner OperationSet für diese Gruppe aufrufen. Der Bezeichner ist eine beliebige Zahl. Auf diese Weise können separate Teile des Clientcodes separate atome Änderungen auf das Diagramm anwenden, ohne dass konfliktelos. Die empfohlene Methode besteht darin, dass der Client einen globalen Zähler erhöht, wenn ein eindeutiger, neuer OperationSet Bezeichner generiert werden muss. Eine Reihe von Änderungen am Diagramm, die atomisch angewendet werden, ist garantiert stichprobengenau. Beispielsweise wird die Synchronisierung von Stimmen gestartet.
Wenn Sie OperationSet- auf XAUDIO2_COMMIT_NOW festlegen, wird die Änderung sofort angewendet. Sie wird im ersten Audioverarbeitungsdurchlauf nach dem Methodenaufruf wirksam. Wenn Sie CommitChanges- mit XAUDIO2_COMMIT_ALL aufrufen, werden Änderungen an allen ausstehenden Vorgangssätzen unabhängig von deren OperationSet Bezeichner ausgeführt.
Bestimmte Methoden werden sofort wirksam, wenn sie von einem XAudio2-Rückruf mit einem OperationSet- von XAUDIO2_COMMIT_NOW aufgerufen werden. Alle anderen Methoden, die ein OperationSet Argument verwenden, wirken sich nur auf den nächsten Verarbeitungsdurchlauf aus, nachdem die Methode aufgerufen wurde (wenn mit XAUDIO2_COMMIT_NOW aufgerufen wird), oder nachdem CommitChanges- mit demselben OperationSet-aufgerufen wird. Aus diesem Zweck können bestimmte Methodenaufrufe nicht immer in derselben Reihenfolge auftreten, in der sie aufgerufen wurden.
Alle ausstehenden Vorgänge werden atomisch zugesichert, wenn IXAudio2::StopEngine aufgerufen wird. Alle Methoden, die aufgerufen werden, während das Modul beendet wird, werden sofort wirksam, unabhängig vom bereitgestellten wert OperationSet. Wenn Sie das Modul neu starten, kehrt XAudio2 in den asynchronen Modus zurück.
Einfache Szenarien, in denen Vorgangssätze hilfreich sind, sind die folgenden Beispiele.
- Gleichzeitiges Starten mehrerer Stimmen.
- Gleichzeitiges Übermitteln eines Puffers an eine Stimme, Festlegen der Sprachparameter und Starten der Stimme.
- Erstellen einer großen Änderung am Diagramm, z. B. Verbinden aller Quellstimme mit einer neuen Submixstimme.
Weitere Informationen finden Sie unter How to: Group Audio Methods as an Operation Set for an example of using an operation set.
Operation Set-Methoden
Sie können die folgenden Methoden als Teil eines Vorgangssatzes aufrufen.
- IXAudio2SourceVoice::ExitLoop
- IXAudio2Voice::SetFilterParameters
- IXAudio2SourceVoice::SetFrequencyRatio
- IXAudio2Voice::D isableEffect
- IXAudio2Voice::EnableEffect
- IXAudio2Voice::SetChannelVolumes
- IXAudio2Voice::SetEffectParameters
- IXAudio2Voice::SetOutputMatrix
- IXAudio2Voice::SetVolume
- IXAudio2SourceVoice::Start
- IXAudio2SourceVoice::Stop
Wie bereits beschrieben, muss clientcode letztendlich die Funktion IXAudio2::CommitChanges aufrufen, um die verzögerten Änderungen auszuführen.
Verwandte Themen