质量消息

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

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

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

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

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

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

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

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