Demux 时钟行为

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

在推送模式下,MPEG-2 Demultiplexer(demux)公开 IReferenceClock 接口。 它充当实时源,因此默认将其选择为图形引用时钟;有关详细信息,请参阅 实时源

  • 对于传输流,demux 将其时钟同步到对应于应用程序最近映射的音频或视频流的RF 流。 在内部,demux 跟踪 PAT 和 PMT 表。 当应用程序将基本流 PID 映射到输出引脚时,demux 会查找该 PID 的RF 流并使用该RF 流。 (目前,应用程序无法直接指定RF PID。
  • 对于程序流,demux 将其时钟同步到 SCR 流。

将筛选器时钟同步到RF或 SCR 流可防止数据溢出或,如果图形时钟因流时钟而异,则可能会导致数据溢出或下溢。 demux 还会将 PES PTS 值转换为 DirectShow 引用时间,并使用这些值对媒体示例进行时间戳。 时间戳适用于下一帧边界;不能保证帧边界与媒体示例的开头保持一致。

该解压器保证时间戳单调增加。 例如,这意味着,如果传输流包含一个段,例如使用与主程序不同的时钟创建的广告,则 demux 将调整演示时间戳,以隐藏下游筛选器的时间中断性。

使用 MPEG-2 Demultiplexer