[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
類別 CBaseFilter 是實作篩選的抽象類別。 若要使用此類別實作篩選,您必須至少執行下列步驟:
- 從
CBaseFilter衍生新的類別。 - 包含定義篩選上釘選的成員變數。 針腳必須繼承自 CBasePin 類別。
- 覆寫純虛擬方法 CBaseFilter::GetPin,以擷取篩選上的針腳。
- 覆寫純虛擬方法 CBaseFilter::GetPinCount,以擷取針腳數目。
- 提供產生、處理或轉譯媒體範例的方法。
數個基類衍生自 CBaseFilter ,包括 CSource、 CBaseRenderer和 CTransformFilter。 使用下列其中一個特製化類別來實作篩選通常比較容易,而不是直接使用 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 | 從登錄中移除篩選。 |
規格需求
| 需求 | 值 |
|---|---|
| 標頭 |
|
| 程式庫 |
|