トポロジのピン

WDMAud システム ドライバー は、KS フィルターのトポロジ ピンを、ミキサー API がアプリケーションに公開するソースと宛先のミキサー ラインに変換します。 入力 (シンク) ピンはソース ミキサー ラインになり、出力 (ソース) ピンはデスティネーション ミキサー ラインになります。

ピン ファクトリで説明されているように、ミニポート ドライバーはピン記述子の配列を提供し、それぞれがフィルターに属するピン ファクトリを記述する型 PCPIN_DESCRIPTOR の構造体です。 各ピン記述子には、次の情報が含まれています:

  • データフロー方向指定子

    データ ストリームがピンを介してフィルターに入る (KSPIN_DATAFLOW_IN) か、フィルターから出る (KSPIN_DATAFLOW_OUT) かを示します。

  • KS ピン カテゴリ GUID

    ピンが属するピン カテゴリを示します。 たとえば、オーディオ再生デバイスでは、1 つのピンが 波形形式のデジタル オーディオ ストリームを受け入れ、別のピンがスピーカーを駆動するためのアナログ オーディオ信号を生成する場合があります。 ミニポート ドライバーは、これら二種類のピンを個別のピン カテゴリに属するものとして識別します。

  • 通信タイプ指定子

    ピンがサポートする IRP 通信の種類を示します。 IRP 通信をサポートするピンは、IRP シンク (KSPIN_COMMUNICATION_SINK)、IRP ソース (KSPIN_COMMUNICATION_SOURCE)、またはその両方 (KSPIN_COMMUNICATION_BOTH) にすることができます。 IRP 通信をサポートしていないピンは、KS フィルター グラフ (KSPIN_COMMUNICATION_NONE) 内にあるか、グラフのエンドポイント (KSPIN_COMMUNICATION_BRIDGE) にあるブリッジ ピンにすることができます。

ブリッジ ピンの詳細については、 オーディオ フィルター グラフ を参照してください。

WDMAud は、ミニポート ドライバーの暗証番号 (pin) 記述子からの情報を、次の情報を含む MIXERLINE 型の構造体であるミキサー行記述子に変換します:

  • ミキサーラインコンポーネントタイプ

    ミキサーラインがソースラインか宛先ラインかを示し、ミキサーラインの一般的な機能も示します。 たとえば、波出力(レンダリング)ストリームから生成されたアナログ信号を転送して一連のヘッドフォンを駆動するミキサーラインのコンポーネントタイプはMIXERLINE_COMPONENTTYPE_DST_HEADPHONESです。

  • ミキサーラインターゲットタイプ

    ミキサーラインが転送するデータストリームのタイプを示します。 たとえば、ウェーブ出力 (レンダリング) ストリームのターゲットの種類は MIXERLINE_TARGETTYPE_WAVEOUT で、ウェーブ入力 (キャプチャ) ストリームのターゲットの種類は MIXERLINE_TARGETTYPE_WAVEIN です。

詳細については、SDK ドキュメントの MIXERLINE 構造体を参照してください。

次の 2 つの表は、WDMAud が入力 (KSPIN_DATAFLOW_IN) ピンのソース ミキサー ラインを変換する方法を示しています。

最初の表は、入力ピンの KS ピン カテゴリ GUID (PCPIN_DESCRIPTOR値) が、関連付けられている MIXERLINE ターゲットの種類にどのようにマップされるかを示しています。

KS ピン カテゴリ GUID ブリッジピン? 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 はい MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_ANALOG_CONNECTOR いいえ MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPDIF_INTERFACE はい MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_SPDIF_INTERFACE いいえ MIXERLINE_TARGETTYPE_WAVEOUT

次の表は、入力ピン KS ピン カテゴリ GUID が、関連付けられている MIXERLINE コンポーネントの種類にどのようにマップされるかを示しています。

PCPIN_DESCRIPTOR 値 ミキサーラインの値
KS ピン カテゴリ GUID コンポーネント タイプ

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

前の表では、左の列はピンのPCPIN_DESCRIPTOR構造のピン カテゴリ GUID を指定し、右の列は MIXERLINE 構造体に対応するターゲットの種類とコンポーネントの種類を指定します。

"ブリッジ ピン?"というラベルの付いた列のエントリは、ピンがブリッジ ピンであるかどうかを示します。 "はい"は、ピン通信タイプがKSPIN_COMMUNICATION_BRIDGEであることを意味します。 "いいえ"は、端子の通信タイプがKSPIN_COMMUNICATION_BRIDGE以外のKSPIN_COMMUNICATION_Xxx値であることを意味します。 WDMAud がピン パラメーターをミキサー ライン パラメーターに変換するときにピン通信の種類を無視する場合、"ブリッジ ピン?" エントリはダッシュ (-) になります。

前の表に表示されていないすべてのピン カテゴリについて、WDMAud は入力ピンを、ターゲット タイプが MIXERLINE_TARGETTYPE_UNDEFINED でコンポーネント タイプが MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED であるソース ミキサー ラインに変換します。

次の表は、WDMAud が出力 (KSPIN_DATAFLOW_OUT) ピンを宛先ミキサー ラインに変換する方法を示しています。 列見出しの意味は、前の表と同じです。 最初の表は、出力ピン KS ピン カテゴリ GUID が、関連付けられている MIXERLINE ターゲットの種類にどのようにマップされるかを示しています。

KS ピン カテゴリ GUID ブリッジピン? 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 はい MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_ANALOG_CONNECTOR いいえ MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_SPDIF_INTERFACE はい MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPDIF_INTERFACE いいえ MIXERLINE_TARGETTYPE_WAVEIN

次の表は、出力ピン KS ピン カテゴリ GUID が、関連付けられている MIXERLINE コンポーネントの種類にどのようにマップされるかを示しています。

PCPIN_DESCRIPTOR 値 ミキサーラインの値
KS ピン カテゴリ GUID コンポーネント タイプ

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

前の表に示されていないすべてのピン カテゴリについて、WDMAud は、ターゲットの種類が MIXERLINE_TARGETTYPE_UNDEFINED でコンポーネントの種類が MIXERLINE_COMPONENTTYPE_DST_UNDEFINED の宛先ミキサー ラインに出力ピンを変換します。

上記の表では、ほとんどの KS ピン カテゴリ GUID には KSNODETYPE_Xxx名があります。 これらの名前は、ヘッダー ファイル Ksmedia.h と Dmusprop.h で定義されています。 (この名前付け規則からの 二つの逸脱は、Ksmedia.h でも定義されている GUIDs KSCATEGORY_AUDIO と PINNAME_CAPTURE です)。トポロジ ノードで説明されているように、KSNODETYPE_Xxx GUID を使用して KS ノードの種類を指定することもできます。 ほとんどの KSNODETYPE_ Xxx GUID では、ピン カテゴリまたはノードの種類が指定されますが、両方は指定されません。 例外は KSNODETYPE_SYNTHESIZER で、使用するコンテキストに応じてピン カテゴリまたはノード タイプを指定できます。 ピン カテゴリを表すKSNODETYPE_Xxx GUID の一覧については、ピン カテゴリ プロパティを参照してください。 ノードの種類を表す KSNODETYPE_ XxxGUID の一覧については、オーディオ トポロジ ノードを参照してください。

KSCATEGORY_AUDIO は、別の二重使用 GUID です。 コンテキストに応じて、KS ピン カテゴリ GUID またはKS フィルター カテゴリ GUIDとして使用できます。 デバイスのインストール中に、オーディオ ドライバーは、フィルター カテゴリ KSCATEGORY_AUDIO の下にデバイス インターフェイスを登録します。 詳細については、オーディオ アダプターのデバイス インターフェイスのインストールを参照してください。

ピン カテゴリが KSNODETYPE_ANALOG_CONNECTOR または KSNODETYPE_SPDIF_INTERFACE の場合、WDMAud は、ピンをミキサー ラインの同等のものに正しく変換するために、ピンがブリッジ ピンであるかどうかを知る必要があります。 たとえば、S/PDIFピン(ピンカテゴリKSNODETYPE_SPDIF_INTERFACE)は、次の図に示す四つのミキサラインタイプのいずれかに変換されます。 変換は、ピンのデータ方向(入力または出力)とブリッジ・ピンかどうか(はいまたはいいえ)の両方に依存し、これらを合わせると、4つのタイプのミキサ・ライン(入力+はい、入力+いいえ、出力+はい、および出力+いいえ)が得られます。 図に示されている 4 つのミキサー ライン タイプは、前の表のエントリの下部のペアを表しています。

Diagram illustrating the translation of S/PDIF pins to mixer lines.

図のオーディオ デバイスの右側にある 2 つのストリームは S/PDIF 形式であり、左側の 2 つのストリームは波形式であることに注意してください。 オーディオ デバイスは、2 つのデジタル形式間の変換を実行します。

SndVol32 アプリケーションは、ミキサー API のクライアントです。 ミキサー API は、トポロジで見つかった各ピンをソースまたは宛先ミキサー ラインに変換しますが、ヘッダー ファイル Mmsystem.h がミキサー API 用に定義するミキサー ライン コンポーネントの種類のサブセットのみを認識する SndVol32 に行が表示されない場合があります。 SndVol32 の詳細については、SysTray と SndVol32を参照してください。