Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IMFCapturePreviewSink

IMFCapturePreviewSink

COM
IID77346cfd-5b49-4d73-ace0-5b52a859f2e0継承元IMFCaptureSink自前メソッド開始 vtbl8

公式ドキュメント

プレビューシンクを制御します。

解説(Remarks)

プレビューを開始するには、IMFCaptureEngine::StartPreview を呼び出します。

メソッド 9

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 8 HRESULT SetRenderHandle(HANDLE handle)

プレビュー用のウィンドウを指定します。

handleHANDLEinウィンドウへのハンドル。プレビューシンクは、このウィンドウ内にビデオフレームを描画します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドを呼び出すと、以前の IMFCapturePreviewSink::SetSampleCallback の呼び出しがすべて上書きされます。

vtbl 9 HRESULT SetRenderSurface(IUnknown* pSurface)

プレビュー用の Microsoft DirectComposition ビジュアルを指定します。

pSurfaceIUnknown*inIDCompositionVisual インターフェイスを実装する DirectComposition ビジュアルへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 10 HRESULT UpdateVideo(MFVideoNormalizedRect* pSrc, RECT* pDst, COLORREF* pBorderClr)

ビデオフレームを更新します。(IMFCapturePreviewSink.UpdateVideo)

pSrcMFVideoNormalizedRect*inoptionalソース矩形を指定する MFVideoNormalizedRect 構造体へのポインター。ソース矩形は、表示されるビデオフレームの領域を定義します。このパラメーターが NULL の場合、ビデオフレーム全体が表示されます。
pDstRECT*inoptional転送先矩形を指定する RECT 構造体へのポインター。転送先矩形は、ビデオが描画されるウィンドウまたは DirectComposition ビジュアルの領域を定義します。
pBorderClrCOLORREF*inoptional境界線の色。この値を作成するには RGB マクロを使用します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 11 HRESULT SetSampleCallback(DWORD dwStreamSinkIndex, IMFCaptureEngineOnSampleCallback* pCallback)

1 つのストリームのプレビューデータを受け取るコールバックを設定します。

dwStreamSinkIndexDWORDinストリームの 0 から始まるインデックス。このインデックスは、IMFCaptureSink::AddStream メソッドの pdwSinkStreamIndex パラメーターで返されます。
pCallbackIMFCaptureEngineOnSampleCallback*inIMFCaptureEngineOnSampleCallback インターフェイスへのポインター。呼び出し元がこのインターフェイスを実装する必要があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドを呼び出すと、以前の IMFCapturePreviewSink::SetRenderHandle の呼び出しがすべて上書きされます。

vtbl 12 HRESULT GetMirrorState(BOOL* pfMirrorState)

ビデオプレビューストリームの現在のミラーリング状態を取得します。(IMFCapturePreviewSink.GetMirrorState)

pfMirrorStateBOOL*outミラーリングが有効な場合は値 TRUE を、無効な場合は FALSE を受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 13 HRESULT SetMirrorState(BOOL fMirrorState)

ビデオプレビューストリームのミラーリングを有効または無効にします。(IMFCapturePreviewSink.SetMirrorState)

fMirrorStateBOOLinTRUE の場合、ミラーリングが有効になります。FALSE の場合、ミラーリングは無効になります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 14 HRESULT GetRotation(DWORD dwStreamIndex, DWORD* pdwRotationValue)

ビデオプレビューストリームの回転を取得します。

dwStreamIndexDWORDinストリームの 0 から始まるインデックス。ビデオストリームを指定する必要があります。
pdwRotationValueDWORD*out画像の回転角度を度単位で受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 15 HRESULT SetRotation(DWORD dwStreamIndex, DWORD dwRotationValue)

ビデオプレビューストリームを回転させます。

dwStreamIndexDWORDin回転させるストリームの 0 から始まるインデックス。ビデオストリームを指定する必要があります。
dwRotationValueDWORDinビデオを回転させる量を度単位で指定します。有効な値は 0、90、180、270 です。値 0 はビデオを元の向きに戻します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 16 HRESULT SetCustomSink(IMFMediaSink* pMediaSink)

プレビュー用のカスタムメディアシンクを設定します。

pMediaSinkIMFMediaSink*inメディアシンクの IMFMediaSink インターフェイスへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、プレビュー用のメディアシンクの既定の選択を上書きします。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。