CBaseOutputPin.Deliver 方法
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
方法 Deliver
會將媒體範例傳遞至連接的輸入針腳。
語法
virtual HRESULT Deliver(
IMediaSample *pSample
);
參數
-
pSample
-
範例 IMediaSample 介面的指標。
傳回值
傳回 HRESULT 值。 可能的值包括下表所列的值。
傳回碼 | 描述 |
---|---|
|
成功。 |
|
針腳未連線。 |
備註
這個方法會在輸入針腳上呼叫 IMemInputPin::Receive 方法。 如果IMemInputPin::ReceiveCanBlock方法傳回S_OK,則 Receive可以封鎖。
呼叫這個方法之後,請釋放範例。 輸入針腳可能會保留樣本上的參考計數,因此請勿重複使用樣本。 請一律呼叫 CBaseOutputPin::GetDeliveryBuffer 方法來取得新的範例。
呼叫此方法之前,請先保存篩選準則的重要區段。 否則,針腳可能會在方法呼叫期間中斷連線。 如果篩選準則使用背景工作執行緒來傳遞範例,當篩選準備好傳遞範例時,請保留關鍵區段。 否則,您可以在篩選準則的 IMemInputPin::Receive 方法中保存重要區段,其中篩選準則會處理範例。
背景工作執行緒可以建立潛在的死結。 當執行緒保存重要區段時,可能會等候篩選準則中的狀態變更。 同時,狀態變更可能會等待中的執行緒完成。 若要避免這種情況,狀態變更程式碼應該發出終止執行緒的事件訊號,然後等候執行緒發出信號完成。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|