Freigeben über


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 Argument OperationSet , wodurch 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. Daher ermöglicht es separaten Teilen des Clientcodes, separate atomare Änderungen auf den Graphen anzuwenden, ohne dass ein Konflikt besteht. Es wird empfohlen, dass der Client einen globalen Zähler inkrementiert, wenn er einen eindeutigen, neuen OperationSet-Bezeichner generieren muss. Eine Reihe von Änderungen am Graphen, die atomar angewendet werden, sind garantiert stichprobengenau. Beispielsweise werden Stimmen synchronisiert gestartet.

Wenn Sie OperationSet auf XAUDIO2_COMMIT_NOW festlegen, gilt die Änderung sofort. Sie wird im ersten Audioverarbeitungsdurchlauf nach dem Methodenaufruf wirksam. Wenn Sie CommitChanges mit XAUDIO2_COMMIT_ALL aufrufen, werden Änderungen an allen ausstehenden Vorgangssätzen durchgeführt, unabhängig von ihrem OperationSet-Bezeichner .

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 Argument OperationSet verwenden, werden erst im nächsten Verarbeitungsdurchlauf wirksam, nachdem die Methode aufgerufen wurde (wenn sie mit XAUDIO2_COMMIT_NOW aufgerufen wird), oder nachdem CommitChanges mit demselben OperationSet aufgerufen wurde. Daher erfolgen bestimmte Methodenaufrufe möglicherweise nicht immer in derselben Reihenfolge, in der sie aufgerufen wurden.

Alle ausstehenden Vorgänge werden atomar committet, wenn IXAudio2::StopEngine aufgerufen wird. Alle Methoden, die aufgerufen werden, während die Engine beendet wird, werden sofort wirksam, unabhängig vom angegebenen Wert von OperationSet . Wenn Sie die Engine neu starten, kehrt XAudio2 in den asynchronen Modus zurück.

Zu den einfachen Szenarien, in denen Vorgangssätze nützlich sind, gehören die folgenden Beispiele.

  • Gleichzeitiges Starten mehrerer Stimmen.
  • Gleichzeitiges Übermitteln eines Puffers an eine Stimme, Festlegen der Sprachparameter und Starten der Stimme.
  • Vornehmen einer umfangreichen Änderung am Diagramm, z. B. Verbinden aller Quellstimme mit einer neuen Submixstimme.

Ein Beispiel für die Verwendung eines Vorgangssatzes finden Sie unter Vorgehensweise: Gruppieren von Audiomethoden als Vorgangssatz .

Vorgangssatzmethoden

Sie können die folgenden Methoden als Teil eines Vorgangssatzes aufrufen.

Wie zuvor beschrieben, muss der Clientcode letztendlich die Funktion IXAudio2::CommitChanges aufrufen, um die verzögerten Änderungen auszuführen.

Vorgangssätze

XAudio2-Programmieranleitung

So wird's gemacht: Gruppieren von Audiomethoden als Vorgangssatz