註冊篩選的指導方針

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

篩選登錄資訊會決定 Filter Graph Manager 在 Intelligent Connect期間的運作方式。 因此,它會影響針對 DirectShow 撰寫的每個應用程式,而不會影響將使用您篩選準則的應用程式。 您應該遵循下列指導方針,確定您的篩選行為正確。

  1. 您需要登錄中的篩選資料嗎? 對於許多自訂篩選,篩選對應器或系統裝置列舉值都看不到篩選。 只要您註冊 DLL,您的應用程式就可以使用 CoCreateInstance建立篩選。 在此情況下,只要省略處理站範本 中的 AMOVIESETUP_FILTER 結構即可。 (其中一個缺點是您的篩選不會顯示在 GraphEdit 中。若要解決此問題,您可以使用 IFilterMapper2::CreateCategory 方法建立私人「測試」類別。您應該只針對偵錯 builds.) 執行此動作

  2. 選擇正確的篩選類別。 預設的 「DirectShow 篩選」類別適用于一般用途篩選。 如有需要,請在更具體的類別中註冊您的篩選。 當 IFilterMapper2搜尋篩選時,它會忽略其優點為MERIT_DO_NOT_USE或更少的任何類別。 不適用於正常播放的類別有低優點。

  3. 請避免在針腳的 AMOVIESETUP_MEDIATYPE 資訊中指定MEDIATYPE_None、MEDIASUBTYPE_None或GUID_Null。 IFilterMapper2 會將這些視為萬用字元,這可能會使圖形建置程式變慢。

  4. 選擇可能的最低優點值。 以下是一些指導方針:

    濾波器類型 建議的優點
    預設轉譯器 MERIT_PREFERRED。 不過,對於標準媒體類型,自訂轉譯器絕對不應該是預設值。
    非預設轉譯器 MERIT_DO_NOT_USE或MERIT_UNLIKELY
    多工 MERIT_DO_NOT_USE
    解碼器 MERIT_NORMAL
    Spitter,剖析器 MERIT_NORMAL或更低
    特殊用途篩選;應用程式直接建立的任何篩選 MERIT_DO_NOT_USE
    擷取 MERIT_DO_NOT_USE
    「Fallback」 篩選;例如, 色彩空間轉換器篩選 MERIT_UNLIKELY

     

    如果您要提供篩選MERIT_DO_NOT_USE優點,請考慮是否需要在第一個位置註冊這項資訊。 (請參閱專案 1.)

  5. 請勿在接受 24 位 RGB 的 「DirectShow Filter」 類別中註冊篩選。 您的篩選會干擾色彩空間轉換器篩選準則。

如何註冊 DirectShow 篩選