我正在使用我的directshow代码中的 ICaptureGraphBuilder2 构建图表。
我正在向图表中添加我的相机实例和 VMR9渲染器,并尝试使用 RenderStream API 智能连接引脚和格式MEDIATYPE_video已实现。
如果我使用 ROT 导出生成的结果图,我可以看到 smarttee 过滤器,解压缩程序过滤器和颜色空间转换器在我的源和渲染过滤器之间进行过滤。
但是在Graphedit中,我使用相同的源码和渲染过滤器构建我自己的图形,并尝试使用我的捕获引脚中的 rightclick-> renderpin 进行智能连接,不会添加任何中间体。
为什么这种奇怪的行为?
答案 0 :(得分:2)
这是设计行为,IGraphBuilder::Render
与ICaptureGraphBuilder2::RenderStream
。 MSDN记录了差异:
Smart Tee。某些捕获过滤器具有捕获引脚但没有预览引脚。要预览,必须将捕获引脚连接到Smart Tee Filter。此过滤器将数据拆分为两个流,即捕获流和预览流。指定PIN_CATEGORY_PREVIEW或PIN_CATEGORY_CAPTURE时,该方法会插入Smart Tee过滤器(如果需要)。然后它在Smart Tee过滤器上呈现指定的流。如果渲染预览流并且该方法使用Smart Tee过滤器,则返回VFW_S_NOPREVIEWPIN。