IAMVideoControl
COM公式ドキュメント
IAMVideoControl インターフェイスは、利用可能なフレームレートの列挙や画像の向きなど、特定のビデオキャプチャ操作を制御します。
解説(Remarks)
Windows Driver Model (WDM) デバイスの場合、WDM ドライバーが PROPSETID_VIDCAP_VIDEOCONTROL プロパティセットをサポートしていれば、WDM Video Capture Filter がこのインターフェイスを自動的に公開します。詳細については、Windows Driver Kit (WDK) のドキュメントを参照してください。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetCaps メソッドは、基盤となるハードウェアの機能を取得します。
| pPin | IPin* | in | 機能を照会する対象のピンへのポインター。 |
| pCapsFlags | INT* | out | VideoControlFlags 列挙体のフラグの組み合わせを表す値へのポインター。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
利用可能な機能には、次のうち 1 つ以上が含まれます。すなわち、画像の水平方向の反転、画像の垂直方向の反転、外部トリガーの有効化、外部トリガーのシミュレートです。
SetMode メソッドは、ビデオ制御の動作モードを設定します。
| pPin | IPin* | in | ビデオ制御モードを設定する対象のピンへのポインター。 |
| Mode | INT | in | ビデオ制御モードを設定するために、VideoControlFlags 列挙体のフラグの組み合わせを指定する値。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
利用可能な動作モードには、次のうち 1 つ以上が含まれます。すなわち、画像の水平方向の反転、画像の垂直方向の反転、外部トリガーの有効化、外部トリガーのシミュレートです。
GetMode メソッドは、ビデオ制御の動作モードを取得します。
| pPin | IPin* | in | ビデオ制御モードを取得する対象のピンへのポインター。 |
| Mode | INT* | out | ビデオ制御モードを指定する、VideoControlFlags 列挙体のフラグの組み合わせを表す値へのポインター。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
利用可能な動作モードには、次のうち 1 つ以上が含まれます。すなわち、画像の水平方向の反転、画像の垂直方向の反転、外部トリガーの有効化、外部トリガーのシミュレートです。
GetCurrentActualFrameRate メソッドは、実際のフレームレートを 100 ナノ秒単位のフレーム持続時間として取得します。
| pPin | IPin* | in | フレームレートを取得する対象のピンへのポインター。 |
| ActualFrameRate | LONGLONG* | out | 100 ナノ秒単位のフレーム持続時間で表したフレームレートへのポインター。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
GetMaxAvailableFrameRate メソッドは、USB や IEEE 1394 など、帯域幅の利用可能性によって最大フレームレートが制限される場合がある接続について、バス帯域幅の使用状況に基づいて現在利用可能な最大フレームレートを取得します。
| pPin | IPin* | in | 最大フレームレートを取得する対象のピンへのポインター。 |
| iIndex | INT | in | 最大フレームレートを照会するフォーマットのインデックス。このインデックスは、IAMStreamConfig::GetStreamCaps によってフォーマットが列挙される順序に対応します。値は、0 から、IAMStreamConfig::GetNumberOfCapabilities によって返される、サポートされる VIDEO_STREAM_CONFIG_CAPS 構造体の数から 1 を引いた値までの範囲でなければなりません。 |
| Dimensions | SIZE | in | フレーム画像のサイズ (幅と高さ)。ピクセル単位です。 |
| MaxAvailableFrameRate | LONGLONG* | out | 利用可能な最大フレームレートへのポインター。フレームレートは 100 ナノ秒単位のフレーム持続時間として表されます。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
GetFrameRateList メソッドは、利用可能なフレームレートの一覧を取得します。
| pPin | IPin* | in | フレームレートの一覧を照会する対象のピンへのポインター。 |
| iIndex | INT | in | フレームレートを照会するフォーマットのインデックス。このインデックスは、IAMStreamConfig::GetNumberOfCapabilities によって返される VIDEO_STREAM_CONFIG_CAPS 構造体が列挙される順序に対応し、その数から 1 を引いた値までの範囲となります。 |
| Dimensions | SIZE | in | フレーム画像のサイズ (幅と高さ)。ピクセル単位です。 |
| ListSize | INT* | out | フレームレート一覧の要素数へのポインター。 |
| FrameRates | LONGLONG** | out | 100 ナノ秒単位のフレームレートの配列へのポインターのアドレス。ListSize のみが必要な場合は NULL にできます。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
呼び出し元は、CoTaskMemFree を呼び出してメモリを解放する責任があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAMVideoControl "{6A2E0670-28E4-11D0-A18C-00A0C9118956}" #usecom global IAMVideoControl IID_IAMVideoControl "{}" #comfunc global IAMVideoControl_GetCaps 3 sptr,var #comfunc global IAMVideoControl_SetMode 4 sptr,int #comfunc global IAMVideoControl_GetMode 5 sptr,var #comfunc global IAMVideoControl_GetCurrentActualFrameRate 6 sptr,var #comfunc global IAMVideoControl_GetMaxAvailableFrameRate 7 sptr,int,int,var #comfunc global IAMVideoControl_GetFrameRateList 8 sptr,int,int,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IAMVideoControl "{6A2E0670-28E4-11D0-A18C-00A0C9118956}" #usecom global IAMVideoControl IID_IAMVideoControl "{}" #comfunc global IAMVideoControl_GetCaps 3 sptr,sptr #comfunc global IAMVideoControl_SetMode 4 sptr,int #comfunc global IAMVideoControl_GetMode 5 sptr,sptr #comfunc global IAMVideoControl_GetCurrentActualFrameRate 6 sptr,sptr #comfunc global IAMVideoControl_GetMaxAvailableFrameRate 7 sptr,int,int,sptr #comfunc global IAMVideoControl_GetFrameRateList 8 sptr,int,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。