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

IMFSourceReaderCallback

COM
IIDdeec8d99-fa1d-4d82-84c2-2c8969944867継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Microsoft Media Foundation ソースリーダー用のコールバックインターフェイスです。

解説(Remarks)

ソースリーダーオブジェクトを最初に作成するときに、MF_SOURCE_READER_ASYNC_CALLBACK 属性を使用してコールバックポインターを設定します。

コールバックメソッドは任意のスレッドから呼び出される可能性があるため、このインターフェイスを実装するオブジェクトはスレッドセーフである必要があります。

コールバックポインターを指定しない場合、ソースリーダーは同期的に動作します。

このインターフェイスは、Platform Update Supplement for Windows Vista がインストールされている場合、Windows Vista で利用できます。

メソッド 3

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

vtbl 3 HRESULT OnReadSample(HRESULT hrStatus, DWORD dwStreamIndex, DWORD dwStreamFlags, LONGLONG llTimestamp, IMFSample* pSample)

IMFSourceReader::ReadSample メソッドが完了したときに呼び出されます。

hrStatusHRESULTinステータスコードです。次のサンプルの処理中にエラーが発生した場合、このパラメーターにはエラーコードが格納されます。
dwStreamIndexDWORDinサンプルを配信したストリームの 0 から始まるインデックスです。
dwStreamFlagsDWORDinMF_SOURCE_READER_FLAG 列挙体の 0 個以上のフラグのビットごとの OR です。
llTimestampLONGLONGinサンプルのタイムスタンプ、または dwStreamFlags で示されるストリームイベントの時刻です。時刻は 100 ナノ秒単位で指定されます。
pSampleIMFSample*inoptionalメディアサンプルの IMFSample インターフェイスへのポインターです。このパラメーターは NULL になる場合があります。

戻り値

HRESULT 値を返します。現在のところ、ソースリーダーは戻り値を無視します。

解説(Remarks)

pSample パラメーターは NULL になる場合があります。たとえば、ソースリーダーがストリームの終端に達すると、dwStreamFlags には MF_SOURCE_READERF_ENDOFSTREAM フラグが格納され、pSampleNULL になります。

ストリームにギャップがある場合、dwStreamFlags には MF_SOURCE_READERF_STREAMTICK フラグが格納され、pSampleNULL になり、llTimestamp はギャップが発生した時刻を示します。

このインターフェイスは、Platform Update Supplement for Windows Vista がインストールされている場合、Windows Vista で利用できます。

vtbl 4 HRESULT OnFlush(DWORD dwStreamIndex)

IMFSourceReader::Flush メソッドが完了したときに呼び出されます。

dwStreamIndexDWORDinフラッシュされたストリームのインデックスです。すべてのストリームがフラッシュされた場合は MF_SOURCE_READER_ALL_STREAMS になります。

戻り値

HRESULT 値を返します。現在のところ、ソースリーダーは戻り値を無視します。

解説(Remarks)

このインターフェイスは、Platform Update Supplement for Windows Vista がインストールされている場合、Windows Vista で利用できます。

vtbl 5 HRESULT OnEvent(DWORD dwStreamIndex, IMFMediaEvent* pEvent)

ソースリーダーがメディアソースから特定のイベントを受け取ったときに呼び出されます。

dwStreamIndexDWORDinストリームイベントの場合、値はイベントを送信したストリームの 0 から始まるインデックスです。ソースイベントの場合、値は MF_SOURCE_READER_MEDIASOURCE になります。
pEventIMFMediaEvent*inイベントの IMFMediaEvent インターフェイスへのポインターです。

戻り値

HRESULT 値を返します。現在のところ、ソースリーダーは戻り値を無視します。

解説(Remarks)

現在の実装では、ソースリーダーはこのメソッドを使用して次のイベントをアプリケーションに転送します。

このインターフェイスは、Platform Update Supplement for Windows Vista がインストールされている場合、Windows Vista で利用できます。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFSourceReaderCallback "{DEEC8D99-FA1D-4D82-84C2-2C8969944867}"
#usecom global IMFSourceReaderCallback IID_IMFSourceReaderCallback "{}"
#comfunc global IMFSourceReaderCallback_OnReadSample  3 int,int,int,int64,sptr
#comfunc global IMFSourceReaderCallback_OnFlush       4 int
#comfunc global IMFSourceReaderCallback_OnEvent       5 int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。