拉取模型

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

IMemInputPin 接口中,上游筛选器确定要发送的数据,并将数据推送到下游筛选器。 对于某些筛选器,拉取 模型更合适。 此处,下游筛选器从上游筛选器请求数据。 样本仍沿下游移动,从输出引脚到输入引脚,但下游筛选器启动数据流。 这种类型的连接使用 IAsyncReader 接口。

拉取模型的典型用途是在文件播放中。 例如,在 AVI 播放图中,异步文件源 筛选器执行泛型文件读取作,并将数据作为字节流传送,没有格式信息。 AVI 拆分器 筛选器读取 AVI 标头并将流分析为视频和音频示例。 AVI 拆分器可以确定它比异步文件源筛选器更好的数据,因此它使用 IAsyncReader 而不是 IMemInputPin

若要从输出引脚请求数据,输入引脚调用以下方法之一:

第一种方法是异步的,用于支持多个重叠读取。 其他是同步的。

从理论上讲,任何筛选器都可以支持 IAsyncReader,但在实践中,它专为连接到分析程序筛选器的源筛选器而设计。 分析器的行为非常类似于推送模型中的源筛选器。 暂停时,它会创建一个流式处理线程,该线程从 IAsyncReader 连接拉取数据,并将其推送到下游。 输出引脚使用 IMemInputPin,其余图形使用标准推送模型。

筛选器图 中的 数据流