次の方法で共有


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

ProcessOutput メソッドは、Device MFT 出力ストリームから処理された出力を取得します。

構文

HRESULT ProcessOutput(
  [in] DWORD                  dwFlags,
  [in] DWORD                  cOutputBufferCount,
  [in] MFT_OUTPUT_DATA_BUFFER *pOutputSample,
  [in] DWORD                  *pdwStatus
);

パラメーター

[in] dwFlags

_MFT_PROCESS_OUTPUT_FLAGS列挙体からの 0 個以上のフラグのビットごとの OR。

[in] cOutputBufferCount

pOutputSamples 配列内の要素の数。 値は少なくとも 1 である必要があります。

[in] pOutputSample

呼び出し元によって割り当てられた MFT_OUTPUT_DATA_BUFFER 構造体の配列へのポインター。 MFT は、この配列を使用して、出力データを呼び出し元に返します。

[in] pdwStatus

_MFT_PROCESS_OUTPUT_STATUS列挙から 0 個以上のフラグのビットごとの OR を受け取ります。

戻り値

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

リターン コード 説明
S_OK
メソッドが成功しました。
E_INVALIDARG
無効な引数が渡されました。
MF_E_INVALIDREQUEST
現時点では、デバイス MFT で要求をサポートできませんでした。
MF_E_INVAILIDSTREAMNUMBER
無効なストリーム ID が渡されました。
MF_E_INVALID_STREAM_STATE
要求されたストリームの切り替えは不可能です。
MF_E_TRANSFORM_TYPE_NOT_SET
入力メディアの種類が設定されていません。

解説

ほとんどの場合、メソッドが成功した場合、Media Foundation 変換 (MFT) はサンプルを格納し、 IMFSample ポインターの参照カウントを保持します。 このサンプルを使用して MFT を実行する場合は、メモリ リークを回避するために MFT を解放する必要があります。

デバイス変換マネージャー (DTM) がすべてのストリームで有効なメディアの種類を設定した後、MFT は常により多くの入力を受け入れ、より多くの出力を生成できる必要があります。

MFT が入力データで致命的でないエラーを検出した場合、単にデータを削除し、より多くの入力データを取得したときに回復を試みることができます。 MFT がデータを削除する場合は、次の出力サンプルで MFSampleExtension_Discontinuity 属性を設定して、データ ストリームにギャップがあることを呼び出し元に通知する必要があります。

要件

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

関連項目

IMFDeviceTransform