IMFCapturePreviewSink
COM公式ドキュメント
プレビューシンクを制御します。
解説(Remarks)
プレビューを開始するには、IMFCaptureEngine::StartPreview を呼び出します。
メソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
プレビュー用のウィンドウを指定します。
| handle | HANDLE | in | ウィンドウへのハンドル。プレビューシンクは、このウィンドウ内にビデオフレームを描画します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドを呼び出すと、以前の IMFCapturePreviewSink::SetSampleCallback の呼び出しがすべて上書きされます。
プレビュー用の Microsoft DirectComposition ビジュアルを指定します。
| pSurface | IUnknown* | in | IDCompositionVisual インターフェイスを実装する DirectComposition ビジュアルへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ビデオフレームを更新します。(IMFCapturePreviewSink.UpdateVideo)
| pSrc | MFVideoNormalizedRect* | inoptional | ソース矩形を指定する MFVideoNormalizedRect 構造体へのポインター。ソース矩形は、表示されるビデオフレームの領域を定義します。このパラメーターが NULL の場合、ビデオフレーム全体が表示されます。 |
| pDst | RECT* | inoptional | 転送先矩形を指定する RECT 構造体へのポインター。転送先矩形は、ビデオが描画されるウィンドウまたは DirectComposition ビジュアルの領域を定義します。 |
| pBorderClr | COLORREF* | inoptional | 境界線の色。この値を作成するには RGB マクロを使用します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
1 つのストリームのプレビューデータを受け取るコールバックを設定します。
| dwStreamSinkIndex | DWORD | in | ストリームの 0 から始まるインデックス。このインデックスは、IMFCaptureSink::AddStream メソッドの pdwSinkStreamIndex パラメーターで返されます。 |
| pCallback | IMFCaptureEngineOnSampleCallback* | in | IMFCaptureEngineOnSampleCallback インターフェイスへのポインター。呼び出し元がこのインターフェイスを実装する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドを呼び出すと、以前の IMFCapturePreviewSink::SetRenderHandle の呼び出しがすべて上書きされます。
ビデオプレビューストリームの現在のミラーリング状態を取得します。(IMFCapturePreviewSink.GetMirrorState)
| pfMirrorState | BOOL* | out | ミラーリングが有効な場合は値 TRUE を、無効な場合は FALSE を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ビデオプレビューストリームのミラーリングを有効または無効にします。(IMFCapturePreviewSink.SetMirrorState)
| fMirrorState | BOOL | in | TRUE の場合、ミラーリングが有効になります。FALSE の場合、ミラーリングは無効になります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ビデオプレビューストリームの回転を取得します。
| dwStreamIndex | DWORD | in | ストリームの 0 から始まるインデックス。ビデオストリームを指定する必要があります。 |
| pdwRotationValue | DWORD* | out | 画像の回転角度を度単位で受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ビデオプレビューストリームを回転させます。
| dwStreamIndex | DWORD | in | 回転させるストリームの 0 から始まるインデックス。ビデオストリームを指定する必要があります。 |
| dwRotationValue | DWORD | in | ビデオを回転させる量を度単位で指定します。有効な値は 0、90、180、270 です。値 0 はビデオを元の向きに戻します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
プレビュー用のカスタムメディアシンクを設定します。
| pMediaSink | IMFMediaSink* | in | メディアシンクの IMFMediaSink インターフェイスへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、プレビュー用のメディアシンクの既定の選択を上書きします。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFCapturePreviewSink "{77346CFD-5B49-4D73-ACE0-5B52A859F2E0}" #usecom global IMFCapturePreviewSink IID_IMFCapturePreviewSink "{}" #comfunc global IMFCapturePreviewSink_SetRenderHandle 8 sptr #comfunc global IMFCapturePreviewSink_SetRenderSurface 9 sptr #comfunc global IMFCapturePreviewSink_UpdateVideo 10 var,var,var #comfunc global IMFCapturePreviewSink_SetSampleCallback 11 int,sptr #comfunc global IMFCapturePreviewSink_GetMirrorState 12 var #comfunc global IMFCapturePreviewSink_SetMirrorState 13 int #comfunc global IMFCapturePreviewSink_GetRotation 14 int,var #comfunc global IMFCapturePreviewSink_SetRotation 15 int,int #comfunc global IMFCapturePreviewSink_SetCustomSink 16 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFCapturePreviewSink "{77346CFD-5B49-4D73-ACE0-5B52A859F2E0}" #usecom global IMFCapturePreviewSink IID_IMFCapturePreviewSink "{}" #comfunc global IMFCapturePreviewSink_SetRenderHandle 8 sptr #comfunc global IMFCapturePreviewSink_SetRenderSurface 9 sptr #comfunc global IMFCapturePreviewSink_UpdateVideo 10 sptr,sptr,sptr #comfunc global IMFCapturePreviewSink_SetSampleCallback 11 int,sptr #comfunc global IMFCapturePreviewSink_GetMirrorState 12 sptr #comfunc global IMFCapturePreviewSink_SetMirrorState 13 int #comfunc global IMFCapturePreviewSink_GetRotation 14 int,sptr #comfunc global IMFCapturePreviewSink_SetRotation 15 int,int #comfunc global IMFCapturePreviewSink_SetCustomSink 16 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。