质量消息

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

质量消息是使用 质量 结构定义的。 此结构包含以下成员:

  • 类型:QualityMessageType 枚举定义;指示筛选器接收的数据太少的“饥荒”或“洪水”,指示筛选器接收的数据过多。
  • 比例: 请求的数据速率调整,基线为 1000。 例如,750 表示 75%, 1500 表示 150%。
  • 晚: 指示最新样本到达的延迟时间的参考时间。 如果样本提前到达,则值为负值。
  • 时间 戳: 最新示例中的时间戳。

例如,假设时间戳为 240 毫秒 (毫秒的样本) 在流时间 280 毫秒到达呈现器。 呈现器创建类型为 Famine 的质量消息。 样本延迟 40 毫秒到达,因此 Late 成员为 400000。 (所有引用时间均以 100 纳秒为单位。) TimeStamp 成员为 2400000。

对于 比例 成员,呈现器可能会使用运行平均值来计算值。 也许样本已按时到达,而此示例是异常情况。 在这种情况下,呈现器可能只请求一个小的更正。 另一方面,如果样本一直延迟,呈现器可能会请求更大的更正。

质量控制通过 IQualityControl 接口进行处理。 它包含两种方法。

  • 通知:发送质量消息。
  • SetSink:指定自定义质量管理器。

实现 IQualityControl 的对象通过其 Notify 方法接收质量消息。 它可以处理消息或将消息传递给另一个对象。 如果应用程序调用对象的 SetSink 方法,则对象应将质量控制委托给指定的质量管理器。