Spécification de la topologie

Une fois qu’un fournisseur de matériel a décidé quels pilotes miniport écrire pour les appareils wave et MIDI, l’étape suivante consiste à représenter la topologie de diffusion en continu du noyau (KS) de ces appareils. La topologie KS se compose d’un ensemble de structures de données qui décrivent les chemins de données que les flux audio ou MIDI suivent à mesure qu’ils circulent dans chaque appareil. Grâce à cette topologie, le pilote expose les nœuds de contrôle (par exemple, le contrôle de volume) qui se trouvent le long de chaque chemin. En règle générale, une application utilise les fonctionsXxx du mixeur multimédia Windows pour explorer la topologie en énumérant la séquence de nœuds le long de chaque chemin. Par exemple, après avoir découvert un nœud de contrôle au niveau du volume, une application peut définir le niveau de volume sur ce nœud. Pour plus d’informations sur le multimédia Windows, consultez la documentation Microsoft Windows SDK. Pour plus d’informations sur la représentation des topologies KS par les fonctionsxxx du mélangeur, consultez Topologie de streaming de noyau vers traduction de l’API Mixeur audio.

PortCls fournit six pilotes de port : WavePci, WaveCyclic, WaveRT, MIDI, DMus et Topologie. (WaveRT est disponible depuis Windows Vista et constitue l’approche recommandée.) Le pilote de port de topologie contrôle la partie du circuit de l’adaptateur audio qui mélange les flux de rendu des périphériques wave et MIDI. Il contrôle également la sélection des flux de capture à partir des prises d’entrée. En dépit de son nom quelque peu trompeur, le pilote de port de topologie n’intègre pas toute la topologie d’un adaptateur audio, bien qu’il en contienne généralement une grande partie. Les autres pilotes de port contribuent aux parties restantes de la topologie de l’adaptateur.

Chaque pilote de port est associé à un pilote miniport correspondant pour former un filtre KS qui représente un périphérique particulier (wave, MIDI ou mixer) sur la carte audio, comme indiqué dans le tableau suivant.

Type de filtre Description

Filtre WaveXxx

Représente un appareil à ondes qui convertit un flux de sortie d’onde en signal audio analogique ou qui convertit un signal audio analogique en flux d’entrée d’onde.

Filtre MIDI ou DMus

Représente un appareil MIDI qui lit ou capture un flux MIDI.

Filtre de topologie

Représente le circuit du mélangeur de l’adaptateur.

Le pilote miniport implémente les fonctions propres au périphérique du filtre, y compris la définition de la partie de la topologie de l’adaptateur que l’appareil englobe. Le pilote de port prend en charge les opérations de filtre génériques, y compris la communication avec le système d’exploitation, pour chaque type de filtre.

Chaque filtre a une ou plusieurs broches KS qui servent de voies d’accès pour les flux de données audio à entrer et à quitter le filtre. En règle générale, les broches du filtre topologie sont liées aux broches des filtres wave, MIDI et DMus via des connexions câblées dans le circuit de l’adaptateur. Ces filtres et leurs interconnexions forment un graphique de filtre KS qui incarne la topologie de l’adaptateur.

La figure suivante montre la topologie d’un exemple de carte audio.

Diagramme montrant la topologie d’une carte audio avec des connexions entre les filtres MIDI, WaveXxx et topologie.

Dans la figure précédente, la topologie au niveau supérieur se compose des connexions entre les filtres MIDI, WaveXxx et topologie. En outre, chaque filtre a sa propre topologie interne, qui se compose des chemins de données via le filtre et des nœuds de contrôle qui se trouvent le long de chaque chemin. Les nœuds sont étiquetés comme indiqué dans le tableau suivant.

Étiquette Description KS Node-Type GUID

Synthé

Nœud synthétiseur

KSNODETYPE_SYNTHESIZER

DAC

Nœud de conversion numérique-audio

KSNODETYPE_DAC

ADC

Nœud convertisseur analogique-numérique

KSNODETYPE_ADC

Volume

Nœud de contrôle au niveau du volume

KSNODETYPE_VOLUME

Désactiver le son

Désactiver le nœud de contrôle

KSNODETYPE_MUTE

Sum

Nœud de somme

KSNODETYPE_SUM

MUX

Nœud multiplexeur

KSNODETYPE_MUX

Dans la figure précédente, les broches situées à gauche de la carte audio représentent les connexions logiques (et non les connexions physiques) par lesquelles les flux de données entrent dans l’adaptateur à partir du bus système ou entrent dans le bus système à partir de l’adaptateur. Ces broches sont logiquement connectées aux broches source et récepteur sur d’autres filtres (non affichés) externes à l’adaptateur. En règle générale, ces filtres sont des modules logiciels qui, avec la topologie de l’adaptateur, forment un graphe de filtre plus grand dont la topologie peut être explorée par les applications à l’aide des fonctionsxxx du mélangeur. Par exemple, la broche intitulée « PCM Wave Out » dans la figure précédente est logiquement connectée au moteur audio en mode utilisateur dans Windows. Ces connexions logiques sont gérées par les transferts DMA sur le bus système.

En revanche, les broches situées sur le bord gauche du filtre de topologie sont physiquement connectées aux broches des filtres MIDI et WaveXxx . Ces connexions sont câblées et ne peuvent pas être modifiées par un logiciel.

Les broches de pont situées sur le côté droit de l’adaptateur audio représentent des prises audio sur le châssis système. Ces broches sont appelées broches de pont , car elles pontent la limite entre le graphe de filtre KS et le monde externe.

Les filtres, les broches et les nœuds ont généralement des propriétés accessibles aux clients (composants en mode noyau ou applications en mode utilisateur) du pilote audio. Un client peut envoyer une demande de propriété KS à un filtre, une broche ou un nœud pour interroger la valeur actuelle d’une propriété ou pour modifier la valeur de la propriété. Par exemple, un nœud de contrôle au niveau du volume a une propriété KSPROPERTY_AUDIO_VOLUMELEVEL , qu’un client peut modifier via une demande de propriété KS. Un nœud de somme est un exemple de type de nœud qui n’a généralement aucune propriété.

Par souci de simplicité, le filtre WaveXxx de la figure précédente ne fournit qu’une seule broche pour accepter un flux de sortie d’onde PCM à partir du bus système. En revanche, certains appareils wave fournissent plusieurs broches pour la sortie d’onde PCM et contiennent du matériel pour mélanger en interne les flux qui entrent dans les broches. Ces appareils fournissent une accélération matérielle pour les applications qui utilisent DirectSound en acceptant des flux PCM lisant à partir des mémoires tampons sonores des applications. Pour que DirectSound utilise ces broches, ils doivent fournir des nœuds supplémentaires pour le traitement bidimensionnel (2D) et tridimensionnel (3D), comme décrit dans Accélération matérielle DirectSound dans WDM Audio.

Ce type d’accélération matérielle est pris en charge dans Windows Server 2003, Windows XP, Windows 2000 et Windows Me/98, mais il n’est pas pris en charge dans Windows Vista. Windows Vista n’utilise pas les broches d’accélération matérielle sur les anciens appareils wave.

Dans la figure précédente, les connexions physiques entre le MIDI, la vagueXxx et la topologie filtrent tous les signaux audio analogiques de transport. Toutefois, un autre appareil de topologie peut obtenir un effet similaire en acceptant les flux de sortie numérique des appareils MIDI et ondes, en les mixant numériquement et en convertissant le mix numérique en signal de sortie analogique.

L’épingle « Non-PCM Wave Out » dans le coin inférieur gauche de la figure précédente accepte un flux de sortie non PCM dans un format de transmission S/PDIF, tel que AC-3-over-S/PDIF ou WMA Pro-over-S/PDIF. À l’aide de l’un de ces formats, l’appareil transmet simplement les données compressées via le lien S/PDIF sans décoder les données. Pour cette raison, le chemin d’accès aux données de l’épingle « S/PDIF Out » dans le coin inférieur droit de la figure précédente ne contient aucun nœud de volume ou de sourdine. Pour plus d’informations sur les formats audio non PCM et la transmission directe S/PDIF, consultez Prise en charge des formats d’onde non PCM et S/PDIF Pass-Through transmission de flux non PCM.

Le pilote miniport présente sa topologie au pilote de port sous la forme d’une structure de PCFILTER_DESCRIPTOR . Cette structure décrit tous les nœuds et les broches du filtre, et spécifie comment les broches et les nœuds se connectent les uns aux autres.

Au lieu de concevoir un filtre de topologie monolithique, comme illustré dans la figure précédente, le circuit mixeur de l’adaptateur audio peut être partitionné en plusieurs filtres de topologie. Par exemple, dans la figure précédente, les chemins de données qui conduisent les haut-parleurs peuvent être implémentés en tant que filtre de topologie unique, et les chemins d’accès de données qui capturent les données audio des appareils d’entrée peuvent être implémentés en tant que filtre de topologie distinct. Lorsque les chemins de données d’un filtre de topologie particulier ne sont pas utilisés, cette partie de l’adaptateur peut être mise hors tension sans désactiver l’ensemble de l’adaptateur. Pour plus d’informations, consultez Sous-appareils audio dynamiques.