IAMPushSource 介面 (strmif.h)
[與此頁面 相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式代碼,以使用新的 API。]
介面 IAMPushSource
會同步處理轉譯即時來源的篩選圖形。 即時來源是即時串流數據的來源,例如擷取裝置或網路廣播。
串流實時數據的來源篩選應該在其輸出釘選上公開此介面。 一般而言,應用程式不應該在此介面上呼叫 方法;請改用 IAMGraphStreams 介面。
繼承
IAMPushSource 介面繼承自 IAMLatency。 IAMPushSource 也有下列類型的成員:
方法
IAMPushSource 介面具有這些方法。
IAMPushSource::GetMaxStreamOffset GetMaxStreamOffset 方法會擷取篩選可支援的最大數據流位移。 |
IAMPushSource::GetPushSourceFlags GetPushSourceFlags 方法會擷取描述篩選行為的旗標組合。 |
IAMPushSource::GetStreamOffset GetStreamOffset 方法會擷取篩選在產生時間戳時所使用的位移。 |
IAMPushSource::SetMaxStreamOffset SetMaxStreamOffset 方法會指定篩選圖形中允許的數據流位移。 |
IAMPushSource::SetPushSourceFlags SetPushSourceFlags 方法會設定指定篩選行為的旗標。 目前,應用程式不應該呼叫這個方法,因為不支援要求旗標,而且應用程式不應該覆寫篩選所設定的旗標。 |
IAMPushSource::SetStreamOffset SetStreamOffset 方法會設定此篩選所產生的時間戳位移。 |
備註
Filter Graph 管理員會使用此介面上的 方法來解決轉譯即時來源時經常發生的兩個問題:
- 延遲:當篩選圖表包含多個實時來源時,來源通常會有不同的延遲,這可能會導致它們無法同步。例如,如果音訊擷取的延遲時間比視訊擷取更長,除非圖表補償差異,否則音訊會落後視訊。
- 速率比對:當轉譯器篩選連接到即時來源時,它必須調整其數據耗用量率,以符合來源篩選的生產速率。 否則,如果轉譯器執行的速度比來源) 快,則數據 (可能會有間距,否則如果來源執行速度較快) ,則數據可能會卸除 (。
IAMPushSource
介面的每個輸出針腳上呼叫IAMLatency::GetLatency,並判斷圖形中的延遲上限。 然後它會在任何小於最大延遲的篩選上呼叫 IAMPushSource::SetStreamOffset ,以便調整它們由正確位移所產生的時間戳。
若要執行速率比對,篩選圖表必須判斷轉譯器篩選是否可以與來源篩選條件比對時鐘速率。 IAMPushSource::GetPushSourceFlags 方法會傳回一組旗標,指出轉譯器是否安全符合來源的速率。
這些問題不會影響擷取至檔案。 檔案 寫入器 篩選器依賴傳入範例上的時間戳來正確寫入檔案;然後,串流會在播放期間同步處理。 就速率比對而言,數據一律會儘快寫入檔案。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | strmif.h (包含 Dshow.h) |