MFT_MESSAGE_COMMAND_DRAIN

要求媒體基礎轉換 (MFT) 清空所有儲存的資料。

訊息參數

無。

備註

若要傳送此訊息,請呼叫 IMFTransform::P rocessMessage

傳送此訊息之後,除非 MFT 處理先前對 IMFTransform::P rocessInput呼叫的所有資料,否則指定的輸入資料流程不會接受輸入。

清空程式在同步 MFT 與非同步 MFT 之間稍有不同:

同步 MFT

  1. 用戶端傳送此訊息之後,它會在迴圈中呼叫 IMFTransform::P rocessOutput ,直到 ProcessOutput 傳回錯誤碼 MF_E_TRANSFORM_NEED_MORE_INPUT為止。
  2. 只要 MFT 仍有要處理的資料, 對 ProcessInput 的進一步呼叫將會失敗。 MFT 會繼續產生輸出,直到它使用所有儲存的資料為止。 MFT 會捨棄無法處理到完整輸出範例中的任何資料。 (例如,它應該卸載部分視訊畫面。)

非同步 MFT

  1. MFT 會繼續傳送 METransformHaveOutput 事件,直到沒有其他要處理的資料為止。 這不會在此時間傳送 METransformNeedInput 事件。
  2. 在 MFT 傳送最後一個 METransformHaveOutput 事件之後,它會傳送 METransformDrainComplete 事件。
  3. 清空完成後,MFT 不會傳送另一個 METransformNeedInput 事件,直到收到來自用戶端 的MFT_MESSAGE_NOTIFY_START_OF_STREAM 訊息為止。

用戶端清空 MFT 之後,用戶端可以傳送更多輸入資料。 清空作業之後的第一個範例必須具有不連續屬性 (MFSampleExtension_Discontinuity 屬性) 。

注意

舊版本檔指出 ulParam 事件參數是 _MFT_DRAIN_TYPE 列舉的成員。 不正確。 ulParam包含資料流程識別碼。

 

實作

非同步 MFT 在清空之後,必須一律傳回 METransformDrainComplete

如果下列條件成立,同步 MFT 可以忽略此訊息並傳回S_OK:

  • MFT 一次永遠不會儲存一個以上的輸入範例。
  • 每個輸入範例都會產生單一輸出範例。

否則,同步 MFT 必須實作此訊息。

規格需求

需求
最低支援的用戶端
Windows Vista [僅限傳統型應用程式]
最低支援的伺服器
Windows Server 2008 [僅限傳統型應用程式]
標頭
Mftransform.h

另請參閱

MFT_MESSAGE_TYPE

非同步 MFT