CBaseReferenceClock 類別
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
類別 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::GetPrivateTime 方法會傳回時鐘所保留的實際時間。
- 在外部, CBaseReferenceClock::GetTime 方法會傳回篩選圖形的參考時間。
內部時鐘在短時間內回溯執行是有效的。 例如,如果時鐘向前漂移,篩選準則可以向後調整。 (請參閱 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 類別的檔。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|