共用方式為


CBaseOutputPin.Deliver 方法

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

方法 Deliver 會將媒體範例傳遞至連接的輸入針腳。

語法

virtual HRESULT Deliver(
   IMediaSample *pSample
);

參數

pSample

範例 IMediaSample 介面的指標。

傳回值

傳回 HRESULT 值。 可能的值包括下表所列的值。

傳回碼 描述
S_OK
成功。
VFW_E_NOT_CONNECTED
針腳未連線。

備註

這個方法會在輸入針腳上呼叫 IMemInputPin::Receive 方法。 如果IMemInputPin::ReceiveCanBlock方法傳回S_OK,則 Receive可以封鎖。

呼叫這個方法之後,請釋放範例。 輸入針腳可能會保留樣本上的參考計數,因此請勿重複使用樣本。 請一律呼叫 CBaseOutputPin::GetDeliveryBuffer 方法來取得新的範例。

呼叫此方法之前,請先保存篩選準則的重要區段。 否則,針腳可能會在方法呼叫期間中斷連線。 如果篩選準則使用背景工作執行緒來傳遞範例,當篩選準備好傳遞範例時,請保留關鍵區段。 否則,您可以在篩選準則的 IMemInputPin::Receive 方法中保存重要區段,其中篩選準則會處理範例。

背景工作執行緒可以建立潛在的死結。 當執行緒保存重要區段時,可能會等候篩選準則中的狀態變更。 同時,狀態變更可能會等待中的執行緒完成。 若要避免這種情況,狀態變更程式碼應該發出終止執行緒的事件訊號,然後等候執行緒發出信號完成。

規格需求

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

另請參閱

CBaseOutputPin 類別