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_OUTPUT_STREAM_PROVIDES_SAMPLES | MFT は、ストリームの出力サンプルを割り当てます。 このストリーム の pSample を NULL に設定します。 |
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES | MFT では、両方の割り当てモデルがサポートされています。 |
どちらも (既定値) | クライアントは、ストリームの出力サンプルを割り当てる必要があります。 |
ProcessOutput の動作は、pSample の初期値と ProcessOutput メソッドの dwFlags パラメーターの値によって異なります。
-
pSample が NULL で、dwFlags に MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER フラグが含まれている場合、MFT は出力データを破棄します。
制限: この出力ストリームには、MFT_OUTPUT_STREAM_DISCARDABLE または MFT_OUTPUT_STREAM_LAZY_READ フラグが必要です。 (出力ストリームのフラグを取得するには、 IMFTransform::GetOutputStreamInfo メソッドを呼び出します)。
-
pSample が NULL で、dwFlags にMFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFERが含まれていない場合、MFT は出力データのサンプルを提供します。 MFT は 、pSample が提供するサンプルを指すよう設定します。 MFT では、新しいサンプルを割り当てるか、入力サンプルを再利用できます。
制限: この出力ストリームには、MFT_OUTPUT_STREAM_PROVIDES_SAMPLES または MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES フラグが必要です。
-
pSample が NULL 以外の場合、MFT は呼び出し元によって提供されるサンプルを使用します。
制約事項: この出力ストリームには、MFT_OUTPUT_STREAM_PROVIDES_SAMPLES フラグを指定しないでください。
ProcessOutput を呼び出すたびに、0 個以上のイベントと、出力ストリームごとに最大 1 つのサンプルを生成できます。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
Header | mftransform.h |