トポロジのピン
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 つのミキサー ライン タイプは、前の表のエントリの下部のペアを表しています。
図のオーディオ デバイスの右側にある 2 つのストリームは S/PDIF 形式であり、左側の 2 つのストリームは波形式であることに注意してください。 オーディオ デバイスは、2 つのデジタル形式間の変換を実行します。
SndVol32 アプリケーションは、ミキサー API のクライアントです。 ミキサー API は、トポロジで見つかった各ピンをソースまたは宛先ミキサー ラインに変換しますが、ヘッダー ファイル Mmsystem.h がミキサー API 用に定義するミキサー ライン コンポーネントの種類のサブセットのみを認識する SndVol32 に行が表示されない場合があります。 SndVol32 の詳細については、SysTray と SndVol32を参照してください。