IMFSourceReaderCallback
COM公式ドキュメント
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。
IMFSourceReader::ReadSample メソッドが完了したときに呼び出されます。
| hrStatus | HRESULT | in | ステータスコードです。次のサンプルの処理中にエラーが発生した場合、このパラメーターにはエラーコードが格納されます。 |
| dwStreamIndex | DWORD | in | サンプルを配信したストリームの 0 から始まるインデックスです。 |
| dwStreamFlags | DWORD | in | MF_SOURCE_READER_FLAG 列挙体の 0 個以上のフラグのビットごとの OR です。 |
| llTimestamp | LONGLONG | in | サンプルのタイムスタンプ、または dwStreamFlags で示されるストリームイベントの時刻です。時刻は 100 ナノ秒単位で指定されます。 |
| pSample | IMFSample* | inoptional | メディアサンプルの IMFSample インターフェイスへのポインターです。このパラメーターは NULL になる場合があります。 |
戻り値
HRESULT 値を返します。現在のところ、ソースリーダーは戻り値を無視します。
解説(Remarks)
pSample パラメーターは NULL になる場合があります。たとえば、ソースリーダーがストリームの終端に達すると、dwStreamFlags には MF_SOURCE_READERF_ENDOFSTREAM フラグが格納され、pSample は NULL になります。
ストリームにギャップがある場合、dwStreamFlags には MF_SOURCE_READERF_STREAMTICK フラグが格納され、pSample は NULL になり、llTimestamp はギャップが発生した時刻を示します。
このインターフェイスは、Platform Update Supplement for Windows Vista がインストールされている場合、Windows Vista で利用できます。
IMFSourceReader::Flush メソッドが完了したときに呼び出されます。
| dwStreamIndex | DWORD | in | フラッシュされたストリームのインデックスです。すべてのストリームがフラッシュされた場合は MF_SOURCE_READER_ALL_STREAMS になります。 |
戻り値
HRESULT 値を返します。現在のところ、ソースリーダーは戻り値を無視します。
解説(Remarks)
このインターフェイスは、Platform Update Supplement for Windows Vista がインストールされている場合、Windows Vista で利用できます。
ソースリーダーがメディアソースから特定のイベントを受け取ったときに呼び出されます。
| dwStreamIndex | DWORD | in | ストリームイベントの場合、値はイベントを送信したストリームの 0 から始まるインデックスです。ソースイベントの場合、値は MF_SOURCE_READER_MEDIASOURCE になります。 |
| pEvent | IMFMediaEvent* | in | イベントの IMFMediaEvent インターフェイスへのポインターです。 |
戻り値
HRESULT 値を返します。現在のところ、ソースリーダーは戻り値を無視します。
解説(Remarks)
現在の実装では、ソースリーダーはこのメソッドを使用して次のイベントをアプリケーションに転送します。
このインターフェイスは、Platform Update Supplement for Windows Vista がインストールされている場合、Windows Vista で利用できます。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 指定が可能。