2009-09-03 47 views
0

我对DirectShow非常陌生,现在真的只是感觉我的方式。我想要在WPF应用程序中托管directshow图形的directshow渲染器窗口,并且目前使用HwndHost类来尝试实现此目的。我对HwndHost的需求是呈现视频的窗口句柄。我找到了一个例子,它显示了通过枚举IVideoWindow接口的引脚并查询IOverlay来获取句柄,因此可以使用GetWindowHandle方法来获取句柄。DirectShow.Net中提供IOverlay接口

问题是IOverlay似乎没有在DirectShow.Net中可用。阅读DirectShow.Net About页面,IOverlay列在表中,标题为“这些接口位于源代码中,但已弃用,未公开,用于Ole自动化或以其他方式无法测试,这意味着它们不是,也不会是测试“

那么,我必须做些什么来获得这个定义?它是否从作为库分发的构建中排除,因此我应该从源自己构建库?

或者有没有更好的方式做我想做的事情? Anyhelp将不胜感激,就像我说的我对所有这些东西都是新手。

在此先感谢。

编辑:并不是很多DirectShow的开发者?或者这是一个愚蠢的问题,绝对开放给任何意见窥视可能有...

回答

2

这样做的正常方法是重新使用IVideoWindow :: put_Owner视频窗口,使其成为您自己的窗口的孩子。您还需要设置AutoShow(false),Visible,Width和Height属性,并更改WindowStyle属性以使其成为子窗口。

IOverlay接口在DirectShow(1996)的第一个版本中实现,以支持一些自从不存在的硬件解码器。我不认为目前的视频渲染器会支持它。

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

G

+0

非常感谢你,只是我需要的人:)这恰好是使用你的GMFBridge工具包的一个项目的一部分(它非常有帮助) – 2009-09-03 11:26:21

相关问题