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 eine ganze Gruppe von Änderungen gleichzeitig anwenden, indem Sie die Funktion IXAudio2::CommitChanges mit dem OperationSet-Bezeichner für diese Gruppe aufrufen. Der Bezeichner ist eine beliebige Zahl. Daher ermöglicht es separaten Teilen des Clientcodes, separate atomare Änderungen ohne Konflikte auf das Diagramm anzuwenden. Es wird empfohlen, dass der Client einen globalen Indikator erhöht, wenn er einen eindeutigen neuen OperationSet-Bezeichner generieren muss. Eine Reihe von Änderungen am Diagramm, die atomisch angewendet werden, ist garantiert stichprobengenau. Beispielsweise werden Stimmen synchron 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 ihrem 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 annehmen, werden erst beim 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. Aus diesem Grund erfolgen bestimmte Methodenaufrufe möglicherweise nicht immer in derselben Reihenfolge, in der sie aufgerufen wurden.

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

Einfache Szenarien, in denen Vorgangssätze nützlich sind, sind 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 des Diagramms, z. B. das Verbinden aller Quellstimmen 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 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