CRefTime 类

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

creftime 类层次结构

CRefTime 是用于管理引用时间的帮助程序类。

参考时间是以 100 纳秒为单位表示的时间单位。 此类与 REFERENCE_TIME 数据类型共享相同的数据布局,但添加了一些提供比较、转换和算术函数的方法和运算符。 有关参考时间的详细信息,请参阅 DirectShow 中的时间和时钟

公共成员变量 说明
m_time 指定 REFERENCE_TIME 值。
公共方法 说明
CRefTime 构造函数方法。
GetUnits 检索以 100 纳秒为单位的参考时间。
Millisecs 将引用时间转换为毫秒。
运算符 说明
operator REFERENCE_TIME () 将 对象强制转换为 REFERENCE_TIME 数据类型。
operator= 分配新的引用时间。
operator+= 添加两个引用时间。
operator = 从一个引用时间减去另一个引用时间。

备注

使用此类存在潜在的缺陷。 如果将 CRefTime 对象作为左操作数,将 LONG 类型的变量作为右操作数应用 += 运算符,编译器会将右操作数隐式强制转换为 CRefTime 对象。 此强制转换使用将毫秒转换为REFERENCE_TIME单位的 CRefTime 构造函数;因此,右操作数乘以 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.

要求

要求
标头
Reftime.h (包括 Streams.h)

Strmbase.lib (零售版本) ;
Strmbasd.lib (调试生成)