Freigeben über


Topologienadeln

Der WDMAud-Systemtreiber übersetzt Topologiepins für KS-Filter in die Quell- und Zielmixerlinien, die die Mixer-API für Anwendungen verfügbar macht. Eingabepins (Senke) werden zu Quellmixerlinien, und Ausgabepins (Quell)Pins werden zu Zielmixerlinien.

Wie in Pin Factorys beschrieben, stellt ein Miniporttreiber ein Array von Stiftdeskriptoren bereit, von denen jede eine Struktur vom Typ PCPIN_DESCRIPTOR ist, die eine Pinfactory beschreibt, die zu einem Filter gehört. Jeder Pindeskriptor enthält die folgenden Informationen:

  • Datenflussrichtungsspezifizierer

    Gibt an, ob der Datenstrom den Filter über den Pin eingibt (KSPIN_DATAFLOW_IN) oder den Filter beendet (KSPIN_DATAFLOW_OUT).

  • GUID der KS-Pinkategorie

    Gibt die Pinkategorie an, zu der die Pin gehört. Auf einem Audiowiedergabegerät kann beispielsweise ein Pin einen wellenformatierten digitalen Audiostream akzeptieren, und ein anderer Pin generiert möglicherweise ein analoges Audiosignal zum Antreiben eines Lautsprechers. Der Miniporttreiber identifiziert diese beiden Pintypen als unterschiedliche Pinkategorien.

  • Kommunikationstypspezifizierer

    Gibt den Typ der IRP-Kommunikation an, den der Pin unterstützt. Ein Pin, der die IRP-Kommunikation unterstützt, kann eine IRP-Senke (KSPIN_COMMUNICATION_SINK), eine IRP-Quelle (KSPIN_COMMUNICATION_SOURCE) oder beides (KSPIN_COMMUNICATION_BOTH) sein. Ein Pin, der keine IRP-Kommunikation unterstützt, kann sich entweder in einem KS-Filtergraphen (KSPIN_COMMUNICATION_NONE) befinden oder ein Bridge-Pin am Endpunkt eines Graphen sein (KSPIN_COMMUNICATION_BRIDGE).

Weitere Informationen zu Bridge-Pins finden Sie unter Audiofiltergraphen.

WDMAud konvertiert die Informationen aus dem Pin-Deskriptor des Miniporttreibers in einen Mixer-Liniendeskriptor, bei dem es sich um eine Struktur vom Typ MIXERLINE handelt, die die folgenden Informationen enthält:

  • Mixer-Line-Komponententyp

    Gibt an, ob die Mischerlinie eine Quell- oder Eine Zielzeile ist, und gibt auch die allgemeine Funktion der Mischerlinie an. Beispielsweise ist der Komponententyp für eine Mixerleitung, die ein analoges Signal transportiert, das von einem Wellenausgabedatenstrom (Renderingdatenstrom) generiert wird, um einen Kopfhörersatz zu steuern, MIXERLINE_COMPONENTTYPE_DST_HEADPHONES.

  • Mixer-Line-Zieltyp

    Gibt den Typ des Datenstroms an, den die Mischerlinie transportiert. Beispielsweise ist der Zieltyp für einen Wellenausgabedatenstrom (Renderingdatenstrom) MIXERLINE_TARGETTYPE_WAVEOUT, und der Zieltyp für einen Welleneingabedatenstrom (Capture) ist MIXERLINE_TARGETTYPE_WAVEIN.

Weitere Informationen finden Sie in der SDK-Dokumentation in der MIXERLINE-Struktur .

Die folgenden beiden Tabellen zeigen, wie WDMAud Eingaben (KSPIN_DATAFLOW_IN) Quellmischerlinien übersetzt.

In der ersten Tabelle wird gezeigt, wie die GUIDs der KS-Pinkategorie (PCPIN_DESCRIPTOR) den zugeordneten MIXERLINE-Zieltypen zugeordnet werden.

GUID der KS-Pinkategorie Bridge-Pin? MIXERLINE-Zieltyp
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

In der folgenden Tabelle wird gezeigt, wie die GUIDs der KS-Pinkategorie den zugehörigen MIXERLINE-Komponententypen zugeordnet werden.

PCPIN_DESCRIPTOR Werte MIXERLINE-Werte
GUID der KS-Pinkategorie Komponententyp

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

In den obigen Tabellen gibt die linke Spalte die PIN-Kategorie-GUID aus der PCPIN_DESCRIPTOR Struktur des Pins an, und die rechten Spalten geben den entsprechenden Zieltyp und Komponententyp für die MIXERLINE-Struktur an.

Die Einträge in der Spalte mit der Bezeichnung "Bridge Pin?" geben an, ob es sich bei der Pin um einen Bridge-Pin handelt. Ein "Ja" bedeutet, dass der Pinkommunikationstyp KSPIN_COMMUNICATION_BRIDGE ist. Ein "Nein" bedeutet, dass der Pinkommunikationstyp ein anderer KSPIN_COMMUNICATION_Xxx-Wert als KSPIN_COMMUNICATION_BRIDGE ist. Wenn WDMAud den Pinkommunikationstyp beim Übersetzen der Pinparameter in mixer-line-Parameter ignoriert, ist der Eintrag "Bridge Pin?" ein Bindestrich (-).

Für alle Pinkategorien, die in den vorherigen Tabellen nicht angezeigt werden, übersetzt WDMAud die Eingabestifte in Quellmixerlinien mit Zieltypen von MIXERLINE_TARGETTYPE_UNDEFINED und Komponententypen von MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED.

Die folgenden Tabellen zeigen, wie WDMAud Ausgabepins (KSPIN_DATAFLOW_OUT) in Zielmixerzeilen übersetzt. Die Spaltenüberschriften haben die gleiche Bedeutung wie in der vorherigen Tabelle. Die erste Tabelle zeigt, wie die GUIDs der KS-Pinkategorie für ausgabepin den zugeordneten MIXERLINE-Zieltypen zugeordnet werden.

GUID der KS-Pinkategorie Bridge-Pin? MIXERLINE-Zieltyp
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

Die folgende Tabelle zeigt, wie die GUIDs der KS-Pinkategorie für ausgabepin den zugeordneten MIXERLINE-Komponententypen zugeordnet werden.

PCPIN_DESCRIPTOR Werte MIXERLINE-Werte
GUID der KS-Pinkategorie Komponententyp

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

Für alle Pinkategorien, die in den vorherigen Tabellen nicht angezeigt werden, übersetzt WDMAud die Ausgabepins in Zielmixerlinien mit Zieltypen von MIXERLINE_TARGETTYPE_UNDEFINED und Komponententypen von MIXERLINE_COMPONENTTYPE_DST_UNDEFINED.

In den vorherigen Tabellen weisen die meisten KS-Pinkategorie-GUIDs KSNODETYPE_Xxx-Namen auf. Diese Namen werden in den Headerdateien Ksmedia.h und Dmusprop.h definiert. (Zwei Abweichungen von dieser Benennungskonvention sind GUIDs KSCATEGORY_AUDIO und PINNAME_CAPTURE, die ebenfalls in Ksmedia.h definiert sind.) Wie unter Topologieknoten beschrieben, können KSNODETYPE_Xxx-GUIDs auch zum Festlegen von KS-Knotentypen verwendet werden. Die meisten KSNODETYPE_Xxx-GUIDs geben entweder Pinkategorien oder Knotentypen an, aber nicht beide. Die Ausnahme ist KSNODETYPE_SYNTHESIZER, die abhängig vom Kontext, in dem verwendet wird, entweder eine Pinkategorie oder einen Knotentyp angeben kann. Eine Liste der KSNODETYPE_Xxx-GUIDs , die Pinkategorien darstellen, finden Sie unter Pin Category Property. Eine Liste der KSNODETYPE_Xxx-GUIDs , die Knotentypen darstellen, finden Sie unter Audiotopologieknoten.

KSCATEGORY_AUDIO ist eine weitere GUID mit doppeltem Einsatz. Sie kann je nach Kontext entweder als GUID der KS-Pinkategorie oder als KS-Filterkategorie-GUID verwendet werden. Während der Geräteinstallation registriert ein Audiotreiber seine Geräteschnittstelle unter der Filterkategorie KSCATEGORY_AUDIO. Weitere Informationen finden Sie unter Installieren von Geräteschnittstellen für einen Audioadapter.

Für eine Pinkategorie mit KSNODETYPE_ANALOG_CONNECTOR oder KSNODETYPE_SPDIF_INTERFACE muss WDMAud wissen, ob es sich bei dem Stift um einen Brückenstift handelt, um den Stift korrekt in die Äquivalente der Mixerlinie zu übersetzen. Beispielsweise wird ein S/PDIF-Pin (mit pin category KSNODETYPE_SPDIF_INTERFACE) in einen der vier Mischlinientypen übersetzt, die in der folgenden Abbildung dargestellt sind. Die Übersetzung hängt sowohl von der Datenrichtung des Pins (ein- oder ausgehend) als auch davon ab, ob es sich um einen Brückenstift (ja oder nein) handelt, der zusammen vier mögliche Arten von Mischerlinie ergibt (in+ja, in+nein, out+ja und out+nein). Die in der Abbildung dargestellten vier Mischerlinientypen stellen die unteren Paare von Einträgen aus den vorherigen Tabellen dar.

Diagramm zur Veranschaulichung der Übersetzung von S/PDIF-Pins in Mischlinien.

Beachten Sie, dass zwei Streams auf der rechten Seite des Audiogeräts in der Abbildung im S/PDIF-Format und die beiden Streams auf der linken Seite im Wellenformat vorliegen. Das Audiogerät führt die Konvertierung zwischen den beiden digitalen Formaten durch.

Die SndVol32-Anwendung ist ein Client der Mixer-API. Die Mixer-API konvertiert jeden in der Topologie gefundenen Pin in eine Quell- oder Zielmixerzeile, aber die Zeile wird möglicherweise nicht in SndVol32 angezeigt, das nur eine Teilmenge der Mixer-Line-Komponententypen erkennt, die die Headerdatei Mmsystem.h für die Mixer-API definiert. Weitere Informationen zu SndVol32 finden Sie unter SysTray und SndVol32.