次の方法で共有


IMFTransform::P rocessEvent メソッド (mftransform.h)

この Media Foundation 変換 (MFT) の入力ストリームにイベントを送信します。

構文

HRESULT ProcessEvent(
  [in] DWORD         dwInputStreamID,
  [in] IMFMediaEvent *pEvent
);

パラメーター

[in] dwInputStreamID

入力ストリーム識別子。 ストリーム識別子の一覧を取得するには、 IMFTransform::GetStreamIDs を呼び出します。

[in] pEvent

イベント オブジェクトの IMFMediaEvent インターフェイスへのポインター。

戻り値

このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード 説明
S_OK
メソッドが成功しました。
E_NOTIMPL
実装されていません。
MF_E_INVALIDSTREAMNUMBER
ストリーム番号が無効です。
MF_E_TRANSFORM_TYPE_NOT_SET
メディアの種類が 1 つ以上のストリームに設定されていません。
MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT
パイプラインはイベントを伝達しないでください。

解説

MFT は、ダウンストリームでのイベントの送信を処理できます。または、戻り値で示されているように、パイプラインでこれを行うことができます。

  • E_NOTIMPL: MFT はすべてのイベントを無視し、パイプラインはすべてのイベントをダウンストリームに送信する必要があります。 パイプラインがこの戻り値を受け取った後、 ProcessEvent を再度呼び出さない可能性があります。
  • S_OK: MFT はこのイベントを調べましたが、パイプラインはダウンストリームでイベントを送信する必要があります。 内部的には、MFT が何らかの方法でイベントに応答したり、イベントを無視したりする可能性があります。
  • MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT: パイプラインは、このイベントをダウンストリームに伝達しないでください。 MFT はイベントをダウンストリームに送信するか、それ以外の場合は MFT によってイベントが使用され、ダウンストリームに送信されません。 MFT は、イベントがこの MFT で停止し、それ以上ダウンストリームに移動しない場合にのみ、イベントを使用する必要があります。 ただし、ほとんどの場合、イベントは下流に移動する必要があります。
ダウンストリームでイベントを送信するために、MFT は、クライアントが IMFTransform::P rocessOutput を呼び出すときに、MFT_OUTPUT_DATA_BUFFER構造体の pEvents メンバーでクライアントによって提供されるコレクション オブジェクトにイベントを追加します。

イベントは、前と後のサンプルでシリアル化する必要があります。 イベントの後の出力サンプルにイベントをアタッチします。 (パイプラインは最初にイベントを処理し、次にサンプルを処理します)。 MFT が IMFTransform::P rocessInputProcessOutput の呼び出しの間に 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

関連項目

IMFTransform

Media Foundation Transforms