高级拓扑生成

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

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

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

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

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

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

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

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

本部分包含以下主题。

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

 

拓扑