IMFTransform::P rocessEvent 方法 (mftransform.h)

將事件傳送至此媒體基礎轉換上的輸入資料流程, (MFT) 。

語法

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

參數

[in] dwInputStreamID

輸入資料流程識別碼。 若要取得資料流程識別碼的清單,請呼叫 IMFTransform::GetStreamIDs

[in] pEvent

事件物件的 IMFMediaEvent 介面指標。

傳回值

方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。

傳回碼 描述
S_OK
此方法已成功。
E_NOTIMPL
未實作。
MF_E_INVALIDSTREAMNUMBER
不正確資料流程編號。
MF_E_TRANSFORM_TYPE_NOT_SET
媒體類型不會在一或多個資料流程上設定。
MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT
管線不應該傳播事件。

備註

MFT 可以處理傳送事件下游,也可以讓管線執行此動作,如傳回值所示:

  • E_NOTIMPL:MFT 會忽略所有事件,而管線應該傳送下游的所有事件。 管線收到這個傳回值之後,可能不會再次呼叫 ProcessEvent
  • S_OK:MFT 已檢查此事件,但管線應該傳送事件下游。 在內部,MFT 可能會以某種方式回應事件,或者可能會忽略事件。
  • MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT:管線不應該傳播此事件下游。 MFT 會傳送下游事件,否則 MFT 會取用事件,而不是將它傳送至下游。 如果事件應該在此 MFT 停止,且不會進一步下游移動,則 MFT 應該只取用事件。 但在大部分情況下,事件應該會流向下游。
若要傳送事件下游,當用戶端呼叫IMFTransform::P rocessOutput時,MFT 會將事件新增至用戶端在MFT_OUTPUT_DATA_BUFFER結構的pEvents成員中提供的集合物件。

事件必須以之前和之後的範例序列化。 將事件附加至事件後面的輸出範例。 (管線會先處理事件,然後再處理 sample.) 如果 MFT 在 對 IMFTransform::P rocessInputProcessOutput的呼叫之間保留一或多個範例,MFT 應該處理下游的所有事件,因為在此情況下,管線無法將輸入範例與輸出範例相互關聯。

如果 MFT 沒有保留樣本,而且不需要檢查任何事件,它可以傳回 E_NOTIMPL

如果在包含 mftransform.h 之前定義 MFT_UNIQUE_METHOD_NAMES ,這個方法會重新命名 為 MFTProcessEvent。 請參閱 建立混合式 DMO/MFT 物件

需求

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

另請參閱

IMFTransform

媒體基礎轉換