共用方式為


釘選連線

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

篩選會透過 IPin 介面,在其針腳上連線。 輸出針腳會連線到輸入針腳。 每個針腳連線都有媒體類型,由 AM_MEDIA_TYPE 結構描述。

應用程式會藉由在篩選圖形管理員上呼叫方法來連接篩選,絕不會呼叫篩選或釘選本身的方法。 應用程式可以呼叫 IFilterGraph::ConnectDirectIGraphBuilder::Connect 方法,直接指定要連接的篩選;或者,可以使用 IGraphBuilder::RenderFile之類的圖形建置方法間接連接篩選。

若要讓連線成功,這兩個篩選準則都必須在篩選圖形中。 應用程式可以呼叫 IFilterGraph::AddFilter 方法,將篩選新增至圖形。 篩選圖表管理員也可以將篩選新增至圖表。 新增篩選時,Filter Graph 管理員會呼叫篩選的 IBaseFilter::JoinFilterGraph 方法來通知篩選。

連線程式的一般大綱如下:

  1. Filter Graph Manager 會在輸出釘選上呼叫 IPin::Connect ,並將指標傳遞至輸入針腳。
  2. 如果輸出針腳接受連線,它會在輸入針腳上呼叫 IPin::ReceiveConnection
  3. 如果輸入針腳也接受連線,則連線嘗試會成功,並連接針腳。

某些針腳可以在篩選作用中時中斷連線並重新連線。 這種類型的重新連線稱為 動態 重新連線。 如需詳細資訊,請參閱 動態圖形建置。 不過,大部分篩選都不支援動態重新連線。

篩選通常會依下游順序連接,換句話說,篩選準則的輸入針腳會在輸出針腳之前連接。 篩選準則應該一律支援此連線順序。 有些篩選也會以相反的順序支援連接,也就是先輸出針腳,後面接著輸入針腳。 例如,在連接 MUX 篩選器的輸入針腳之前,可能會先將 MUX 篩選器的輸出針腳連接到檔案寫入器篩選。

呼叫針腳的 ConnectReceiveConnection 方法時,針腳必須確認它可以支援連線。 詳細資料取決於特定篩選準則。 最常見的工作包括:

  • 檢查媒體類型是否可接受
  • 交涉配置器
  • 查詢其他針腳以取得必要的介面。