Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция, связанная с этой страницей 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 .
Требования
| Требование | Значение |
|---|---|
| Заголовок |
|
| Библиотека |
|