CBaseReferenceClock 類別

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

cbasereferenceclock 類別階層

類別 CBaseReferenceClock 會實作參考時鐘。

受保護的成員變數 Description
m_pSchedule 處理時鐘排程工作的CAMSchedule物件。
保護方法 Description
~CBaseReferenceClock 解構函式方法。
公用方法 Description
CBaseReferenceClock 建構函式方法。
GetPrivateTime 從時鐘擷取即時。
SetTimeDelta 調整內部時鐘時間。
GetSchedule 擷取時鐘排程物件的指標。
TriggerThread 喚醒處理排程的背景工作執行緒。
IReferenceClock 方法 Description
GetTime 擷取目前的參考時間。
建議時間 建立一次性建議要求。
AdvisePeriodic 建立定期建議要求。
Unadvise 移除擱置的建議要求。
IReferenceClockTimerControl 方法 Description
GetDefaultTimerResolution 傳回參考時鐘計時器的目前解析度。
SetDefaultTimerResolution 設定參考時鐘計時器的解析度。
輔助函式 Description
ConvertToMilliseconds 將參考時間轉換為毫秒。

備註

這個類別會實作支援IReferenceClock 和 IReferenceClockTimerControl介面的參考時鐘。 例如,如果篩選準則可以提供篩選圖形的參考時鐘,則可以藉由存取硬體裝置來實作時鐘。

物件 CBaseReferenceClock 會維護兩個不同的時間值:

內部時鐘在短時間內回溯執行是有效的。 例如,如果時鐘向前漂移,篩選準則可以向後調整。 (請參閱 CBaseReferenceClock::SetTimeDelta.) GetTime 方法會使用 GetPrivateTime所報告的時間值。 不過,參考時間會以單調方式增加;換句話說,它永遠不會向後執行。 因此,如果內部時鐘向後執行, GetTime 會繼續報告舊時間,直到內部時鐘趕上為止。

例如,這兩種方法可能會傳回下列序列:

GetPrivateTime: 105, 106, 103, 104, 105, 106, 107, 108
GetTime:        105, 106, 106, 106, 106, 106, 107, 108

在第三個時鐘刻度上,內部時鐘會往回跳至 103。 GetTime方法會繼續報告 106,直到內部時鐘趕上為止。

根據預設, GetPrivateTime 會透過呼叫 timeGetTime 函式傳回系統時間。 從外部裝置提供參考時鐘的篩選準則可以執行下列其中一項:

  • 覆寫 GetPrivateTime 以從裝置傳回時間。
  • 監視裝置時間與系統時間之間的差異,並呼叫 SetTimeDelta 進行更正。

這個類別會使用 CAMSchedule 物件來處理建議要求的排程。 如需詳細資訊,請參閱 CAMSchedule 類別的檔。

規格需求

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