MFT_MESSAGE_COMMAND_DRAIN
要求媒體基礎轉換 (MFT) 清空所有儲存的資料。
訊息參數
無。
備註
若要傳送此訊息,請呼叫 IMFTransform::P rocessMessage。
傳送此訊息之後,除非 MFT 處理先前對 IMFTransform::P rocessInput呼叫的所有資料,否則指定的輸入資料流程不會接受輸入。
清空程式在同步 MFT 與非同步 MFT 之間稍有不同:
同步 MFT
- 用戶端傳送此訊息之後,它會在迴圈中呼叫 IMFTransform::P rocessOutput ,直到 ProcessOutput 傳回錯誤碼 MF_E_TRANSFORM_NEED_MORE_INPUT為止。
- 只要 MFT 仍有要處理的資料, 對 ProcessInput 的進一步呼叫將會失敗。 MFT 會繼續產生輸出,直到它使用所有儲存的資料為止。 MFT 會捨棄無法處理到完整輸出範例中的任何資料。 (例如,它應該卸載部分視訊畫面。)
非同步 MFT
- MFT 會繼續傳送 METransformHaveOutput 事件,直到沒有其他要處理的資料為止。 這不會在此時間傳送 METransformNeedInput 事件。
- 在 MFT 傳送最後一個 METransformHaveOutput 事件之後,它會傳送 METransformDrainComplete 事件。
- 清空完成後,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 [僅限傳統型應用程式] |
標頭 |
|
另請參閱