次の方法で共有


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

ProcessEvent メソッドは、この Media Foundation 変換 (MFT) の入力ストリームにイベントを送信します。

構文

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

パラメーター

[in] dwInputStreamID

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

[in] pEvent

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

戻り値

このメソッドは HRESULT を返します。 使用できる値には、次の表に示す値が含まれますが、これらに限定されません。

リターン コード 説明
S_OK
イベントが正常に処理されました。 イベントはストリームに反映されます。
MF_E_INVALIDSTREAMNUMBER
無効なストリーム ID が渡されました。
MF_S_TRANSFORM_DO_NO_PROPOGATE_EVENT
デバイス MFT がイベントをさらに伝達することを望まないことを示します。
E_NOTIMPL
関数は実装されていません。

注釈

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

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

イベントは、その前後にあるサンプルと共にシリアル化する必要があります。 イベントの後の出力サンプルにイベントをアタッチします。 (パイプラインは最初にイベントを処理し、次にサンプルを処理します)。 IMFTransform::P rocessInput と IMFTransform::ProcessOutput の呼び出しの間に MFT が 1 つ以上のサンプルを保持している場合、この状況ではパイプラインは入力サンプルを出力サンプルと関連付けることができないため、すべてのイベントのダウンストリーム送信を処理する必要があります。

MFT がサンプルを保持せず、イベントを調べる必要がない場合は、 E_NOTIMPLを返すことができます。

要件

要件
サポートされている最小のクライアント Windows 10 Version 1703
対象プラットフォーム Windows
ヘッダー mftransform.h

こちらもご覧ください

IMFDeviceTransform