IMFTransform::P rocessEvent メソッド (mftransform.h)
この Media Foundation 変換 (MFT) の入力ストリームにイベントを送信します。
構文
HRESULT ProcessEvent(
[in] DWORD dwInputStreamID,
[in] IMFMediaEvent *pEvent
);
パラメーター
[in] dwInputStreamID
入力ストリーム識別子。 ストリーム識別子の一覧を取得するには、 IMFTransform::GetStreamIDs を呼び出します。
[in] pEvent
イベント オブジェクトの IMFMediaEvent インターフェイスへのポインター。
戻り値
このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。
リターン コード | 説明 |
---|---|
|
メソッドが成功しました。 |
|
実装されていません。 |
|
ストリーム番号が無効です。 |
|
メディアの種類が 1 つ以上のストリームに設定されていません。 |
|
パイプラインはイベントを伝達しないでください。 |
解説
MFT は、ダウンストリームでのイベントの送信を処理できます。または、戻り値で示されているように、パイプラインでこれを行うことができます。
- E_NOTIMPL: MFT はすべてのイベントを無視し、パイプラインはすべてのイベントをダウンストリームに送信する必要があります。 パイプラインがこの戻り値を受け取った後、 ProcessEvent を再度呼び出さない可能性があります。
- S_OK: MFT はこのイベントを調べましたが、パイプラインはダウンストリームでイベントを送信する必要があります。 内部的には、MFT が何らかの方法でイベントに応答したり、イベントを無視したりする可能性があります。
- MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT: パイプラインは、このイベントをダウンストリームに伝達しないでください。 MFT はイベントをダウンストリームに送信するか、それ以外の場合は MFT によってイベントが使用され、ダウンストリームに送信されません。 MFT は、イベントがこの MFT で停止し、それ以上ダウンストリームに移動しない場合にのみ、イベントを使用する必要があります。 ただし、ほとんどの場合、イベントは下流に移動する必要があります。
イベントは、前と後のサンプルでシリアル化する必要があります。 イベントの後の出力サンプルにイベントをアタッチします。 (パイプラインは最初にイベントを処理し、次にサンプルを処理します)。 MFT が IMFTransform::P rocessInput と ProcessOutput の呼び出しの間に 1 つ以上のサンプルを保持している場合、この状況ではパイプラインが出力サンプルと入力サンプルを関連付けることができないため、MFT はすべてのイベントのダウンストリーム送信を処理する必要があります。
MFT がサンプルを保持せず、イベントを調べる必要がない場合は、 E_NOTIMPLを返すことができます。
mftransform.h を含む前に MFT_UNIQUE_METHOD_NAMES が定義されている場合、このメソッドの名前は MFTProcessEvent になります。 「ハイブリッド DMO/MFT オブジェクトの作成」を参照してください。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | mftransform.h |
Library | Mfuuid.lib |