iamPushSource 接口 (strmif.h)
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
接口 IAMPushSource
同步呈现实时源的筛选器图。 实时源是实时流式传输数据的源,例如捕获设备或网络广播。
流式传输实时数据的源筛选器应在其输出引脚上公开此接口。 通常,应用程序不应在此接口上调用方法;请改用 IAMGraphStreams 接口。
继承
IAMPushSource 接口继承自 IAMLatency。 IAMPushSource 还具有以下类型的成员:
方法
IAMPushSource 接口具有以下方法。
IAMPushSource::GetMaxStreamOffset GetMaxStreamOffset 方法检索筛选器可以支持的最大流偏移量。 |
IAMPushSource::GetPushSourceFlags GetPushSourceFlags 方法检索描述筛选器行为的标志的组合。 |
IAMPushSource::GetStreamOffset GetStreamOffset 方法检索筛选器在生成时间戳时使用的偏移量。 |
IAMPushSource::SetMaxStreamOffset SetMaxStreamOffset 方法指定在筛选器图中允许的流偏移量。 |
IAMPushSource::SetPushSourceFlags SetPushSourceFlags 方法设置指定筛选器行为的标志。 目前,应用程序不应调用此方法,因为不支持请求标志,并且应用程序不应替代筛选器设置的标志。 |
IAMPushSource::SetStreamOffset SetStreamOffset 方法设置此筛选器生成的时间戳的偏移量。 |
注解
筛选器关系图管理器使用此接口上的方法来解决呈现实时源时经常发生的两个问题:
- 延迟:当筛选器图包含多个实时源时,源通常具有不同的延迟,这可能导致它们不同步。例如,如果音频捕获的延迟时间比视频捕获更长,则音频将滞后于视频,除非图形补偿差异。
- 速率匹配:当呈现器筛选器连接到实时源时,它必须调整其数据消耗速率以匹配源筛选器的生产速率。 否则,如果呈现器运行速度比源) 快,则数据 (中可能存在间隙;如果源) 运行得更快,则数据可能会被删除 (。
IAMPushSource
接口的每个输出引脚上调用 IAMLatency::GetLatency,并确定图中的最大延迟。 然后,它会在延迟小于最大延迟的任何筛选器上调用 IAMPushSource::SetStreamOffset ,以便调整按正确的偏移量生成的时间戳。
若要执行速率匹配,筛选器图需要确定呈现器筛选器是否可以将时钟速率与源筛选器匹配。 IAMPushSource::GetPushSourceFlags 方法返回一组标志,指示呈现器将速率与源匹配是否安全。
这些问题不会影响捕获到文件。 文件编写器筛选器依赖于传入示例上的时间戳来正确写入文件;然后,在播放期间同步流。 至于速率匹配,数据始终以尽可能快的速度写入文件。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |