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

IMFCaptureRecordSink

COM
IID3323b55a-f92a-4fe2-8edc-e9bfc0634d77継承元IMFCaptureSink自前メソッド開始 vtbl8

公式ドキュメント

録画シンクを制御します。

解説(Remarks)

録画シンクは、次のいずれかの宛先にサンプルを配信できます。

アプリケーションは、宛先を 1 つだけ指定する必要があります。複数の宛先はサポートされていません。(ただし、コールバックを使用する場合は、ストリームごとに個別のコールバックを提供できます。)

宛先がバイトストリームまたは出力ファイルの場合、アプリケーションは MP4 や ASF などのコンテナー型を指定します。キャプチャエンジンは、オーディオとビデオを多重化して、コンテナー型で定義された形式を生成します。ただし、宛先がコールバックインターフェイスの場合、キャプチャエンジンはサンプルを多重化したり、その他の方法でインターリーブしたりしません。コールバックオプションを使用すると、録画出力を最大限に制御できますが、アプリケーション側でより多くの作業が必要になります。

録画を開始するには、IMFCaptureEngine::StartRecord を呼び出します。

メソッド 6

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

vtbl 8 HRESULT SetOutputByteStream(IMFByteStream* pByteStream, GUID* guidContainerType)

録画データを受け取るバイトストリームを指定します。

pByteStreamIMFByteStream*inバイトストリームの IMFByteStream インターフェイスへのポインター。バイトストリームは書き込み可能である必要があります。
guidContainerTypeGUID*inファイルコンテナー型を指定する GUID。指定可能な値は MF_TRANSCODE_CONTAINERTYPE 属性に記載されています。

戻り値

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

解説(Remarks)

このメソッドを呼び出すと、以前の IMFCaptureRecordSink::SetOutputFileName または IMFCaptureRecordSink::SetSampleCallback の呼び出しが上書きされます。

vtbl 9 HRESULT SetOutputFileName(LPWSTR fileName)

録画用の出力ファイルの名前を指定します。

fileNameLPWSTRin出力ファイルの URL を含む null 終端文字列。

戻り値

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

解説(Remarks)

キャプチャエンジンは、ファイル名の拡張子を使用して出力ファイルのコンテナー型を選択します。たとえば、ファイル名の拡張子が ".mp4" の場合、キャプチャエンジンは MP4 ファイルを作成します。

このメソッドを呼び出すと、以前の IMFCaptureRecordSink::SetOutputByteStream または IMFCaptureRecordSink::SetSampleCallback の呼び出しが上書きされます。

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

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

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

戻り値

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

解説(Remarks)

このメソッドを呼び出すと、以前の IMFCaptureRecordSink::SetOutputByteStream または IMFCaptureRecordSink::SetOutputFileName の呼び出しが上書きされます。

vtbl 11 HRESULT SetCustomSink(IMFMediaSink* pMediaSink)

録画用のカスタムメディアシンクを設定します。

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

戻り値

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

解説(Remarks)

このメソッドは、録画用のメディアシンクの既定の選択を上書きします。

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

録画されるビデオストリームに現在適用されている回転を取得します。

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

戻り値

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

vtbl 13 HRESULT SetRotation(DWORD dwStreamIndex, DWORD dwRotationValue)

録画されるビデオストリームを回転させます。

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

戻り値

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFCaptureRecordSink "{3323B55A-F92A-4FE2-8EDC-E9BFC0634D77}"
#usecom global IMFCaptureRecordSink IID_IMFCaptureRecordSink "{}"
#comfunc global IMFCaptureRecordSink_SetOutputByteStream  8 sptr,var
#comfunc global IMFCaptureRecordSink_SetOutputFileName    9 wstr
#comfunc global IMFCaptureRecordSink_SetSampleCallback    10 int,sptr
#comfunc global IMFCaptureRecordSink_SetCustomSink        11 sptr
#comfunc global IMFCaptureRecordSink_GetRotation          12 int,var
#comfunc global IMFCaptureRecordSink_SetRotation          13 int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。