我有一个定制的“水槽”过滤器。我创建了一个BDA图,并通过调用IGraphBuilder2 2::RenderStream将MPEG2VIDEO流发送给它,它还添加了一个中间“解码”过滤器。此时,它会通知我的过滤器,它将传递给它704x480 YUY2数据。
当我在图形上调用Run时,就会发生调优(我猜想),并且数据的格式显然会发生变化,因为上游解码器在我的过滤器的引脚上调用ReceiveConnection,其大小为1280x720。我接受它并返回S_OK。
但是,如果我返回S_OK,图形基本上就挂起了。如果我返回VFW_E_ALREADY_CONNECTED,那么它成功地为我提供了704x480数据。奇怪的是,如果我在GraphEdit中运行相同类型的图形,但是使用普通的视频渲染器,它成功地重新协商了格式并使用了它。需要注意的一点是,我的过滤器没有自定义分配器。有什么想法吗?
这种情况下的解码滤波器是PowerDVD 8的"mpeg2视频解码器“。
发布于 2016-10-03 17:55:47
最后我认为这与内容重新谈判有关.没有得到正确处理.我的工作是使用不同的过滤器(lav过滤器与ffdshow) (这可能避免了一个bug,但随后又引入了更多),所以我最终只通过了原始的MPEG流(这并不容易.)
https://stackoverflow.com/questions/34407354
复制相似问题