Share via


CAMSchedule 類別

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

類別 CAMSchedule 會實作參考時鐘的排程器。

公用方法 Description
CAMSchedule 建構函式方法。
~CAMSchedule 解構函式方法。 虛擬。
GetAdviseCount 擷取擱置的建議要求數目。
GetNextAdviseTime 擷取下一個建議要求的時間。
AddAdvisePacket 將建議要求新增至擱置要求清單。
Unadvise 移除建議要求。
建議 分派排程指定時間或更早時間的所有要求。
GetEvent 擷取事件控制碼,用來發出下一個建議時間的變更訊號。

備註

這個協助程式物件會維護參考時鐘的建議要求清單。 CBaseReferenceClock類別會使用它來協助排程建議要求。 時鐘會以下列方式使用此物件:

  1. 時鐘會建立背景工作執行緒來處理排程。
  2. 背景工作執行緒會呼叫 CAMSchedule::GetEvent 方法,以從排程器擷取事件控制碼。 它會等候此事件,一開始會有無限逾時。
  3. 若要排程新的建議要求,時鐘會呼叫 CAMSchedule::AddAdvisePacket 方法。 建議要求可以是一次性或定期要求。 排程器會依時間順序保留要求清單。
  4. 如果要求新增至清單前端,排程器會發出事件訊號。 (清單一開始是空的,因此保證第一個要求會發出 event.)
  5. 當事件發出訊號時,背景工作執行緒會呼叫 CAMSchedule::Advise 方法,並指定目前的參考時間。 如果有任何擱置的要求已過期,排程器會分派這些要求。
  6. 建議方法會傳回下一個要求的時間。 背景工作執行緒會使用此值來計算新的逾時值。
  7. 步驟 2 6 無限期重複。
  8. 若要終止背景工作執行緒,時鐘會設定內部旗標併發出事件的訊號。

在步驟 2 中,事件會發出訊號,或等候逾時。如果事件已發出訊號,表示新要求已新增至清單前端。 背景工作執行緒必須計算新的逾時值。 另一方面,如果等候逾時,表示建議要求已到期且必須分派。 步驟 5 中對建議的呼叫會處理這兩種情況。

規格需求

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