IMFCameraControlDefaultsCollection
COM公式ドキュメント
カメラコントロールのコレクションを表します。
解説(Remarks)
IMFCameraControlDefaults は、コレクション内のコントロールの既定のコントロール値を指定するために使用します。IMFCameraConfigurationManager を使用すると、コレクションを既定のコントロール値のセットとして保存でき、ユーザーごとに異なる既定のコントロール値のセットを提供するといったシナリオを実現できます。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
コントロール既定値コレクションに現在含まれているコントロールの数を取得します。
戻り値
コレクション内のコントロールの数を示す ULONG。
指定した 0 から始まるインデックスを使用して、コレクションからコントロールを取得します。
| index | DWORD | in | 取得するコントロールのインデックス。 |
| configuration | IMFCameraControlDefaults** | out | 取得したコントロールを表す IMFCameraControlDefaults インスタンスへのポインターを受け取ります。 |
戻り値
HRESULT 値。次の値を含みます。
| 値 | 説明 |
|---|---|
| S_OK | 成功。 |
| MF_E_INVALIDINDEX | インデックスが許容範囲外でした。 |
解説(Remarks)
指定するインデックスは、GetControlCount が返す値より小さくする必要があります。
新しい拡張カメラコントロールをカメラコントロールコレクションに追加します。
| configType | MF_CAMERA_CONTROL_CONFIGURATION_TYPE | in | コントロール値をストリーミング開始前に設定する必要があるか、ストリーミング開始後に設定する必要があるかを指定する MF_CAMERA_CONTROL_CONFIGURATION_TYPE の値。 |
| constrolId | DWORD | in | コレクションに追加するコントロールの ID。この値は、KSPROPERTYSETID_ExtendedCameraControl プロパティセット内の ID である必要があります。 |
| streamId | DWORD | in | コントロールに関連付けられたストリームの ID。このパラメーターはピンレベルのコントロールでのみ使用されます。それ以外の場合、この値は無視されます。 |
| dataSize | DWORD | in | コントロールのデータペイロードのサイズ(バイト単位)。 |
| defaults | IMFCameraControlDefaults** | out | 追加されたコントロールを表す IMFCameraControlDefaults インスタンスへのポインターを受け取ります。 |
戻り値
HRESULT。次の値を含みます。
| 値 | 説明 |
|---|---|
| S_OK | 成功。 |
| MF_E_INVALIDREQUEST | 指定されたコントロール ID が KSPROPERTYSETID_ExtendedCameraControl プロパティセットに含まれていません。 |
解説(Remarks)
データペイロードのサイズはコントロールによって異なる場合があります。dataSize の値は、コントロールが必要なバッファーを確保できるよう、コントロールのペイロードスキーマに対して有効である必要があります。
新しいカスタムカメラコントロールをカメラコントロールコレクションに追加します。
| configType | MF_CAMERA_CONTROL_CONFIGURATION_TYPE | in | コントロール値をストリーミング開始前に設定する必要があるか、ストリーミング開始後に設定する必要があるかを指定する MF_CAMERA_CONTROL_CONFIGURATION_TYPE の値。 |
| controlSet | GUID* | in | コントロールが属するコントロールセットを指定する GUID。controlSet が KSPROPERTYSETID_ExtendedCameraControl の場合は、専用の GetOrAddExtendedControl 関数を使用してください。 |
| constrolId | DWORD | in | コレクションに追加するコントロールの ID。 |
| controlSize | DWORD | in | コントロールのサイズ(バイト単位)。この値は KSPROPERTY のサイズ以上である必要があります。 |
| dataSize | DWORD | in | コントロールのデータペイロードのサイズ(バイト単位)。 |
| defaults | IMFCameraControlDefaults** | out | 追加されたコントロールを表す IMFCameraControlDefaults インスタンスへのポインターを受け取ります。 |
戻り値
HRESULT。次の値を含みます。
| 値 | 説明 |
|---|---|
| S_OK | 成功。 |
解説(Remarks)
カスタムコントロールの場合、controlSet と controlId は、カメラドライバーベンダーが公開するカスタムコントロール DDI に基づきます。同様に、controlSize と dataSize もベンダーが公開する DDI に基づきます。
指定されたコントロールセットと ID を持つコントロールをカメラコントロールコレクションから削除します。
| controlSet | GUID* | in | コントロールが属するコントロールセットを指定する GUID。 |
| constrolId | DWORD | in | コレクションから削除するコントロールの ID。 |
戻り値
成功時は S_OK。
カメラコントロールコレクションからすべてのコントロールを削除します。
戻り値
成功時は S_OK。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFCameraControlDefaultsCollection "{92D43D0F-54A8-4BAE-96DA-356D259A5C26}" #usecom global IMFCameraControlDefaultsCollection IID_IMFCameraControlDefaultsCollection "{}" #comfunc global IMFCameraControlDefaultsCollection_GetControlCount 33 #comfunc global IMFCameraControlDefaultsCollection_GetControl 34 int,sptr #comfunc global IMFCameraControlDefaultsCollection_GetOrAddExtendedControl 35 int,int,int,int,sptr #comfunc global IMFCameraControlDefaultsCollection_GetOrAddControl 36 int,var,int,int,int,sptr #comfunc global IMFCameraControlDefaultsCollection_RemoveControl 37 var,int #comfunc global IMFCameraControlDefaultsCollection_RemoveAllControls 38 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFCameraControlDefaultsCollection "{92D43D0F-54A8-4BAE-96DA-356D259A5C26}" #usecom global IMFCameraControlDefaultsCollection IID_IMFCameraControlDefaultsCollection "{}" #comfunc global IMFCameraControlDefaultsCollection_GetControlCount 33 #comfunc global IMFCameraControlDefaultsCollection_GetControl 34 int,sptr #comfunc global IMFCameraControlDefaultsCollection_GetOrAddExtendedControl 35 int,int,int,int,sptr #comfunc global IMFCameraControlDefaultsCollection_GetOrAddControl 36 int,sptr,int,int,int,sptr #comfunc global IMFCameraControlDefaultsCollection_RemoveControl 37 sptr,int #comfunc global IMFCameraControlDefaultsCollection_RemoveAllControls 38 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。