篩選基類簡介
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
本文說明 Microsoft DirectShow 基類庫。 此程式庫適用于篩選開發人員,但應用程式寫入器可能會發現一些協助程式類別和偵錯公用程式很有用。 不過,DirectShow 程式設計不需要基類程式庫。
下列各節摘要說明程式庫中最重要的基類。
COM 物件類別
下列類別支援建立 COM 物件:
類別 | 描述 |
---|---|
CBaseObject | 基底物件類別。 |
CUnknown | 實作 IUnknown 介面。 |
大部分的 DirectShow 類別都衍生自 CBaseObject。 這個類別會藉由在執行時間保留 DLL 中所有使用中物件的計數,來提供偵錯協助。 在偵錯組建中,當物件計數大於零時,DLL 會判斷提示它是否已卸載。 這可讓您更輕鬆地追蹤參考計數問題所造成的流失。
支援 COM 介面的所有基類都衍生自 CUnknown,其繼承 CBaseObject。 CUnknown類別支援參考計數、QueryInterface和匯總。 如需詳細資訊,請參閱 如何實作 IUnknown。
篩選和釘選類別
下列類別支援建立 DirectShow 篩選和釘選物件:
類別 | 描述 |
---|---|
CBaseFilter | 篩選準則的基類。 實作 IBaseFilter 介面。 |
CBasePin | 針腳的基類。 實作 IPin 和 IQualityControl 介面。 |
CBaseInputPin | 使用本機記憶體傳輸之輸入針腳的基類。 實作 IMemInputPin 介面。 這個類別衍生自 CBasePin。 |
CBaseOutputPin | 使用 IMemInputPin 連線之輸出針腳的基類。 這個類別衍生自 CBasePin。 |
下列類別適用于建立更特製化的篩選類型:
類別 | 描述 |
---|---|
CSource | 來源篩選的基類。 這個類別是專為建立推送來源而設計。 它不適用於提取來源,例如檔案讀取器。 若要建立此類別的輸出針腳,請使用 CSourceStream 類別。 |
CTransformFilter | 轉換篩選的基類。 這個類別會對資料執行複本。 此類別的針腳為 CTransformInputPin 和 CTransformOutputPin。 |
CTransInPlaceFilter | 不會複製資料的轉換篩選的基類。 這個類別會在下游傳遞之前,直接在輸入資料上執行資料處理。 此類別的針腳為 CTransInPlaceInputPin 和 CTransInPlaceOutputPin。 |
CVideoTransformFilter | 視訊轉換篩選的基類。 這個類別衍生自 CTransformFilter ,並新增對品質保證的支援。 |
CBaseRenderer | 轉譯器篩選的基類。 此類別的輸入針腳是 CRendererInputPin。 |
CBaseVideoRenderer | 視訊轉譯器的基類。 這個類別衍生自 CBaseRenderer。 |
若要使用這些類別,您必須衍生自己的類別,並撰寫程式碼以支援您篩選特有的功能。 基類更特製化,您必須在衍生類別中撰寫的程式碼越少。
Helper 物件
下列類別會實作篩選和釘選所使用的協助程式物件。 大部分的類別都可以使用,而不需要從中衍生新的類別:
類別 | 描述 |
---|---|
CPullPin | 剖析器篩選上輸入針腳的協助程式物件。 支援使用提取來源的 IAsyncReader 連線。 |
COutputQueue | 輸出釘選的協助程式物件,會將範例排入佇列,以在背景工作執行緒上傳遞。 |
CSourceSeeking | 使用一個輸出釘選在來源篩選上實作搜尋的說明物件。 (這個類別不是針對具有多個針腳的篩選所設計,例如 parsers.) |
CEnumPins | 列舉值物件,用於列舉篩選上的釘選。 實作 IEnumPins 介面。 |
CEnumMediaTypes | 列舉值物件,用於列舉針腳上的慣用媒體類型。 實作 IEnumMediaTypes 介面。 |
CMemAllocator | 記憶體配置器物件。 實作 IMemAllocator 介面。 |
CMediaSample | 媒體範例物件。 實作 IMediaSample2 介面。 |
CBaseReferenceClock | 參考時鐘的基類。 實作 IReferenceClock 介面。 |
CMediaType | 用來操作 AM_MEDIA_TYPE 結構的協助程式物件。 |