Traduction de la topologie de diffusion en continu du noyau vers l’API Mixer audio

L’API mixer est un ensemble de fonctions multimédias Windows qui sont utilisées pour récupérer des informations sur les appareils de mixage audio. L’API mixer classe les lignes de mixage audio en tant que lignes source et de destination. Les lignes sources sont des entrées dans le carte audio (par exemple, CD, microphone, line-in et wave). Les lignes de destination sont des sorties du carte (par exemple, haut-parleurs, casque, ligne téléphonique et ondes entrantes). Pour qu’une ligne source soit valide, elle doit avoir un chemin d’accès unique de la source à une destination. Une seule ligne source peut être mappée à plusieurs destinations, mais pas plus d’un seul chemin d’accès peut connecter une ligne source à une ligne de destination. Pour plus d’informations sur l’API mixer, consultez la documentation Microsoft Windows SDK.

Le pilote WDM d’une carte audio expose une topologie de filtre KS qui représente les chemins de données via le matériel et les fonctions disponibles sur ces chemins. Le pilote système WDMAud (dans les fichiers Wdmaud.sys et Wdmaud.drv) doit interpréter la topologie de filtre KS et générer les lignes de mélangeur source et de destination correspondantes exposées via l’API mixer . WDMAud gère également les appels d’API mixer et les traduit en appels de propriété équivalents sur les broches de filtre et les nœuds gérés par le pilote de l’adaptateur.

Le pilote système KMixer (Kmixer.sys) et le pilote système SWMidi (Swmidi.sys) sont des composants intégraux de la pile audio du noyau. KMixer fournit un mixage audio à l’échelle du système, une conversion de profondeur de bits, une conversion de taux d’échantillonnage et une traduction de configuration canal-haut-parleur (supermix) pour les flux audio PCM. SWMidi fournit une synthèse logicielle de haute qualité des flux MIDI. Le pilote audio système, SysAudio (Sysaudio.sys; voir SysAudio System Driver), combine les fonctionnalités de KMixer et SWMidi avec les pilotes d’adaptateur audio installés pour former des périphériques audio virtuels fonctionnels améliorés.

WDMAud gère l’interface entre la partie KS et la partie héritée (voir Composant système WinMM) de la pile audio. WDMAud traduit les broches sur les filtres sysAudio-virtualisés en lignes de mixage héritées qui sont présentées dans des applications telles que SndVol32. La traduction de la topologie KS en lignes de mixage est effectuée comme suit :

  • Les broches sources (KSPIN_DATAFLOW_OUT) dans la topologie KS sont exposées en tant que lignes de mélangeur de destination (MIXERLINE_COMPONENTTYPE_DST_XXX).

  • Les broches de récepteur (KSPIN_DATAFLOW_IN) dans la topologie KS sont exposées en tant que lignes de mélangeur source (MIXERLINE_COMPONENTTYPE_SRC_XXX).

  • WDMAud guide le graphique de filtre KS en commençant par la broche source qui se trouve au point de terminaison du graphe de filtre et traverse le graphe dans la direction opposée au flux de données jusqu’à ce qu’une broche récepteur soit atteinte.

  • Les propriétés prises en charge sur chaque nœud KS rencontré pendant le parcours sont exposées en tant que contrôles sur la ligne de mélangeur source.

Dans les deux premiers éléments ci-dessus, le mappage des broches source et récepteur KS aux lignes de mélangeur de destination et source est potentiellement déroutant en raison des différences de terminologie. Dans KS, un appareil est encapsulé dans un filtre qui a des broches récepteur (entrée) et des broches source (sortie). Les termes « récepteur » et « source » ne font pas référence au filtre, mais plutôt à la connexion (généralement mise en mémoire tampon) entre deux filtres :

  • L’épingle source du filtre amont est la source du flux de données qui entre dans la connexion.

  • Le flux de données quitte la connexion via la broche de récepteur du filtre en aval.

En revanche, la terminologie de la ligne de mélange est centrée sur l’appareil :

  • Une ligne de mélangeur source est la source d’un flux qui entre dans l’appareil.

  • Une ligne de mélangeur de destination est la destination d’un flux qui quitte l’appareil.

En outre, la terminologie KS est quelque peu incohérente dans la direction du flux de flux qu’elle affecte à une broche sur un filtre KS. Le descripteur d’épingle utilise une valeur d’énumération KSPIN_DATAFLOW pour spécifier la direction :

  • Un flux qui entre dans le filtre par le biais d’une broche de récepteur a une direction de KSPIN_DATAFLOW_IN.

  • Un flux qui quitte le filtre via une broche source a une direction de KSPIN_DATAFLOW_OUT.

Les directions « in » et « out » sont clairement centrées sur les filtres, tandis que les termes « récepteur » et « source » sont centrés sur la connexion.

Pour plus d’informations sur l’algorithme d’analyse de topologie utilisé par WDMAud, consultez Analyse de topologie WDMAud.

Cette section comprend également les éléments suivants :

Épingles de topologie

Nœuds de topologie

SysTray et SndVol32

Exposition de la topologie de filtre