高级拓扑生成

本部分介绍用于生成拓扑的一些高级技术。 如果想要更好地控制发送到媒体会话的拓扑,可以使用这些技术。

由于这些技术适用于超出标准拓扑加载程序提供的功能的方案,因此许多详细信息将取决于应用程序的特定要求。 因此,本部分围绕较小的子任务(而不是完整的端到端方案)松散地进行组织。

典型的播放应用程序遵循以下步骤:

  1. 应用程序生成部分拓扑,并在媒体会话中将其排队。
  2. 媒体会话调用拓扑加载程序来解析拓扑。

如果想要超越拓扑加载程序的功能,有三种常规方法:

  • 构建完整的拓扑。 在媒体会话上将拓扑排队时,使用 MFSESSION_SETTOPOLOGY_NORESOLUTION 标志调用 IMFMediaSession::SetTopology 。 此标志阻止媒体会话尝试解析拓扑。

  • 直接调用拓扑加载程序来解析拓扑。 然后,可以在媒体会话中对其进行排队之前修改完整拓扑。

  • 实现自定义拓扑加载程序。 使用此方法可将部分拓扑排队,但媒体会话会调用自定义加载程序,而不是标准 Media Foundation 实现。 此方法的一个优点是可以在受保护的环境中执行自定义拓扑生成。 (在这种情况下,拓扑加载程序必须是受信任的组件。有关详细信息,请参阅 受保护的媒体路径。)

本部分包含以下主题。

主题 说明
自定义拓扑加载程序 如何为媒体会话提供 IMFTopoLoader 的自定义实现。
将输出节点绑定到媒体接收器 如果在媒体会话之外使用拓扑加载程序,如何准备拓扑中的输出节点。
将解码器添加到拓扑 如何手动选择解码器并将其添加到拓扑。

 

拓扑