Épingles de topologie

Le pilote système WDMAud traduit les broches de topologie sur les filtres KS en lignes de mélangeur source et de destination que l’API mixer expose aux applications. Les broches d’entrée (récepteur) deviennent des lignes de mélangeur source, et les broches de sortie (source) deviennent des lignes de mélangeur de destination.

Comme décrit dans Fabriques de broches, un pilote miniport fournit un tableau de descripteurs de broches, chacun d’eux étant une structure de type PCPIN_DESCRIPTOR qui décrit une fabrique de broches appartenant à un filtre. Chaque descripteur d’épingle inclut les informations suivantes :

  • Spécificateur de direction de flux de données

    Indique si le flux de données entre (KSPIN_DATAFLOW_IN) ou quitte (KSPIN_DATAFLOW_OUT) le filtre via l’épingle.

  • GUID de catégorie de broche KS

    Indique la catégorie d’épingle à laquelle appartient l’épingle. Par exemple, sur un périphérique de lecture audio, une broche peut accepter un flux audio numérique au format onde, et une autre broche peut générer un signal audio analogique pour piloter un haut-parleur. Le pilote miniport identifie ces deux types de broches comme appartenant à des catégories de broches distinctes.

  • Spécificateur de type de communication

    Indique le type de communications IRP que l’épingle prend en charge. Une broche qui prend en charge les communications IRP peut être un récepteur IRP (KSPIN_COMMUNICATION_SINK), une source IRP (KSPIN_COMMUNICATION_SOURCE) ou les deux (KSPIN_COMMUNICATION_BOTH). Une broche qui ne prend pas en charge les communications IRP peut se trouver à l’intérieur d’un graphique de filtre KS (KSPIN_COMMUNICATION_NONE) ou être une broche de pont au point de terminaison d’un graphique (KSPIN_COMMUNICATION_BRIDGE).

Pour plus d’informations sur les broches de pont, consultez Graphiques de filtre audio.

WDMAud convertit les informations du descripteur de broche du pilote miniport en un descripteur de ligne de mélangeur, qui est une structure de type MIXERLINE qui inclut les informations suivantes :

  • Type de composant mixer-line

    Indique si la ligne du mélangeur est une ligne source ou de destination, et indique également la fonction générale de la ligne de mélangeur. Par exemple, le type de composant d’une ligne de mixage qui transporte un signal analogique généré à partir d’un flux de sortie d’onde (rendu) pour piloter un ensemble de casques est MIXERLINE_COMPONENTTYPE_DST_HEADPHONES.

  • Type de cible de ligne de mélange

    Indique le type de flux de données que la ligne de mélangeur transporte. Par exemple, le type cible d’un flux de sortie d’onde (rendu) est MIXERLINE_TARGETTYPE_WAVEOUT, et le type cible d’un flux d’entrée d’onde (capture) est MIXERLINE_TARGETTYPE_WAVEIN.

Pour plus d’informations, consultez la structure MIXERLINE dans la documentation du Kit de développement logiciel (SDK).

Les deux tableaux suivants montrent comment WDMAud traduit les lignes de mixage sources d’entrée (KSPIN_DATAFLOW_IN).

Le premier tableau montre comment les GUID de la catégorie de broche KS d’entrée (valeurs PCPIN_DESCRIPTOR) sont mappés aux types de cibles MIXERLINE associés.

GUID de catégorie de broche KS Broche de pont ? Type de cible MIXERLINE
KSNODETYPE_MICROPHONE - MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_DESKTOP_MICROPHONE - MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_LEGACY_AUDIO_CONNECTOR - MIXERLINE_TARGETTYPE_WAVEOUT
KSCATEGORY_AUDIO - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_CD_PLAYER - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_SYNTHESIZER - MIXERLINE_TARGETTYPE_MIDIOUT
KSNODETYPE_LINE_CONNECTOR - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_TELEPHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_PHONE_LINE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_DOWN_LINE_PHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_ANALOG_CONNECTOR Yes MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_ANALOG_CONNECTOR No MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPDIF_INTERFACE Yes MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_SPDIF_INTERFACE No MIXERLINE_TARGETTYPE_WAVEOUT

Le tableau suivant montre comment les GUID de catégorie de broche KS d’entrée sont mappés aux types de composants MIXERLINE associés.

PCPIN_DESCRIPTOR valeurs Valeurs MIXERLINE
GUID de catégorie de broche KS Type de composant

KSNODETYPE_MICROPHONE

KSNODETYPE_DESKTOP_MICROPHONE

MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE

KSNODETYPE_LEGACY_AUDIO_CONNECTOR

KSCATEGORY_AUDIO

KSNODETYPE_SPEAKER

MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT

KSNODETYPE_CD_PLAYER

MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC

KSNODETYPE_SYNTHESIZER

MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER

KSNODETYPE_LINE_CONNECTOR

MIXERLINE_COMPONENTTYPE_SRC_LINE

KSNODETYPE_TELEPHONE

KSNODETYPE_PHONE_LINE

KSNODETYPE_DOWN_LINE_PHONE

MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_SRC_ANALOG

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_SRC_ANALOG

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_SRC_DIGITAL

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_SRC_DIGITAL

Dans les tableaux précédents, la colonne de gauche spécifie le GUID de catégorie de broche à partir de la structure PCPIN_DESCRIPTOR de la broche, et les colonnes de droite spécifient le type cible et le type de composant correspondants pour la structure MIXERLINE.

Les entrées de la colonne intitulée « Broche de pont ? » indiquent si la broche est une broche de pont. Un « Oui » signifie que le type de communication de broche est KSPIN_COMMUNICATION_BRIDGE. Un « Non » signifie que le type de communication de broche est une valeur KSPIN_COMMUNICATION_Xxx autre que KSPIN_COMMUNICATION_BRIDGE. Si WDMAud ignore le type de communication de broche lors de la traduction des paramètres de broche en paramètres de ligne de mixage, l’entrée « Broche de pont ? » est un tiret (-).

Pour toutes les catégories de broches qui n’apparaissent pas dans les tableaux précédents, WDMAud convertit les broches d’entrée en lignes de mélangeur sources avec des types cibles d’MIXERLINE_TARGETTYPE_UNDEFINED et de composants de MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED.

Les tableaux suivants montrent comment WDMAud traduit les broches de sortie (KSPIN_DATAFLOW_OUT) en lignes de mélangeur de destination. Les en-têtes de colonne ont les mêmes significations que dans le tableau précédent. Le premier tableau montre comment les GUID de catégorie de broche KS de sortie sont mappés aux types cibles MIXERLINE associés.

GUID de catégorie de broche KS Broche de pont ? Type cible MIXERLINE
KSNODETYPE_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_DESKTOP_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_ROOM_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_COMMUNICATION_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSCATEGORY_AUDIO - MIXERLINE_TARGETTYPE_WAVEIN
PINNAME_CAPTURE - MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_HEADPHONES - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_TELEPHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_PHONE_LINE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_DOWN_LINE_PHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_ANALOG_CONNECTOR Yes MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_ANALOG_CONNECTOR No MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_SPDIF_INTERFACE Yes MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPDIF_INTERFACE No MIXERLINE_TARGETTYPE_WAVEIN

Le tableau suivant montre comment les GUID de catégorie de broche KS de sortie sont mappés aux types de composants MIXERLINE associés.

PCPIN_DESCRIPTOR valeurs Valeurs MIXERLINE
GUID de catégorie de broche KS Type de composant

KSNODETYPE_SPEAKER

KSNODETYPE_DESKTOP_SPEAKER

KSNODETYPE_ROOM_SPEAKER

KSNODETYPE_COMMUNICATION_SPEAKER

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

KSCATEGORY_AUDIO

PINNAME_CAPTURE

MIXERLINE_COMPONENTTYPE_DST_WAVEIN

KSNODETYPE_HEADPHONES

KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO

MIXERLINE_COMPONENTTYPE_DST_HEADPHONES

KSNODETYPE_TELEPHONE

KSNODETYPE_PHONE_LINE

KSNODETYPE_DOWN_LINE_PHONE

MIXERLINE_COMPONENTTYPE_DST_TELEPHONE

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_DST_WAVEIN

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_DST_WAVEIN

Pour toutes les catégories de broches qui n’apparaissent pas dans les tableaux précédents, WDMAud traduit les broches de sortie en lignes de mélangeur de destination avec les types cibles de MIXERLINE_TARGETTYPE_UNDEFINED et les types de composants de MIXERLINE_COMPONENTTYPE_DST_UNDEFINED.

Dans les tableaux précédents, la plupart des GUID de catégorie de broches KS ont des noms KSNODETYPE_Xxx . Ces noms sont définis dans les fichiers d’en-tête Ksmedia.h et Dmusprop.h. (Deux écarts par rapport à cette convention de nommage sont les GUID KSCATEGORY_AUDIO et PINNAME_CAPTURE, qui sont également définis dans Ksmedia.h.) Comme décrit dans Nœuds de topologie, les GUID KSNODETYPE_Xxx peuvent également être utilisés pour désigner des types de nœuds KS. La plupart des GUID KSNODETYPE_Xxx spécifient des catégories de broches ou des types de nœuds, mais pas les deux. L’exception est KSNODETYPE_SYNTHESIZER, qui peut spécifier une catégorie de broche ou un type de nœud, en fonction du contexte dans lequel est utilisé. Pour obtenir la liste des GUID de KSNODETYPE_Xxx représentant des catégories de broches, consultez Pin Category Property. Pour obtenir la liste des GUID KSNODETYPE_Xxx représentant les types de nœuds, consultez Nœuds de topologie audio.

KSCATEGORY_AUDIO est un autre GUID à double utilisation. Il peut être utilisé comme GUID de catégorie de broche KS ou GUID de catégorie de filtre KS, en fonction du contexte. Pendant l’installation de l’appareil, un pilote audio inscrit son interface d’appareil sous la catégorie de filtre KSCATEGORY_AUDIO. Pour plus d’informations, consultez Installation d’interfaces d’appareil pour une carte audio.

Pour une catégorie de broche de KSNODETYPE_ANALOG_CONNECTOR ou de KSNODETYPE_SPDIF_INTERFACE, WDMAud doit savoir si la broche est une broche de pont pour traduire correctement la broche en son équivalent de ligne de mélangeur. Par exemple, une broche S/PDIF (avec la catégorie de broche KSNODETYPE_SPDIF_INTERFACE) se traduit par l’un des quatre types de lignes de mélangeur illustrés dans la figure suivante. La traduction dépend à la fois de la direction des données de la broche (in ou out) et du fait qu’il s’agit d’une broche de pont (oui ou non), qui donnent ensemble quatre types possibles de ligne de mélangeur (in+yes, in+no, out+yes et out+no). Les quatre types de lignes de mélangeur indiqués dans la figure représentent les paires inférieures d’entrées des tableaux précédents.

Diagramme illustrant la traduction des broches S/PDIF en lignes de mélangeur.

Notez que deux flux sur le côté droit de l’appareil audio dans la figure sont au format S/PDIF, et les deux flux à gauche sont au format wave. Le périphérique audio effectue la conversion entre les deux formats numériques.

L’application SndVol32 est un client de l’API mixer. L’API mixer convertit chaque broche trouvée dans la topologie en une ligne de mélangeur source ou de destination, mais la ligne peut ne pas s’afficher dans SndVol32, qui reconnaît uniquement un sous-ensemble des types de composants de ligne de mélange que le fichier d’en-tête Mmsystem.h définit pour l’API de mélangeur. Pour plus d’informations sur SndVol32, consultez SysTray et SndVol32.