Win32 API 日本語リファレンス
ホームMedia.DirectShow › IAMCrossbar

IAMCrossbar

COM
IIDc6e13380-30ac-11d0-a18c-00a0c9118956継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAMCrossbar インターフェイスは、アナログまたはデジタルのソースからビデオキャプチャフィルターへ信号を経路付け(ルーティング)します。このインターフェイスは Analog Video Crossbar Filter によって実装されます。

メソッド 5

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT get_PinCounts(INT* OutputPinCount, INT* InputPinCount)

get_PinCounts メソッドは、クロスバーフィルター上の入力ピンと出力ピンの数を取得します。

OutputPinCountINT*out出力ピンの数を受け取る変数へのポインター。
InputPinCountINT*out入力ピンの数を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値コード 説明
S_OK
成功しました。
E_POINTER
引数が NULL ポインターです。

解説(Remarks)

その他の IAMCrossbar メソッドは、ピンをインデックス番号で指定するパラメーターを受け取ります。これらのメソッドでは、出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。get_PinCounts メソッドを使用して、それぞれの上限を判別してください。

vtbl 4 HRESULT CanRoute(INT OutputPinIndex, INT InputPinIndex)

CanRoute メソッドは、指定した入力ピンを指定した出力ピンへ経路付けできるかどうかを問い合わせます。

OutputPinIndexINTin出力ピンのインデックスを指定します。
InputPinIndexINTin入力ピンのインデックスを指定します。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値コード 説明
S_OK
これら 2 つのピンは経路付けできます。
S_FALSE
これら 2 つのピンは経路付けできません。

解説(Remarks)

ピンを経路付けするには、IAMCrossbar::Route メソッドを呼び出します。出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。出力ピンと入力ピンの数を判別するには、IAMCrossbar::get_PinCounts メソッドを呼び出します。

vtbl 5 HRESULT Route(INT OutputPinIndex, INT InputPinIndex)

Route メソッドは、入力ピンを出力ピンへ経路付けします。

OutputPinIndexINTin出力ピンのインデックスを指定します。
InputPinIndexINTin入力ピンのインデックスを指定します。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値コード 説明
S_FALSE
これら 2 つのピンは経路付けできません。
S_OK
成功しました。

解説(Remarks)

2 つのピンを経路付けすると、出力ピンはその入力ピンからのデータを配信するようになります。1 つの出力ピンに対して経路付けできる入力ピンは、同時には 1 つだけです。

出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。出力ピンと入力ピンの数を判別するには、IAMCrossbar::get_PinCounts メソッドを呼び出します。

vtbl 6 HRESULT get_IsRoutedTo(INT OutputPinIndex, INT* InputPinIndex)

get_IsRoutedTo メソッドは、指定した出力ピンに現在経路付けされている入力ピンを取得します。

OutputPinIndexINTin出力ピンのインデックスを指定します。
InputPinIndexINT*out入力ピンのインデックスを受け取る変数へのポインター。この出力ピンに経路付けされている入力ピンがない場合は -1 を受け取ります。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値コード 説明
S_FALSE
この出力ピンに経路付けされている入力ピンはありません。
S_OK
成功しました。
E_POINTER
引数が NULL ポインターです。

解説(Remarks)

出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。出力ピンと入力ピンの数を判別するには、IAMCrossbar::get_PinCounts メソッドを呼び出します。

vtbl 7 HRESULT get_CrossbarPinInfo(BOOL IsInputPin, INT PinIndex, INT* PinIndexRelated, INT* PhysicalType)

get_CrossbarPinInfo メソッドは、指定したピンに関する情報を取得します。

IsInputPinBOOLin

ピンの方向を指定します。次のいずれかの値を使用します。

意味
TRUE
入力ピン
FALSE
出力ピン
PinIndexINTinピンのインデックスを指定します。
PinIndexRelatedINT*out関連ピンのインデックスを受け取る変数へのポインター。このピンに関連するピンがない場合は –1 を受け取ります。関連ピン とは、同じフィルター上にある同じ方向のピンで、通常は同じ物理ジャックまたはコネクターを表します。たとえば、ビデオチューナーとオーディオチューナーは関連ピンになり得ます。通常、2 つのピンが関連している場合は、それらをまとめて経路付けするべきです。
PhysicalTypeINT*outPhysicalConnectorType 列挙型のメンバーを受け取る変数へのポインターで、ピンの物理タイプを示します。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値コード 説明
S_FALSE
物理タイプが不明です。
S_OK
成功しました。
E_POINTER
引数が NULL ポインターです。

解説(Remarks)

出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。出力ピンと入力ピンの数を判別するには、IAMCrossbar::get_PinCounts メソッドを呼び出します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IAMCrossbar "{C6E13380-30AC-11D0-A18C-00A0C9118956}"
#usecom global IAMCrossbar IID_IAMCrossbar "{}"
#comfunc global IAMCrossbar_get_PinCounts        3 var,var
#comfunc global IAMCrossbar_CanRoute             4 int,int
#comfunc global IAMCrossbar_Route                5 int,int
#comfunc global IAMCrossbar_get_IsRoutedTo       6 int,var
#comfunc global IAMCrossbar_get_CrossbarPinInfo  7 int,int,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。