C++ 在graphstudio中,连接两个过滤器时没有错误,但它们尚未连接,这意味着什么
当我尝试连接graphstudio中两个不匹配的过滤器时,通常会得到一个错误代码。 但是,在我的情况下,如果我尝试将我的筛选器连接到另一个筛选器,则不会出现错误消息,也不会出现错误 是否已连接,例如过滤器之间没有箭头 根据文档,这就是过滤器的连接方式 连接过程的总体概述如下:C++ 在graphstudio中,连接两个过滤器时没有错误,但它们尚未连接,这意味着什么,c++,directshow,C++,Directshow,当我尝试连接graphstudio中两个不匹配的过滤器时,通常会得到一个错误代码。 但是,在我的情况下,如果我尝试将我的筛选器连接到另一个筛选器,则不会出现错误消息,也不会出现错误 是否已连接,例如过滤器之间没有箭头 根据文档,这就是过滤器的连接方式 连接过程的总体概述如下: 过滤器图形管理器在输出管脚上调用IPin::Connect,并将指针传递到输入管脚 如果输出管脚接受连接,则在输入管脚上调用IPin::ReceiveConnection 如果输入管脚也接受连接,则连接尝试成功,管脚已
因此,必须有比这3个步骤更重要的东西,否则它应该可以工作,Pin连接基本上是一个
IGraphBuilder::Connect
调用,内部调用是对相关过滤器的IPin::Connect
和IPin::ReceiveConnection
。如果内部调用成功,则调用成功
稍后,GraphStudio将枚举管脚并检查这些管脚上的管脚连接。如果管脚未报告任何连接,则GraphStudio显示断开连接
考虑到您之前关于覆盖
Connect
方法的问题,我认为您覆盖了错误的方法:您没有在过滤器/pin上进行连接,仍然返回成功代码作为操作状态。使用SDK中提供的基类可以节省数周的时间(如CBaseFilter、CBaseOutputPin等),但即使您拒绝使用它们,也只需查看SDK DirectShow samples中的源代码(请参阅BaseClasses文件夹),以了解连接过程中真正应该发生的事情。例如,您的筛选器是否为其示例选择/创建了正确的分配器?