CSource 類別
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
CSource類別是實作來源篩選的基類。 衍生自 CSource 的篩選包含一或多個衍生自 CSourceStream 類別的輸出針腳。 每個輸出針腳都會建立背景工作執行緒,以推送媒體範例下游。
注意
CSource類別的設計目的是要支援資料流程的推送模型。 不建議使用這個類別來建立檔案讀取器篩選。 檔案讀取器應該透過 IAsyncReader 介面支援提取模型。 如需詳細資訊,請參閱 篩選開發人員的資料流程。
受保護的成員變數 | Description |
---|---|
m_iPins | 篩選準則上的針腳數目。 |
m_paStreams | 針腳的陣列。 |
m_cStateLock | 保護篩選狀態的重要區段物件。 |
公用方法 | Description |
CSource | 建構函式方法。 |
~CSource | 解構函式方法。 |
GetPinCount | 擷取篩選準則上的針腳數目。 |
GetPin | 擷取針腳。 |
pStateLock | 擷取篩選之關鍵區段物件的指標。 |
AddPin | 將新的輸出釘選新增至篩選。 |
RemovePin | 從篩選中移除指定的針腳。 |
FindPinNumber | 擷取篩選上指定針腳的數目。 |
IBaseFilter 方法 | Description |
FindPin | 擷取具有指定識別碼的針腳。 |
備註
若要實作輸出針腳,請執行下列動作:
- 從 CSourceStream衍生類別。
- 覆寫 CSourceStream::GetMediaType 方法,而且可能是 CSourceStream::CheckMediaType 方法,此方法會驗證針腳的媒體類型。
- 實作 CBaseOutputPin::D ecideBufferSize 方法,此方法會傳回針腳的緩衝區需求。
- 實作 CSourceStream::FillBuffer 方法,以將資料填入媒體範例緩衝區。
若要實作篩選,請執行下列動作:
- 從 CSource衍生類別。
- 在建構函式中,建立衍生自 CSourceStream的一或多個輸出針腳。 針腳會自動將其建構函式方法中的篩選新增至篩選,並在解構函式方法中自行移除。
若要同步處理多個執行緒之間的篩選狀態,請呼叫 CSource::p StateLock 方法。 這個方法會傳回篩選狀態關鍵區段的指標。 使用 CAutoLock 類別來保存重要區段。 您可以從 pin 的CBasePin::m_pFilter成員變數存取pStateLock,如下所示:
CAutoLock lock(m_pFilter->pStateLock());
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|