Présentation de XAudio2
XAudio2 est une API audio de bas niveau. Il fournit une base de traitement et de mélange de signal pour les jeux qui est similaire à ses prédécesseurs, DirectSound et XAudio.
XAudio2 est le remplacement tant attendu de DirectSound. Il résout plusieurs problèmes en suspens et demandes de fonctionnalités.
Fonctionnalités XAudio2
Voici une liste des fonctionnalités de XAudio2 et des nouvelles fonctionnalités qui permettent aux développeurs d’améliorer les performances de leurs jeux.
Effets DSP et filtrage par voix
Les effets DSP (Digital Signal Processing) sont les nuanceurs de pixels de l’audio. Ils gèrent tout, de la transformation d’un son (transformer un cri de porc en un son de monstre bas et effrayant) à placer des sons dans l’environnement de jeu à l’aide de la réverbération et de l’occlusion ou du filtrage d’obstruction. XAudio2 fournit une infrastructure DSP flexible et puissante. Il fournit également un filtre intégré sur chaque voix, pour des effets de filtrage bas/haut/passe-bande efficaces.
Pour plus d’informations sur les effets DSP et par filtrage vocal, consultez Effets audio XAudio2 et IXAudio2Voice::SetFilterParameters .
Sous-mélange
Le sous-mixage combine plusieurs sons en un seul flux audio, par exemple un son de moteur composé de parties composites, qui sont toutes lues simultanément. En outre, vous pouvez utiliser le sous-mélange pour traiter et combiner des parties similaires d’un jeu. Par exemple, vous pouvez combiner tous les effets sonores du jeu pour permettre l’application d’un paramètre de volume utilisateur tandis qu’un paramètre distinct contrôle le volume de musique. Combiné à DSP, le sous-mélange fournit le type de routage et de traitement des données nécessaires pour les jeux d’aujourd’hui. XAudio2 permet des niveaux arbitraires de sous-mixage, ce qui permet la création de sons complexes et de mixages de jeux.
Pour plus d’informations sur le sous-mélange, consultez XAudio2 Audio Graph et XAudio2 Voices .
Prise en charge audio compressée
L’une des principales demandes de fonctionnalités pour DirectSound concerne la prise en charge audio compressée. XAudio2 prend en charge les formats compressés (ADPCM) en mode natif avec la décompression au moment de l’exécution.
Prise en charge améliorée du son multicanal et surround
La prise en charge du son multicanal, 3D et surround est étendue. Les sons 3D et surround sont désormais beaucoup plus flexibles et transparents. XAudio2 supprime la limite de 6 canaux sur les sons multicanaux et prend en charge l’audio multicanal sur tous les carte audio compatibles avec plusieurs canaux. Le carte n’a pas besoin d’être accéléré par le matériel.
Traitement multirate
Pour réduire l’utilisation du processeur, XAudio2 fournit la technologie permettant de créer plusieurs graphiques de traitement audio à faible débit. Cela peut réduire considérablement l’utilisation du processeur en permettant à un jeu de traiter l’audio à la vitesse du matériel source si le débit est inférieur à 48 kHz.
Modèle d’API non bloquant
À quelques exceptions près, un appel de méthode XAudio2 ne bloque pas le moteur de traitement audio. Cela signifie qu’un client peut effectuer en toute sécurité un ensemble d’appels de méthode à tout moment sans se bloquer sur les appels de longue durée entraînant des retards. Les exceptions sont la méthode IXAudio2Voice::D estroyVoice (qui peut bloquer le moteur jusqu’à ce que le traitement de la voix en cours de destruction soit terminé) et les méthodes qui mettent fin au thread audio : IXAudio2::StopEngine et IXAudio2::Release. Notez que si les appels de méthode XAudio2 ne bloquent pas le moteur de traitement audio, les méthodes XAudio2 contiennent des sections critiques et peuvent elles-mêmes être bloquées dans certaines circonstances.
Quand utiliser XAudio2
XAudio2 est principalement destiné au développement de moteurs audio hautes performances pour les jeux. Pour les développeurs qui souhaitent ajouter des effets sonores et de la musique de fond dans leurs jeux modernes, XAudio2 propose un moteur de mixage et de graphique audio caractérisé par sa faible latence et sa prise en charge des tampons dynamiques, de la lecture synchrone et précise en échantillonnage, et de la conversion implicite du débit source. Par rapport à WASAPI, XAudio2 ne nécessite qu’une quantité minimale de code, même pour les solutions audio complexes. Par rapport au moteur Media Foundation, XAudio2 est une API C++ de bas niveau et à faible latence qui est conçue pour une utilisation dans les jeux.
Pour les applications qui nécessitent simplement une lecture régulière de musique, le moteur Media Foundation peut être mieux adapté aux exigences de l’application.
Rubriques connexes