为什么我的directshow图表(动态格式)只是挂起?

时间:2015-12-22 01:58:00

标签: directshow

我有一个自定义的“接收器”过滤器。我创建了一个BDA图,并通过调用IGraphBuilder2 :: RenderStream将MPEG2VIDEO流发送给它,它还添加了一个中间“解码”过滤器。此时,它通知我的过滤器它将传递704x480 YUY2数据。

当我在图上调用Run时,调整发生(我推测)并且数据的格式显然会发生变化,因为上游解码器调用我的滤波器引脚上的ReceiveConnection,大小为1280x720。我接受并返回S_OK。

但是,如果我返回S_OK,图表基本上就会挂起。如果我返回VFW_E_ALREADY_CONNECTED,那么它成功地向我提供704x480数据。奇怪的是,如果我在GraphEdit中运行相同类型的图形,但使用普通视频渲染器,它会成功重新协商格式并使用它。需要注意的一点是我的过滤器没有自定义分配器。有什么想法吗?

这种情况下的解码滤波器是PowerDVD 8的“mpeg2视频解码器”FWIW。

1 个答案:

答案 0 :(得分:0)

最后我认为这与内容重新谈判有某种关系......没有正确处理...我的工作是使用不同的过滤器(lav过滤器与ffdshow)(这可能避免了一个bug但随后介绍了更多)所以我最终只是传递了原始的MPEG流(这并不容易......)