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

ProcessEvent 方法會將事件傳送至此媒體基礎轉換上的輸入數據流, (MFT) 。

語法

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

參數

[in] dwInputStreamID

Stream識別碼。 若要取得數據流標識符的清單,請呼叫 IMFDeviceTransform::GetStreamIDs

[in] pEvent

事件物件的 IMFMediaEvent 介面指標。

傳回值

方法會傳回 HRESULT。 可能的值包括但不限於下表中所提供的值。

傳回碼 描述
S_OK
已成功處理事件。 事件將會傳播到數據流中。
MF_E_INVALIDSTREAMNUMBER
傳遞無效的數據流標識碼。
MF_S_TRANSFORM_DO_NO_PROPOGATE_EVENT
表示裝置 MFT 不想要進一步傳播事件。
E_NOTIMPL
函式未實作。

備註

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

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

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

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

規格需求

需求
最低支援的用戶端 Windows 10 (版本 1703)
目標平台 Windows
標頭 mftransform.h

另請參閱

IMFDeviceTransform