'为什么IMediaControl.Stop正在悬挂'似乎是一个经常被问到的问题。现在我有一个特殊的经历:如果运行filtergraph的应用程序位于第一台显示器上,一切都像发条一样。停止过滤器图也可以解决问题。但是当应用程序移动到第二个监视器时,IMediaControl.Stop()的调用永远不会返回,并且软件会挂起。
有任何疑问,原因是什么?
答案 0 :(得分:0)
可以使用IVMRMonitorConfig
接口为特定监视器设置视频混合渲染器(VMR-7)过滤器。如果您在不同的监视器上有效地使用它,它将重新启动图形,以便在重新启动期间可以重新配置它。也就是说,有一个停止/暂停/运行周期。由于另一个故障过滤器,在此过渡期间会发生冻结。实际上它与常见问题是同一类问题,并且适用相同的配方:您需要在冻结时检查调用堆栈,识别死锁原因和错误的过滤器,解决发现的问题。这同样适用于VMR-9过滤器。
也就是说,Stop调用是预期的行为。停止冻结与其他停止冻结没有太大区别:它不是冻结的视频渲染器,而是另一个过滤器,它不正确地处理停止转换。
另见: