质量消息
[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayer、IMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayer、IMFMediaEngine 和 Media Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]
质量消息使用质量结构定义。 此结构包含以下成员:
- 类型: 由 QualityMessageType 枚举定义;要么是饥荒,表示筛选器接收的数据太少,要么是洪水,表示筛选器接收的数据太多。
- 比例:从 1000 基线 数据速率中请求的调整。 例如,750 表示 75%,1500 表示 150%。
- 延迟: 参考时间,指示最近样本到达的时间。 如果样本提前到达,则值为负值。
- TimeStamp: 最新示例中的时间戳。
例如,假设时间戳为 240 毫秒(ms)的示例到达呈现器(以 280 毫秒的流时间)。 呈现器创建饥荒类型的质量信息。 样本迟到 40 毫秒,因此 延迟 成员为 400000。 (所有引用时间均为 100 纳秒单位。TimeStamp 成员为 2400000。
对于 比例 成员,呈现器可以使用正在运行的平均值来计算值。 也许样本已经按时到达,此示例是一个异常。 在这种情况下,呈现器可能只请求一个小的更正。 另一方面,如果样本持续延迟,呈现器可能会请求更大的更正。
质量控制通过 IQualityControl 接口进行处理。 它包含两种方法。
实现 IQualityControl 的对象通过其 Notify 方法接收质量消息。 它可以处理消息或将消息传递给另一个对象。 如果应用程序调用对象的 SetSink 方法,该对象应将质量控制委托给指定的质量管理器。