CPullPin 類別
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
類別 CPullPin
支援透過 IAsyncReader 介面提取資料的輸入針腳。 如果您要實作使用提取模型從上游篩選要求資料的篩選,請使用這個類別。 如需詳細資訊,請參閱篩選圖形和提取模型中的資料流程。
這個類別不會衍生自 CBasePin 或實作 IPin 介面,而某些方法名稱與 IPin衝突,因此最好是做為釘選內的協助程式物件。 若要使用此類別,請執行下列動作:
- 從
CPullPin
衍生協助程式類別,並從 CBasePin衍生輸入釘選類別。 將 物件的實例CPullPin
宣告為 pin 類別的成員變數。 - 覆寫 CBasePin::CheckConnect 方法來呼叫 CPullPin::Connect。 此方法會查詢 IAsyncReader的其他針腳。
- 覆寫 CBasePin::BreakConnect 方法來呼叫 CPullPin::D isconnect。
- 覆寫 CBasePin::Active 方法以呼叫 CPullPin::Active。 這個方法會啟動背景工作執行緒,從上游篩選準則提取樣本。 當針腳連線時,您可以指定是否要背景工作執行緒提出非同步或同步讀取要求。
- 覆寫 CBasePin::Inactive 方法以呼叫 CPullPin::Inactive。 這個方法會關閉背景工作執行緒。
- 實作純虛擬 CPullPin::Receive 方法來處理傳入的範例,並將其傳遞至下游。
- 若要設定停止和開始位置,或搜尋資料流程,請呼叫 CPullPin::Seek 方法。 這個方法會暫停背景工作執行緒,並排清篩選圖形。
- 實作純虛擬 CPullPin::EndOfStream、 CPullPin::BeginFlush和 CPullPin::EndFlush 方法,如這些方法的備註中所述。
- 實作純虛擬 CPullPin::OnError 方法來處理串流錯誤。
公用成員變數 | Description |
---|---|
m_pAlloc | 記憶體配置 器的 IMemAllocator 介面指標。 |
公用方法 | Description |
使用中 | 建立從輸出釘選提取資料的背景工作執行緒。 |
AlignDown | 將值截斷為指定的對齊界限。 |
AlignUp | 將值四捨五入至指定的對齊界限。 |
連接 | 完成輸出釘選的連接。 |
CPullPin | 建構函式方法。 |
~CPullPin | 解構函式方法。 虛擬。 |
DecideAllocator | 與輸出釘選交涉配置器。 虛擬。 |
中斷連線 | 使用輸出釘選將連接擷取。 |
持續時間 | 擷取資料流程的持續時間。 |
GetReader | 傳回輸出針腳 IAsyncReader 介面的指標。 |
非使用中 | 關閉從輸出釘選提取資料的背景工作執行緒。 |
Seek | 設定資料流程的開始和停止位置。 |
純虛擬方法 | Description |
BeginFlush | 通知擁有篩選以排清下游篩選。 |
EndFlush | 通知擁有篩選以結束排清作業。 |
EndOfStream | 在 物件傳遞最後一個範例之後呼叫。 |
OnError | 如果在串流期間發生錯誤,則呼叫 。 |
接收 | 當 物件從輸出釘選收到媒體範例時呼叫。 |
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|