3

我正在使用 IGraphBuilder 将视频捕获设备呈现到屏幕上。该过程包括将捕获过滤器添加到图形,然后将 VideoMixingRenderer 添加到图形(使用自定义分配器),最后调用 graph.Render() 以使用 Intelligent Connect 连接引脚。在某些情况下,这很好用,并且我的自定义分配器已正确加载(并调用 InitializeDevice),但在其他情况下,未使用自定义分配器,并且我得到一个 ActiveMovie 窗口显示捕获设备而不是添加到图表中的 VMR . 智能连接似乎不想将捕获设备过滤器连接到 VMR,而是创建自己的渲染器。是否有任何工具或技术来调试它?对 graph.Render() 的调用成功,HR 为 0,所以我' m 没有从 DirectShow 得到任何关于连接失败的信息。希望有一个诊断工具可以让我更好地了解 DirectShow 中发生的事情。

4

1 回答 1

7

智能连接逻辑将创建一个日志文件,您可以使用它来追踪错误。使用 IGraphBuilder::SetLogFile (或 graphedt 菜单项)。这会记录图形构建期间的所有活动。

无法连接到 vmr 的最常见原因是上游过滤器坚持使用自己的分配器,vmr 也是如此。在某些情况下,您可能会在两者之间进行转换(例如颜色空间转换),这会复制缓冲区,因此将使用 vmr 的分配器。无论如何,这样的事情是一种可能的解释。

G

于 2010-01-28T20:32:31.977 回答