Класс CRefTime
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Класс CRefTime
является вспомогательным классом для управления временем ссылки.
Эталонное время — это единица времени, представленная в 100-наносекундных единицах. Этот класс использует тот же макет данных, что и тип данных REFERENCE_TIME , но добавляет некоторые методы и операторы, обеспечивающие сравнение, преобразование и арифметические функции. Дополнительные сведения о эталонном времени см. в разделе Время и часы в DirectShow.
Открытые переменные-члены | Описание |
---|---|
m_time | Задает значение REFERENCE_TIME . |
Открытые методы | Описание |
CRefTime | Метод конструктора. |
GetUnits | Извлекает время отсчета в единицах 100 наносекунд. |
Миллисеки | Преобразует время ссылки в миллисекундах. |
Операторы | Описание: |
operator REFERENCE_TIME() | Приводит объект к типу данных REFERENCE_TIME . |
operator= | Назначает новое время ссылки. |
operator+= | Добавляет два ссылочных времени. |
operator = | Вычитает одно время ссылки из другого. |
Комментарии
Использование этого класса может привести к потенциальной ловушке. Если применить оператор += с объектом CRefTime в качестве левого операнда и переменной типа LONG в качестве правого операнда, компилятор неявно приведет правый операнд в объект CRefTime . Это приведение использует конструктор CRefTime , который преобразует миллисекунда в REFERENCE_TIME единиц; в результате правый операнд умножается на 10 000:
CRefTime rt; // rt.m_time is 0.
LONG val = 20;
rt += val; // Coerce val to CRefTime, rt.m_time is now 200,000.
Однако то же самое не происходит с помощью оператора +:
CRefTime rt; // rt.m_time is 0.
LONG val = 20;
rt = rt + val; // CRefTime, rt.m_time is 20.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|