CBaseStreamControl 類別
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
這個類別會實作輸入和輸出針腳的 IAMStreamControl 介面。 它可讓您控制在篩選上啟動和停止個別釘選。 支援 IAMStreamControl 的針腳應該繼承自這個基類。 以下是輸入針腳的一般宣告:
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
請務必覆寫 NonDelegatingQueryInteface 以公開 IAMStreamControl。 如需詳細資訊,請參閱 如何實作 IUnknown。
公用方法 | Description |
---|---|
CBaseStreamControl | 建構函式方法。 |
~CBaseStreamControl | 解構函式方法。 |
CheckStreamState | 判斷應該傳遞或捨棄媒體範例。 |
沖洗 | 通知基類針腳已啟動或停止排清。 |
NotifyFilterState | 在篩選準則的狀態變更時通知針腳。 |
SetFilterGraph | 指定資料流程控制事件的事件接收。 |
SetSyncSource | 通知目前參考時鐘的基類。 |
IAMStreamControl 方法 | Description |
GetInfo | 擷取目前資料流程控制設定的相關資訊,包括開始和停止時間。 |
StartAt | 通知釘選何時開始傳遞資料。 |
StopAt | 通知釘選何時停止傳遞資料。 |
備註
這個類別需要針腳和擁有篩選準則,以在發生各種事件時通知類別,例如聯結圖形的篩選或接收新的參考時鐘。 您應該呼叫下列類別方法:
- 在篩選的 IMediaFilter::SetSyncSource 方法中,呼叫 CBaseStreamControl::SetSyncSource 方法。 這個方法會通知目前參考時鐘的 類別。
- 在篩選的 CBaseFilter::JoinFilterGraph 方法中,呼叫 CBaseStreamControl::SetFilterGraph 方法。 這個方法會為類別提供 Filter Graph Manager 的指標,讓類別可以傳送正確的資料流程控制事件。
- 每當篩選準則將狀態 (變更為執行、暫停或停止) 時,請呼叫 CBaseStreamControl::NotifyFilterState 方法。
- 在針腳的 IPin::BeginFlush 和 IPin::EndFlush 方法中,呼叫 CBaseStreamControl::Flushing 方法。
類別 CBaseStreamControl
會使用篩選圖形的參考時鐘來判斷篩選應該傳遞的樣本,以及應該捨棄的樣本。 在釘選的 IMemInputPin::Receive 方法中,使用連入媒體範例的指標呼叫 CBaseStreamControl::CheckStreamState 方法。 如果方法傳回值STREAM_FLOWING,請傳遞範例下游。 否則,請捨棄它。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|