我正在使用DirectShow应用程序,该应用程序作为Firefox视频流插件导出。
据我所知,似乎插件是在一个单独的窗口从网页呈现。我想编辑的应用程序,以允许html元素在插件很像flash允许与wmode='不透明'或'透明'。另一个可行的方法是通过应用程序传递鼠标事件(例如鼠标移动和鼠标向下)。
我一直在阅读put_MessageDrain和put_Owner,但我不确定如何将它们应用到应用程序中,或者它们是否会工作。
我也知道iframe shimming可以工作,但是因为我可以访问应用程序的源代码,所以我想直接添加功能,而不是使用绕道。帧闪烁是我最好的选择吗?这似乎是最简单的选择。
应用程序目前使用无窗口模式,并始终在网页上的所有其他内容的顶部。
使用DirectShow视频渲染器显示视频的方式,如果不提供自己的视频渲染器过滤器,或者为标准视频渲染器之一自定义分配器/演示器对象,则无法使其透明。DirectShow渲染器显示视频与DirectDraw或Direct3D表面独立于主机窗口,不与主机交互的方式应该让你结合图片与透明视频和其他东西。
我一直在阅读
put_MessageDrain
和put_Owner
这些是为窗口模式,你似乎使用无窗口,这假设你提供了一个托管窗口和矩形覆盖不透明。无渲染,第三种模式vm -7/9和EVR为您提供的是您提供分配器/演示器并覆盖演示文稿的模式。
Windows SDK(对于一些你可能需要寻找一个旧版本,而不是最新的)提供了示例:Renderless
, VMR9Allocator
, EVRPresenter
演示无渲染模式。