次の方法で共有


MFT_OUTPUT_DATA_BUFFER 構造体 (mftransform.h)

Media Foundation 変換の出力バッファーに関する情報が含まれます。 この構造体は、 IMFTransform::P rocessOutput メソッドで使用されます。

構文

typedef struct _MFT_OUTPUT_DATA_BUFFER {
  DWORD         dwStreamID;
  IMFSample     *pSample;
  DWORD         dwStatus;
  IMFCollection *pEvents;
} MFT_OUTPUT_DATA_BUFFER, *PMFT_OUTPUT_DATA_BUFFER;

メンバー

dwStreamID

出力ストリーム識別子。 ProcessOutput を呼び出す前に、このメンバーを有効なストリーム識別子に設定します。

例外: IMFTransform::GetStreamIDs メソッドがE_NOTIMPLを返した場合、MFT はこのメンバーを無視し、ProcessOutput メソッドの pOutputSamples 配列のインデックスをストリーム識別子として使用します。 つまり、ストリーム 0 の配列の最初の要素、ストリーム 1 の 2 番目の要素などを使用します。 呼び出し元が dwStreamID を配列インデックスと等しく設定することをお勧めします (必須ではありません)。

pSample

IMFSample インターフェイスへのポインター。 ProcessOutput を呼び出す前に、このメンバーを有効な IMFSample ポインターまたは NULL に設定します。 詳細については、「解説」を参照してください。

dwStatus

ProcessOutput を呼び出す前に、このメンバーを 0 に設定します。 メソッドが戻ると、MFT はメンバーを _MFT_OUTPUT_DATA_BUFFER_FLAGS 列挙体の値と等しく設定する場合があります。 それ以外の場合、MFT はこのメンバーを 0 のままにします。

pEvents

ProcessOutput を呼び出す前に、このメンバーを NULL に設定します。 出力時に、MFT はこのメンバーを有効な IMFCollection インターフェイス ポインターに設定する場合があります。 ポインターは、0 個以上のイベントを含む collecton を表します。 各イベントを取得するには、 IMFCollection::GetElement を呼び出し、返された IUnknown ポインターに 対して IMFMediaEvent インターフェイスのクエリを実行します。 ProcessOutput メソッドが返されると、ポインターが NULL でない場合、呼び出し元は IMFCollection ポインターを解放する必要があります。

解説

選択した出力ストリームごとに 、MFT_OUTPUT_DATA_BUFFER 構造を指定する必要があります。

MFT では、出力サンプルに対して 2 つの異なる割り当てモデルをサポートできます。

  • MFT は出力サンプルを割り当てます。
  • クライアントは出力サンプルを割り当てます。
特定の出力ストリームに対して MFT がサポートするモデルを見つけるには、IMFTransform::GetOutputStreamInfo を呼び出し、dwFlags の値をチェックします。
フラグ 割り当てモデル
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES MFT は、ストリームの出力サンプルを割り当てます。 このストリーム の pSampleNULL に設定します。
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES MFT では、両方の割り当てモデルがサポートされています。
どちらも (既定値) クライアントは、ストリームの出力サンプルを割り当てる必要があります。
 

ProcessOutput の動作は、pSample の初期値と ProcessOutput メソッドの dwFlags パラメーターの値によって異なります。

  • pSampleNULL、dwFlags に MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER フラグが含まれている場合、MFT は出力データを破棄します。

    制限: この出力ストリームには、MFT_OUTPUT_STREAM_DISCARDABLE または MFT_OUTPUT_STREAM_LAZY_READ フラグが必要です。 (出力ストリームのフラグを取得するには、 IMFTransform::GetOutputStreamInfo メソッドを呼び出します)。

  • pSampleNULL、dwFlags にMFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFERが含まれていない場合、MFT は出力データのサンプルを提供します。 MFT は 、pSample が提供するサンプルを指すよう設定します。 MFT では、新しいサンプルを割り当てるか、入力サンプルを再利用できます。

    制限: この出力ストリームには、MFT_OUTPUT_STREAM_PROVIDES_SAMPLES または MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES フラグが必要です。

  • pSampleNULL 以外の場合、MFT は呼び出し元によって提供されるサンプルを使用します。

    制約事項: この出力ストリームには、MFT_OUTPUT_STREAM_PROVIDES_SAMPLES フラグを指定しないでください。

その他の組み合わせは無効であり、 ProcessOutput はE_INVALIDARGを返します。

ProcessOutput を呼び出すたびに、0 個以上のイベントと、出力ストリームごとに最大 1 つのサンプルを生成できます。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
Header mftransform.h

関連項目

IMFTransform::P rocessOutput

Media Foundation Structures

Media Foundation Transforms