IAMCrossbar
COM公式ドキュメント
IAMCrossbar インターフェイスは、アナログまたはデジタルのソースからビデオキャプチャフィルターへ信号を経路付け(ルーティング)します。このインターフェイスは Analog Video Crossbar Filter によって実装されます。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
get_PinCounts メソッドは、クロスバーフィルター上の入力ピンと出力ピンの数を取得します。
| OutputPinCount | INT* | out | 出力ピンの数を受け取る変数へのポインター。 |
| InputPinCount | INT* | out | 入力ピンの数を受け取る変数へのポインター。 |
戻り値
解説(Remarks)
その他の IAMCrossbar メソッドは、ピンをインデックス番号で指定するパラメーターを受け取ります。これらのメソッドでは、出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。get_PinCounts メソッドを使用して、それぞれの上限を判別してください。
CanRoute メソッドは、指定した入力ピンを指定した出力ピンへ経路付けできるかどうかを問い合わせます。
| OutputPinIndex | INT | in | 出力ピンのインデックスを指定します。 |
| InputPinIndex | INT | in | 入力ピンのインデックスを指定します。 |
戻り値
解説(Remarks)
ピンを経路付けするには、IAMCrossbar::Route メソッドを呼び出します。出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。出力ピンと入力ピンの数を判別するには、IAMCrossbar::get_PinCounts メソッドを呼び出します。
Route メソッドは、入力ピンを出力ピンへ経路付けします。
| OutputPinIndex | INT | in | 出力ピンのインデックスを指定します。 |
| InputPinIndex | INT | in | 入力ピンのインデックスを指定します。 |
戻り値
解説(Remarks)
2 つのピンを経路付けすると、出力ピンはその入力ピンからのデータを配信するようになります。1 つの出力ピンに対して経路付けできる入力ピンは、同時には 1 つだけです。
出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。出力ピンと入力ピンの数を判別するには、IAMCrossbar::get_PinCounts メソッドを呼び出します。
get_IsRoutedTo メソッドは、指定した出力ピンに現在経路付けされている入力ピンを取得します。
| OutputPinIndex | INT | in | 出力ピンのインデックスを指定します。 |
| InputPinIndex | INT* | out | 入力ピンのインデックスを受け取る変数へのポインター。この出力ピンに経路付けされている入力ピンがない場合は -1 を受け取ります。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値コード | 説明 |
|---|---|
| この出力ピンに経路付けされている入力ピンはありません。 | |
| 成功しました。 | |
| 引数が NULL ポインターです。 |
解説(Remarks)
出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。出力ピンと入力ピンの数を判別するには、IAMCrossbar::get_PinCounts メソッドを呼び出します。
get_CrossbarPinInfo メソッドは、指定したピンに関する情報を取得します。
| IsInputPin | BOOL | in | ピンの方向を指定します。次のいずれかの値を使用します。
| ||||||
| PinIndex | INT | in | ピンのインデックスを指定します。 | ||||||
| PinIndexRelated | INT* | out | 関連ピンのインデックスを受け取る変数へのポインター。このピンに関連するピンがない場合は –1 を受け取ります。関連ピン とは、同じフィルター上にある同じ方向のピンで、通常は同じ物理ジャックまたはコネクターを表します。たとえば、ビデオチューナーとオーディオチューナーは関連ピンになり得ます。通常、2 つのピンが関連している場合は、それらをまとめて経路付けするべきです。 | ||||||
| PhysicalType | INT* | out | PhysicalConnectorType 列挙型のメンバーを受け取る変数へのポインターで、ピンの物理タイプを示します。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値コード | 説明 |
|---|---|
| 物理タイプが不明です。 | |
| 成功しました。 | |
| 引数が NULL ポインターです。 |
解説(Remarks)
出力ピンと入力ピンはいずれも 0 から始まるインデックスが付けられます。出力ピンと入力ピンの数を判別するには、IAMCrossbar::get_PinCounts メソッドを呼び出します。
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 方式にも切替可。#define global IID_IAMCrossbar "{C6E13380-30AC-11D0-A18C-00A0C9118956}" #usecom global IAMCrossbar IID_IAMCrossbar "{}" #comfunc global IAMCrossbar_get_PinCounts 3 sptr,sptr #comfunc global IAMCrossbar_CanRoute 4 int,int #comfunc global IAMCrossbar_Route 5 int,int #comfunc global IAMCrossbar_get_IsRoutedTo 6 int,sptr #comfunc global IAMCrossbar_get_CrossbarPinInfo 7 int,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。