動態格式變更

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

當兩個篩選連線時,他們同意媒體類型,其描述上游篩選將傳遞的資料格式。 在大部分情況下,媒體類型會在連線期間固定。 不過,DirectShow 對篩選準則提供有限的支援,以變更媒體類型。 篩選準則切換媒體類型時,稱為 動態格式變更。 如果您要撰寫 DirectShow 篩選準則,您應該注意動態格式變更的機制。 即使您的篩選不支援這類變更,如果另一個篩選要求新的格式,它應該會正確回應。

DirectShow 會根據篩選圖形的狀態和所需的變更類型,定義動態格式變更的數種不同機制。

  • 如果圖表停止,則針腳可以重新連線並重新分類媒體類型。 如需詳細資訊,請參閱 重新連接針腳
  • 即使圖形作用中 (執行或暫停) ,某些篩選準則仍可重新連接針腳。 如需此機制的詳細資訊,請參閱 動態重新連線

否則,如果圖表為使用中,但有問題的篩選不支援動態針腳重新連線,則有三種可能的機制可以變更格式:

  • 當輸出針腳建議對下游對等專案進行格式變更時,會使用QueryAccept (下游) ,但只有在新格式不需要較大的緩衝區時才使用。
  • 當輸入針腳建議其上游對等互連的格式變更時,會使用 QueryAccept (上游) 。 新格式的大小可以相同,或者可以更大。
  • 當輸出針腳建議對下游對等進行格式變更,而新格式需要較大的緩衝區時,就會使用ReceiveConnection

處理視訊轉譯器的格式變更