IAMStreamControl::StopAt 方法 (strmif.h)
[與此頁面 相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式代碼,以使用新的 API。]
方法 StopAt
會通知針腳何時停止傳遞數據。
語法
HRESULT StopAt(
[in] const REFERENCE_TIME *ptStop,
[in] BOOL bSendExtra,
[in] DWORD dwCookie
);
參數
[in] ptStop
REFERENCE_TIME值的指標,指定針腳何時應該停止傳遞數據。 如果值為 MAXLONGLONG (0x7FFFFFFFFFFFFFFF) ,此方法會取消任何先前的停止要求。 如果 psStop 為 NULL,針腳會立即停止。
對於預覽釘選,只有 NULL 和 MAXLONGLONG 值有效,因為預覽釘選不會為它們提供的範例時間戳。
[in] bSendExtra
指定布爾值,指出是否要在排定的停止時間之後傳送額外的樣本。 如果 為 TRUE,針腳會傳送一個額外的樣本。
[in] dwCookie
指定要連同開始通知一起傳送的值。 請參閱<備註>。
傳回值
如果方法成功,傳回值會S_OK。 否則,會傳回 HRESULT 值,指出失敗的原因。
備註
如果 dwCookie 參數不是零,針腳會在停止傳遞數據時傳送 EC_STREAM_CONTROL_STOPPED 事件。 第一個事件參數是針腳 IPin 介面的指標,而第二個則是 dwCookie 的值。 如果 ptStop 為 NULL 或 MAXLONGLONG,則不會傳送任何事件,而且會忽略 dwCookie 的值。
在視訊擷取中,您通常會在擷取篩選器的輸出釘選和多任務器的輸入針腳上呼叫這個方法。 應用程式應該等候多任務器的停止事件。 這可確保擷取篩選器傳送正確的畫面數,同時保證所有畫面都到達多任務器。 此外,將擷取針腳的 bSendExtra 參數設定為 TRUE ,但多任務器針腳為 FALSE 。 這會導致擷取篩選器傳送另一個畫面格。 多任務器依賴擷取釘選中的時間戳,因此如果未傳送額外的畫面格,多任務器將會無限期等候停止時間。 當多任務器收到額外的框架時,它會捨棄它。
這個方法會處理下列界限條件:
- 如果停止時間落在樣本的開始和停止時間之間,針腳會傳遞該樣本。
- 如果開始時間等於停止時間,針腳會傳遞一個範例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | strmif.h (包含 Dshow.h) |
程式庫 | Strmiids.lib |