Vue d’ensemble de l’accélération matérielle DirectSound

Un certain nombre d’adaptateurs audio offrent une accélération matérielle DirectSound, c’est-à-dire la possibilité d’effectuer un mixage matériel pour un ou plusieurs flux DirectSound. Le mixage matériel améliore les performances en déchargeant les opérations de mixage audio à partir du processeur et en les exécutant à des vitesses matérielles. En plus du mixage, le matériel effectue des opérations connexes telles que la conversion de taux d’échantillonnage (SRC), l’atténuation et, éventuellement, le traitement 3D qui aurait autrement besoin d’être effectué dans un logiciel.

Tous les appareils de rendu WaveCyclic ou WavePci présentent une ou plusieurs broches matérielles pour mélanger des flux audio. Dans le cas d’un appareil à flux unique, le pilote système KMixer est toujours instancié sur la seule broche de rendu matérielle disponible.

Les appareils dotés d’une accélération matérielle DirectSound fournissent plusieurs broches de mixage de matériel. Chaque broche supplémentaire peut être utilisée pour mélanger un flux DirectSound. Les flux DirectSound qui alimentent les broches de mixage matériel contournent KMixer et évitent la latence du mélange de logiciels dans KMixer. DirectSound utilise toutes les broches de mixage à accélération matérielle disponibles d’un périphérique audio, à condition que ces broches aient une topologie conforme aux exigences de classement des nœuds DirectSound. DirectSound exige également que les broches prennent en charge le format de données DirectSound spécifié par KSDATAFORMAT_SPECIFIER_DSOUND (voir Format de données DirectSound Stream).

Le pilote système SysAudio réserve toujours une broche matérielle pour KMixer afin qu’une fois que les autres broches matérielles (non réservées) ont toutes été allouées, tous les flux supplémentaires peuvent être mélangés par KMixer et alimentés dans la broche matérielle réservée.

La figure dans Rendering Wave Content Using DirectSound Software and Hardware Buffers illustre ces concepts.

Si un périphérique audio fournit un nombre suffisant de broches de mixage matériel, tous les flux de sortie d’une application DirectSound peuvent être accélérés matériellement. Si ce n’est pas le cas, l’application DirectSound dispose de deux options :

  • Il peut allouer de manière statique les broches de mixage matérielle disponibles aux flux qui nécessitent les latences les plus faibles.

  • Il peut allouer dynamiquement les broches de mixage matérielle disponibles aux flux en fonction des besoins en traitant les broches comme un pool de ressources partagées.

Pour plus d’informations, consultez la discussion sur la gestion des voix dans la documentation Microsoft Windows SDK.

DirectSound peut utiliser deux types de broches de mixage matériel : 2D et 3D. Une broche 2D effectue le SRC, l’atténuation et le mixage, mais pas le positionnement 3D. DirectSound peut utiliser une broche 2D pour effectuer un positionnement 3D en effectuant les calculs d’atténuation et de fréquence nécessaires dans un logiciel et en appliquant les résultats aux nœuds appropriés sur la broche 2D. En revanche, une broche 3D contient un nœud 3D capable de calculer ses propres effets 3D directement à partir des propriétés 3D-buffer et 3D-listener au lieu de s’appuyer sur DirectSound pour ce faire. Pour obtenir la liste des propriétés d’un nœud 3D, consultez KSNODETYPE_3D_EFFECTS. Pour plus d’informations sur les broches 2D et 3D, consultez Prise en charge de l’accélération DirectSound 2D dans WDM Audio et Prise en charge de l’accélération 3D DirectSound dans WDM Audio.