傳遞資料流程結尾
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
當輸入針腳收到串流結束通知時,它會傳播呼叫下游。 從此輸入針腳接收資料的任何下游篩選,也應該取得串流結束通知。 同樣地,採用串流鎖定,而不是篩選鎖定。 如果篩選有尚未傳遞的暫止資料,篩選準則應該立即傳遞,再傳送串流結束通知。 它不應該在資料流程結尾之後傳送任何資料。
HRESULT CMyInputPin::EndOfStream()
{
CAutoLock lock_it(&m_csReceive);
/* If the pin has not delivered all of the data in the stream
(based on what it received previously), do so now. */
// Propagate EndOfStream call downstream, via your output pin(s).
for (each output pin)
{
hr = pOutputPin->DeliverEndOfStream();
}
return S_OK;
}
CBaseOutputPin::D eliverEndOfStream方法會在下游輸入針腳上呼叫IPin::EndOfStream。
相關主題