XAudio2 Audio Graph
L’ensemble de toutes les voix, avec leurs effets contenus et leurs interconnexions, est appelé graphique de traitement audio. Le graphe prend un ensemble de flux audio du client en tant qu’entrée, les traite et fournit le résultat final à un périphérique audio. Tout le traitement audio s’effectue dans un thread distinct avec une périodicité définie par le quantum du graphique (actuellement 10 millisecondes sur Microsoft Windows et 5 1/3 millisecondes sur Xbox 360). Toutes les millisecondes quantiques, le thread se réveille et disperse des millisecondes quantiques de données audio dans l’ensemble du graphique. Pour obtenir un exemple de création d’un graphique audio de base, consultez How to: Build a Basic Audio Processing Graph.
Un graphique audio simple :
Le client peut contrôler dynamiquement l’état du graphique pendant son exécution. Les actions de contrôle peuvent inclure l’ajout et la suppression d’entrées et de sorties, la modification des effets internes et des interconnexions, la définition de paramètres sur les effets, l’activation et la désactivation de parties du graphique, etc. Pour obtenir un exemple de modification dynamique d’un graphique audio, consultez Guide pratique pour ajouter ou supprimer dynamiquement des voix d’un graphique audio.
Traitement du graphe
Tout appel de méthode qui affecte n’importe quel objet du graphe est considéré comme ayant un changement d’état de graphe. Les changements d’état du graphique incluent les éléments suivants :
- Création et destruction de voix
- Démarrage ou arrêt des voix
- Modification des destinations d’une voix
- Modification des chaînes d’effets
- Activation ou désactivation des effets
- Définition de paramètres sur les effets ou sur les SPC, filtres, volumes et mélangeurs intégrés
Tout ensemble de modifications d’état de graphe peut être combiné et effectué en tant que transaction atomique. Ces opérations atomiques sont appelées jeux d’opérations. Ils sont abordés dans la vue d’ensemble des jeux d’opérations XAudio2 .
Représentation des données internes
Les données audio dans le graphe XAudio2 sont toujours stockées et traitées sous forme PCM à virgule flottante 32 bits. Toutefois, le nombre de canaux et le taux d’échantillonnage peuvent varier dans le graphique. Le format dans lequel une voix donnée traite l’audio est déterminé par le type de voix et les paramètres utilisés pour créer la voix.
Type de voix | Paramètres |
---|---|
IXAudio2SourceVoice | Nombre de canaux et taux d’échantillonnage des voix auxquelles la voix source envoie de l’audio. |
IXAudio2SubmixVoice et IXAudio2MasteringVoice | Arguments InputChannels et InputSampleRate utilisés pour créer la voix de sous-mixage/mastering. |
Format Conversion
XAudio2 gère les taux d’échantillonnage ou les conversions de canaux requis lorsque l’audio passe d’une voix à une autre, avec les limitations suivantes :
- Toutes les voix de destination d’une voix particulière doivent s’exécuter au même taux d’échantillonnage
- Les effets d’une chaîne d’effets peuvent modifier le nombre de canaux audio, mais pas son taux d’échantillonnage
- Le nombre de canaux de sortie d’une chaîne d’effets doit correspondre à celui des voix auxquelles elle envoie
- Aucune modification de graphe dynamique ne peut être apportée, ce qui enfreindrait les règles ci-dessus
Côté entrée, les voix sources peuvent lire des données dans n’importe quel format PCM valide ou dans l’un des formats compressés pris en charge par XAudio2. Si les données d’entrée sont compressées, elles sont décodées en PCM à virgule flottante avant tout traitement supplémentaire.
Côté sortie, le mastering des voix ne peut produire que des données PCM. Ces données satisfont toujours aux mêmes restrictions décrites ci-dessus pour les données PCM d’entrée.
Rubriques connexes