智能连接是Filter Graph Manager用于构建过滤器图形的机制。 它由几个相关的算法组成,选择过滤器并将它们添加到过滤器图形中。
智能连接涉及以下IGraphBuilder方法:
- IGraphBuilder::AddSourceFilter
- IGraphBuilder::Render
- IGraphBuilder::RenderFile
- IGraphBuilder::Connect
IGraphBuilder::AddSourceFilter
IGraphBuilder :: AddSourceFilter方法添加了一个可以渲染指定文件的源代码过滤器。 首先它在注册表中查找并匹配协议(如http://),文件扩展名或一组预定的校验字节,这些字节在文件中与特定模式相匹配的特定偏移处是字节。假设该方法找到合适的源过滤器,它将创建该过滤器的一个实例,将其添加到图形中,并使用文件名称调用过滤器的IFileSourceFilter :: Load方法。
IGraphBuilder::Render
IGraphBuilder :: Render方法构建图的一个子部分。 它从未连接的输出引脚开始工作,并根据需要添加新的滤波器。 开始的过滤器必须已经在图中。 在每一步,Render方法都会搜索一个可以连接到前一个过滤器的过滤器。 如果连接滤波器具有多个输出引脚,则该流可以分支。 当每个流都有渲染器时,搜索停止。 如果Render方法卡住了,它可能会备份并再次尝试,使用一组不同的过滤器。要连接每个输出引脚,Render方法将执行以下操作:
- 如果该引脚支持IStreamBuilder接口&#x