Класс CBaseReferenceClock
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Класс CBaseReferenceClock
реализует ссылочные часы.
Защищенные переменные-члены | Описание |
---|---|
m_pSchedule | Объект CAMSchedule, обрабатывающий задачи планирования для часов. |
Защищенные методы | Описание |
~CBaseReferenceClock | Метод деструктора. |
Открытые методы | Описание |
CBaseReferenceClock | Метод конструктора. |
GetPrivateTime | Извлекает данные реального времени из часов. |
SetTimeDelta | Настраивает внутреннее время часов. |
GetSchedule | Извлекает указатель на объект планирования часов. |
TriggerThread | Активирует рабочий поток, обрабатывающий планирование. |
Методы IReferenceClock | Описание |
GetTime | Извлекает текущее время ссылки. |
AdviseTime | Создает одноразовый запрос на консультирование. |
AdvisePeriodic | Создает периодический запрос на получение рекомендаций. |
Отмена отмены | Удаляет ожидающий запрос на получение рекомендаций. |
Методы IReferenceClockTimerControl | Описание |
GetDefaultTimerResolution | Возвращает текущее разрешение таймера ссылочных часов. |
SetDefaultTimerResolution | Задает разрешение таймера ссылочных часов. |
Вспомогательные функции | Описание |
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 .
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|