IMFCaptureSource
COM公式ドキュメント
キャプチャソースオブジェクトを制御します。キャプチャソースは、オーディオおよびビデオのキャプチャデバイスを管理します。
解説(Remarks)
キャプチャソースへのポインターを取得するには、IMFCaptureEngine::GetSource を呼び出します。
メソッド 14
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
現在のキャプチャデバイスの IMFMediaSource オブジェクトポインターを取得します。
| mfCaptureEngineDeviceType | MF_CAPTURE_ENGINE_DEVICE_TYPE | in | キャプチャエンジンのデバイスの種類。 |
| ppMediaSource | IMFMediaSource** | outoptional | デバイスを表す IMFMediaSource へのポインターを受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在のキャプチャデバイスの IMFActivate オブジェクトポインターを取得します。
| mfCaptureEngineDeviceType | MF_CAPTURE_ENGINE_DEVICE_TYPE | in | キャプチャエンジンのデバイスの種類。 |
| ppActivate | IMFActivate** | outoptional | デバイスを表す IMFActivate へのポインターを受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
基盤となる Source Reader オブジェクトへのポインターを取得します。
| rguidService | GUID* | in | サービス識別子 GUID。現在、値は IID_IMFSourceReader または GUID_NULL でなければなりません。 |
| riid | GUID* | in | 要求するインターフェイスのインターフェイス識別子 (IID)。値は IID_IMFSourceReader でなければなりません。値が IID_IMFSourceReader に設定されていない場合、呼び出しは失敗し、E_INVALIDARG を返します。 |
| ppUnknown | IUnknown** | outoptional | IUnknown インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 引数が無効です。 | |
| キャプチャソースが初期化されていません。システムにキャプチャデバイスが存在しない可能性があります。 |
キャプチャストリームにエフェクトを追加します。
| dwSourceStreamIndex | DWORD | in | キャプチャストリーム。値には次のいずれかを指定できます。
| ||||||||||
| pUnknown | IUnknown* | in | 次のいずれかへのポインター。
|
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 互換性のあるメディアタイプが見つかりませんでした。 | |
| dwSourceStreamIndex パラメーターが無効です。 |
解説(Remarks)
エフェクトは Media Foundation Transform (MFT) として実装する必要があります。pUnknown パラメーターは、MFT のインスタンス、または MFT のアクティベーションオブジェクトを指すことができます。詳細については、Activation Objects を参照してください。
エフェクトは、データがキャプチャシンクに到達する前にストリームへ適用されます。
キャプチャストリームからエフェクトを削除します。
| dwSourceStreamIndex | DWORD | in | キャプチャストリーム。値には次のいずれかを指定できます。
| ||||||||||
| pUnknown | IUnknown* | in | エフェクトオブジェクトの IUnknown インターフェイスへのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 要求が無効です。指定されたエフェクトが見つからなかった可能性があります。 | |
| dwSourceStreamIndex パラメーターが無効です。 |
解説(Remarks)
このメソッドは、IMFCaptureSource::AddEffect メソッドを使用して以前に追加されたエフェクトを削除します。
キャプチャストリームからすべてのエフェクトを削除します。
| dwSourceStreamIndex | DWORD | in | キャプチャストリーム。値には次のいずれかを指定できます。
|
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| dwSourceStreamIndex パラメーターが無効です。 |
いずれかのキャプチャストリームでサポートされている形式を取得します。
| dwSourceStreamIndex | DWORD | in | クエリするストリーム。値には次のいずれかを指定できます。
| ||||||||||
| dwMediaTypeIndex | DWORD | in | 取得するメディアタイプの 0 から始まるインデックス。 | ||||||||||
| ppMediaType | IMFMediaType** | outoptional | IMFMediaType インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| dwSourceStreamIndex パラメーターが無効です。 | |
| dwMediaTypeIndex パラメーターが範囲外です。 |
解説(Remarks)
ストリーム上で利用可能なすべての形式を列挙するには、メソッドが MF_E_NO_MORE_TYPES を返すまで、dwMediaTypeIndex をインクリメントしながらループ内でこのメソッドを呼び出します。
一部のカメラは、フレームレートの範囲をサポートしている場合があります。最小および最大のフレームレートは、メディアタイプの MF_MT_FRAME_RATE_RANGE_MIN および MF_MT_FRAME_RATE_RANGE_MAX 属性に格納されます。
キャプチャストリームの出力形式を設定します。
| dwSourceStreamIndex | DWORD | in | 設定するキャプチャストリーム。値には次のいずれかを指定できます。
| ||||||||||
| pMediaType | IMFMediaType* | in | IMFMediaType インターフェイスへのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| dwSourceStreamIndex パラメーターが無効です。 |
解説(Remarks)
このメソッドは、キャプチャデバイスにネイティブ出力タイプを設定します。デバイスは指定された形式をサポートしている必要があります。利用可能な形式の一覧を取得するには、IMFCaptureSource::GetAvailableDeviceMediaType を呼び出します。
キャプチャストリームの現在のメディアタイプを取得します。
| dwSourceStreamIndex | DWORD | in | クエリするストリームを指定します。値には次のいずれかを指定できます。
| ||||||||||
| ppMediaType | IMFMediaType** | out | IMFMediaType インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| dwSourceStreamIndex パラメーターが無効です。 |
デバイスストリームの数を取得します。
| pdwStreamCount | DWORD* | out | デバイスストリームの数を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定されたソースストリームインデックスのストリームカテゴリを取得します。
| dwSourceStreamIndex | DWORD | in | ソースストリームのインデックス。 |
| pStreamCategory | MF_CAPTURE_ENGINE_STREAM_CATEGORY* | out | 指定されたソースストリームの MF_CAPTURE_ENGINE_STREAM_CATEGORY を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ビデオプレビューストリームの現在のミラーリング状態を取得します。(IMFCaptureSource.GetMirrorState)
| dwStreamIndex | DWORD | in | ストリームの 0 から始まるインデックス。 |
| pfMirrorState | BOOL* | out | ミラーリングが有効な場合は TRUE、無効な場合は FALSE の値を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ビデオプレビューストリームのミラーリングを有効または無効にします。(IMFCaptureSource.SetMirrorState)
| dwStreamIndex | DWORD | in | ストリームの 0 から始まるインデックス。 |
| fMirrorState | BOOL | in | TRUE の場合、ミラーリングが有効になります。FALSE の場合、ミラーリングが無効になります。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| デバイスストリームにミラーリング機能がありません。 | |
| ソースが初期化されていません。 |
わかりやすいストリーム名から変換された実際のデバイスストリームインデックスを取得します。
| uifriendlyName | DWORD | in | わかりやすい名前。次のいずれかを指定できます。
|
| pdwActualStreamIndex | DWORD* | out | わかりやすい名前に対応するストリームインデックスの値を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFCaptureSource "{439A42A8-0D2C-4505-BE83-F79B2A05D5C4}" #usecom global IMFCaptureSource IID_IMFCaptureSource "{}" #comfunc global IMFCaptureSource_GetCaptureDeviceSource 3 int,sptr #comfunc global IMFCaptureSource_GetCaptureDeviceActivate 4 int,sptr #comfunc global IMFCaptureSource_GetService 5 var,var,sptr #comfunc global IMFCaptureSource_AddEffect 6 int,sptr #comfunc global IMFCaptureSource_RemoveEffect 7 int,sptr #comfunc global IMFCaptureSource_RemoveAllEffects 8 int #comfunc global IMFCaptureSource_GetAvailableDeviceMediaType 9 int,int,sptr #comfunc global IMFCaptureSource_SetCurrentDeviceMediaType 10 int,sptr #comfunc global IMFCaptureSource_GetCurrentDeviceMediaType 11 int,sptr #comfunc global IMFCaptureSource_GetDeviceStreamCount 12 var #comfunc global IMFCaptureSource_GetDeviceStreamCategory 13 int,var #comfunc global IMFCaptureSource_GetMirrorState 14 int,var #comfunc global IMFCaptureSource_SetMirrorState 15 int,int #comfunc global IMFCaptureSource_GetStreamIndexFromFriendlyName 16 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFCaptureSource "{439A42A8-0D2C-4505-BE83-F79B2A05D5C4}" #usecom global IMFCaptureSource IID_IMFCaptureSource "{}" #comfunc global IMFCaptureSource_GetCaptureDeviceSource 3 int,sptr #comfunc global IMFCaptureSource_GetCaptureDeviceActivate 4 int,sptr #comfunc global IMFCaptureSource_GetService 5 sptr,sptr,sptr #comfunc global IMFCaptureSource_AddEffect 6 int,sptr #comfunc global IMFCaptureSource_RemoveEffect 7 int,sptr #comfunc global IMFCaptureSource_RemoveAllEffects 8 int #comfunc global IMFCaptureSource_GetAvailableDeviceMediaType 9 int,int,sptr #comfunc global IMFCaptureSource_SetCurrentDeviceMediaType 10 int,sptr #comfunc global IMFCaptureSource_GetCurrentDeviceMediaType 11 int,sptr #comfunc global IMFCaptureSource_GetDeviceStreamCount 12 sptr #comfunc global IMFCaptureSource_GetDeviceStreamCategory 13 int,sptr #comfunc global IMFCaptureSource_GetMirrorState 14 int,sptr #comfunc global IMFCaptureSource_SetMirrorState 15 int,int #comfunc global IMFCaptureSource_GetStreamIndexFromFriendlyName 16 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。