代码之家  ›  专栏  ›  技术社区  ›  Simon Fox

IOverlay接口在DirectShow.Net中可用吗

  •  0
  • Simon Fox  · 技术社区  · 15 年前

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

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

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

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

    提前谢谢。

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

    1 回复  |  直到 15 年前
        1
  •  2
  •   Geraint Davies    15 年前

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

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