Partager via


Jeux d’opérations XAudio2

Cette vue d’ensemble présente plusieurs méthodes XAudio2 que vous pouvez appeler dans le cadre d’un jeu d’opérations.

Plusieurs méthodes XAudio2 prennent l’argument OperationSet, ce qui leur permet d’être appelés dans le cadre d’un groupe différé. À un moment spécifique, vous pouvez appliquer un ensemble complet de modifications simultanément en appelant la fonction IXAudio2 ::CommitChanges avec l’identificateur OperationSet pour ce groupe. L’identificateur est un nombre arbitraire. Ainsi, il permet à des parties distinctes du code client d’appliquer des modifications atomiques distinctes au graphe sans aucun conflit. La pratique recommandée est que le client incrémente un compteur global chaque fois qu’il doit générer un identificateur d’ensemble d’opérations unique et nouveau OperationSet. Un ensemble de modifications apportées au graphe, appliqué atomiquement, est garanti être précis par exemple. Par exemple, les voix démarrent dans la synchronisation.

Si vous définissez OperationSet sur XAUDIO2_COMMIT_NOW, la modification s’applique immédiatement. Il prend effet dans la première passe de traitement audio après l’appel de méthode. Si vous appelez CommitChanges avec XAUDIO2_COMMIT_ALL, les modifications apportées à tous les jeux d’opérations en attente sont effectuées, quel que soit leur identificateur OperationSet.

Certaines méthodes prennent effet immédiatement lorsqu’elles sont appelées à partir d’un rappel XAudio2 avec une OperationSet de XAUDIO2_COMMIT_NOW. Toutes les autres méthodes qui acceptent un argument OperationSet prennent effet uniquement sur la passe de traitement suivante une fois la méthode appelée (si elle est appelée avec XAUDIO2_COMMIT_NOW), ou après CommitChanges est appelée avec le même OperationSet. En raison de cela, certains appels de méthode peuvent ne pas toujours se produire dans le même ordre dans lequel ils ont été appelés.

Toutes les opérations en attente sont validées atomiquement lorsque IXAudio2 ::StopEngine est appelée. Toutes les méthodes appelées pendant que le moteur est arrêté prennent effet immédiatement, quelle que soit la valeur OperationSet fournie. Lorsque vous redémarrez le moteur, XAudio2 revient en mode asynchrone.

Les scénarios simples dans lesquels les jeux d’opérations sont utiles incluent les exemples suivants.

  • Démarrage simultané de plusieurs voix.
  • Envoi simultané d’une mémoire tampon à une voix, définition des paramètres vocaux et démarrage de la voix.
  • Apporter une modification à grande échelle au graphique, par exemple la connexion de toutes les voix sources à une nouvelle voix de sous-mélange.

Consultez Guide pratique pour regrouper des méthodes audio en tant que jeu d’opérations pour obtenir un exemple d’utilisation d’un jeu d’opérations.

Méthodes d’ensemble d’opérations

Vous pouvez appeler les méthodes suivantes dans le cadre d’un jeu d’opérations.

Comme décrit précédemment, le code client doit appeler la fonction IXAudio2 ::CommitChanges pour exécuter les modifications différées.

jeux d’opérations

Guide de programmation XAudio2

Comment : regrouper des méthodes audio en tant qu’ensemble d’opérations