提取模型
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
在 IMemInputPin 介面中,上游篩選會決定要傳送的資料,並將資料推送至下游篩選。 對於某些篩選準則, 提取 模型更適合。 在這裡,下游篩選會向上游篩選要求資料。 範例仍會流向下游,從輸出釘選到輸入針腳,但下游篩選會起始資料流程。 這種類型的連線會使用 IAsyncReader 介面。
提取模型的一般用法是在檔案播放中。 例如,在 AVI 播放圖表中, Async 檔案來源 篩選會執行一般檔案讀取作業,並以位元組資料流程的形式傳遞資料,而沒有格式資訊。 AVI 分割器篩選器會讀取 AVI 標頭,並將串流剖析為視訊和音訊範例。 AVI 分割器可以判斷它所需的資料優於 Async File Source 篩選,因此它會使用 IAsyncReader 而不是 IMemInputPin。
若要從輸出針腳要求資料,輸入針腳會呼叫下列其中一種方法:
第一個方法是非同步,可支援多個重迭的讀取。 其他則是同步的。
理論上,任何篩選都可以支援 IAsyncReader,但實際上它是針對連接到剖析器篩選的來源篩選所設計。 剖析器的作用非常類似推送模型中的來源篩選。 暫停時,它會建立串流執行緒,從 IAsyncReader 連線提取資料,並將其推送至下游。 輸出針腳使用 IMemInputPin,而圖形的其餘部分則使用標準推送模型。
相關主題