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 acceptent l’argument OperationSet , ce qui permet d’être appelées dans le cadre d’un groupe différé. À un moment donné, 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 consiste à ce que le client incrémente un compteur global chaque fois qu’il a besoin de générer un nouvel identificateur OperationSet unique. Un ensemble de modifications apportées au graphe, appliqués de manière atomique, est garanti pour être exact à l’échantillon. Par exemple, les voix démarrent en synchronisation.

Si vous définissez OperationSet sur XAUDIO2_COMMIT_NOW, la modification s’applique immédiatement. Il prend effet lors de la première passe de traitement audio après l’appel de méthode. Si vous appelez CommitChanges avec XAUDIO2_COMMIT_ALL, des 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 un OperationSet de XAUDIO2_COMMIT_NOW. Toutes les autres méthodes qui prennent un argument OperationSet prennent effet uniquement au passage de traitement suivant après l’appel de la méthode (si elle est appelée avec XAUDIO2_COMMIT_NOW), ou après que CommitChanges a été appelé avec le même OperationSet. Pour cette raison, certains appels de méthode peuvent ne pas toujours se produire dans l’ordre dans lequel ils ont été appelés.

Toutes les opérations en attente sont validées de manière atomique lorsque IXAudio2::StopEngine est appelé. Toutes les méthodes appelées pendant l’arrêt du moteur 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.
  • Modification à grande échelle du graphique, par exemple en connectant toutes les voix sources à une nouvelle voix de sous-mixage.

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

Procédure : regrouper des méthodes audio comme un ensemble d’opérations