2016-10-14 55 views
0

为什么我可以做这样的事情,没有任何问题 ((IVMRFilterConfig9)pVideoMixingRenderer1).SetRenderingMode(VMR9Mode.Windowless); 但是当我尝试这个C#IVMRWindowlessControl9查询失败

IVMRWindowlessControl9 vc1 = (IVMRWindowlessControl9)pVideoMixingRenderer1; 

我有无效转换异常(HRESULT:0x80004002(E_NOINTERFACE))?

VMR9渲染器本身工作得很好btw。

回答

0

行为准确记录。 MSDN

VMR-9仅在无窗口和无模式下支持此接口。在窗口模式下,QueryInterface返回E_NOINTERFACE

您正在显示一条线,该线可能会切换到无窗口模式,但这有其自身的局限性。在无窗口模式下,该界面将可用。

DirectShow.NET示例提供了一些使用IVMRWindowlessControl9的示例,您可以检查它们是否适合使用接口。

0

我想通了。看起来您必须将渲染器添加到您的图形,而无需连接它们,然后启用无窗口模式以访问无窗口控制。然后你必须设置无窗口控制参数,当所有这些都完成后,可以连接渲染器的输入引脚。我试图以错误的顺序去做,那是我最大的错误。