C# IOverlay接口在DirectShow.Net中可用吗

C# IOverlay接口在DirectShow.Net中可用吗,c#,video,interop,directshow,directshow.net,C#,Video,Interop,Directshow,Directshow.net,我对DirectShow还很陌生,现在真的只是在摸索。我想在WPF应用程序中托管directshow图形的directshow渲染器窗口,目前正在使用HwndHost类来尝试实现这一点。不过,对于HwndHost,我需要的是渲染视频的窗口句柄。我发现了一个示例,该示例显示如何通过枚举IVideoWindow接口的管脚并查询IOverlay来获取句柄,因此可以使用GetWindowHandle方法来获取句柄 问题是,在DirectShow.Net中似乎没有IOverlay。在阅读DirectSho

我对DirectShow还很陌生,现在真的只是在摸索。我想在WPF应用程序中托管directshow图形的directshow渲染器窗口,目前正在使用HwndHost类来尝试实现这一点。不过,对于HwndHost,我需要的是渲染视频的窗口句柄。我发现了一个示例,该示例显示如何通过枚举IVideoWindow接口的管脚并查询IOverlay来获取句柄,因此可以使用GetWindowHandle方法来获取句柄

问题是,在DirectShow.Net中似乎没有IOverlay。在阅读DirectShow.Net页面时,IOverlay在表中列出,标题为“这些接口在源代码中,但已弃用、未记录、用于Ole自动化或其他不稳定的接口,这意味着它们没有,也不会被测试”

那么我要做什么才能得到这个定义呢?它是否被排除在作为库分发的构建之外,我是否应该自己从源代码构建库

还是有更好的方法来做我想做的事情?任何帮助都会很感激,就像我说的,我对所有这些东西都是新手

提前谢谢


编辑:没有多少DirectShow开发者?或者这是一个愚蠢的问题,绝对可以接受peeps的任何建议…

通常的做法是使用IVideoWindow::put_Owner重新租用视频窗口,使其成为您自己窗口的子窗口。您还需要设置自动显示(false)、可见、宽度和高度属性,并更改WindowsStyle属性以使其成为子窗口

IOverlay接口是在DirectShow(1996)的第一个版本中实现的,以支持一些早已失效的硬件解码器。我不认为当前的视频渲染器会支持它

窗口句柄很难获得,因为糟糕的应用程序编程导致Windows视频中频繁出现死锁,开发人员认为DirectShow线程和他们所拥有的窗口以及任何应用程序线程之间需要明确分离


G

非常感谢,正是我需要的人:)这恰好是一个项目的一部分,该项目正在使用您的GMFBridge工具包(它非常有用)