CBaseFilter 類別

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

cbasefilter 類別階層

類別 CBaseFilter 是實作篩選的抽象類別。 若要使用此類別實作篩選,您必須至少執行下列步驟:

  • CBaseFilter 衍生新的類別。
  • 包含定義篩選上釘選的成員變數。 針腳必須繼承自 CBasePin 類別。
  • 覆寫純虛擬方法 CBaseFilter::GetPin,以擷取篩選上的針腳。
  • 覆寫純虛擬方法 CBaseFilter::GetPinCount,以擷取針腳數目。
  • 提供產生、處理或轉譯媒體範例的方法。

數個基類衍生自 CBaseFilter ,包括 CSourceCBaseRendererCTransformFilter。 使用下列其中一個特製化類別來實作篩選通常比較容易,而不是直接使用 CBaseFilter

受保護的成員變數 Description
m_State 篩選準則的目前狀態。
m_pClock 篩選參考時鐘的指標。
m_tStart 對應至資料流程時間 0 的參考時間。
m_clsid 篩選準則 (CLSID) 類別識別碼。
m_pLock 用來序列化狀態變更的重要區段指標。
m_pName 篩選名稱。
m_pGraph 篩選圖形管理員的指標。
m_pSink 篩選圖形管理員上 IMediaEventSink 介面的指標。
m_PinVersion 此篩選上目前版本的針腳集。
公用方法 Description
CBaseFilter 建構函式方法。
~ CBaseFilter 解構函式方法。
StreamTime 擷取目前的資料流程時間。 虛擬。
IsActive 判斷篩選目前為作用中, (執行中或暫停) 。
IsStopped 判斷篩選目前是否停止。
NotifyEvent 將事件通知傳送至篩選圖形管理員。
GetFilterGraph 擷取篩選圖形管理員的指標。
ReconnectPin 中斷現有的針腳連線,並使用指定的媒體類型將它重新連線到相同的針腳。
GetPinVersion 擷取此篩選上一組針腳的版本號碼。 虛擬。
IncrementPinVersion 遞增一組針腳上的版本號碼。
GetSetupData 擷取篩選的註冊資料。 虛擬。
純虛擬方法 Description
GetPinCount 擷取針腳數目。
GetPin 擷取針腳。
IPersist 方法 Description
GetClassID 擷取類別識別碼。
IMediaFilter 方法 Description
GetState 擷取篩選 (執行、停止或暫停) 的狀態。
SetSyncSource 設定篩選的參考時鐘。
GetSyncSource 擷取篩選所使用的參考時鐘。
停止 停止篩選。
暫停 暫停篩選。
執行 執行篩選。
IBaseFilter 方法 Description
EnumPins 列舉此篩選上的針腳。
FindPin 擷取具有指定識別碼的針腳。
QueryFilterInfo 擷取篩選的相關資訊。
JoinFilterGraph 通知篩選已聯結或離開篩選圖形。
QueryVendorInfo 擷取包含廠商資訊的字串。
IAMovieSetup 方法 Description
註冊 將篩選新增至登錄。
Unregister 從登錄中移除篩選。

規格需求

需求
標頭
Amfilter.h (包含 Streams.h)
程式庫
Strmbase.lib (零售組建) ;
Strmbasd.lib (偵錯組建)