尋找
[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、IMFMediaEngine,以及媒體基金會中的音訊/視訊擷取 所取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
篩選器支援透過 IMediaSeeking 介面進行查詢。 應用程式會向 Filter Graph Manager 查詢 IMediaSeeking,並使用它發出尋找命令。 Filter Graph Manager 會將每個搜尋命令散發至圖形中的所有轉譯器篩選。 每個渲染器都會透過上游濾鏡的輸出插針傳遞命令,直到到達可以執行尋找的濾鏡為止。 一般而言,來源過濾器或剖析過濾器,例如 AVI 分割器,會執行尋找作業。
當篩選執行搜尋作業時,它會排清任何擱置的數據。 結果是將搜尋命令的延遲降到最低,因為現有的數據會從圖形排清。 搜尋命令之後,串流時間會重設為零。
下圖說明事件的順序。
事件序列
如果剖析器過濾器有一個以上的輸出接腳,它通常會指定其中一個來接受搜尋指令。 其他針腳會拒絕或忽略其所接收到的任何搜尋命令。 如此一來,剖析器會保持其所有數據流同步處理。 不過,所有輸出端子都應該實作 IMediaSeeking::GetCapabilities 和 IMediaSeeking::CheckCapabilities,以傳回篩選器的搜尋功能。 這可確保 Filter Graph Manager 會將正確的值傳回給應用程式。
IMediaPosition 介面已被棄用於篩選器。 自動化用戶端仍然需要在 Filter Graph Manager 上使用這個介面,因為 IMediaSeeking 不相容,但 Filter Graph Manager 會將所有 IMediaPosition 呼叫轉譯為 IMediaSeeking 呼叫。
相關主題