我正在使用ICaptureGraphBuilder2在directshow代码中构建一个图形。
我将我的相机和VMR9渲染器的实例添加到图形中,我尝试使用RenderStream API,使用捕获引脚和实现的MEDIATYPE_video格式实现智能连接。
如果我使用decompressor ROT导出生成的图形,我可以在源和呈现过滤器之间看到一个智能三通过滤器、一个过滤器和一个颜色空间转换器过滤器。
但是在Graphedit中,我用相同的源和呈现过滤器构建了我自己的图形,并试图使用我的捕获引脚中的rightclick->renderpin智能连接它,没有中间产物被添加。
为什么这是奇怪的行为?
发布于 2014-08-12 12:42:18
这是由设计而来的行为,IGraphBuilder::Render和ICaptureGraphBuilder2::RenderStream。MSDN有记录在案的差异:
智能Tee.一些捕获过滤器有一个捕获引脚,但没有预览引脚。若要预览,捕获引脚必须连接到智能Tee过滤器。这个过滤器将数据分成两个流,一个捕获流和一个预览流。当您指定PIN_CATEGORY_PREVIEW或PIN_CATEGORY_CAPTURE时,如果需要,该方法将插入一个智能Tee过滤器。然后,它在智能Tee过滤器上呈现指定的流。如果呈现预览流,并且该方法使用智能Tee过滤器,则它将返回VFW_S_NOPREVIEWPIN。
https://stackoverflow.com/questions/25262739
复制相似问题