É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.
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.