MFT_OUTPUT_DATA_BUFFER 結構 (mftransform.h)

包含媒體基礎轉換之輸出緩衝區的相關資訊。 此結構用於 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 等等。 在此案例中,建議 (但不需要) 呼叫端設定 dwStreamID 等於陣列索引。

pSample

IMFSample介面的指標。 呼叫 ProcessOutput之前,請將此成員設定為等於有效的 IMFSample 指標或 Null。 如需詳細資訊,請參閱「備註」。

dwStatus

呼叫 ProcessOutput之前,請將這個成員設定為零。 當方法傳回時,MFT 可能會將成員設定為 _MFT_OUTPUT_DATA_BUFFER_FLAGS列舉中的 值。 否則,MFT 會將這個成員保留為零。

pEvents

呼叫 ProcessOutput之前,請將此成員設定為 Null。 輸出時,MFT 可能會將此成員設定為有效的 IMFCollection 介面指標。 指標代表包含零個或多個事件的收集項。 若要取得每個事件,請呼叫IMFCollection::GetElement,並查詢IMFMediaEvent介面傳回的IUnknown指標。 當ProcessOutput方法傳回時,如果指標不是Null,則呼叫端會負責釋放IMFCollection指標。

備註

您必須為每個選取的輸出資料流程提供 MFT_OUTPUT_DATA_BUFFER 結構。

MFT 可以針對輸出範例支援兩個不同的配置模型:

  • MFT 會配置輸出範例。
  • 用戶端會配置輸出範例。
若要尋找 MFT 針對指定輸出資料流程支援的模型,請呼叫 IMFTransform::GetOutputStreamInfo 並檢查 dwFlags的值。
旗標 配置模型
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES MFT 會配置資料流程的輸出範例。 將此資料流程 的 pSample 設定為 Null
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES MFT 支援這兩種配置模型。
(預設) 用戶端必須配置資料流程的輸出範例。
 

ProcessOutput的行為取決於pSample的初始值,以及ProcessOutput方法中dwFlags參數的值。

  • 如果 pSampleNulldwFlags 包含MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER旗標,MFT 會捨棄輸出資料。

    限制:此輸出資料流程必須具有MFT_OUTPUT_STREAM_DISCARDABLE或MFT_OUTPUT_STREAM_LAZY_READ旗標。 (若要取得輸出資料流程的旗標,請呼叫 IMFTransform::GetOutputStreamInfo 方法.)

  • 如果 pSampleNulldwFlags 不包含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 傳回E_INVALIDARG。

每個 ProcessOutput 呼叫都可以產生零或多個事件,而且每個輸出資料流程最多可以產生一個範例。

需求

   
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
標頭 mftransform.h

另請參閱

IMFTransform::P rocessOutput

媒體基礎結構

媒體基礎轉換