2014-07-09 27 views
0

我正在使用FireBreath的音頻/視頻渲染插件,我們需要獲取HTML元素以覆蓋視頻頂部。我意識到要做到這一點,我需要在FireBreath中使用無窗口模式。但是,由於我使用DirectX來渲染視頻,因此我無法使用HDC句柄(它需要HWND)初始化DirectX,這是我在指示以無窗口模式呈現時獲得的。Firebreath NPAPI插件將視頻渲染到頂級瀏覽器窗口(HWND)

也出於其他軟件安全原因,我無法將視頻渲染到離屏表面,然後將這些位Blt到HDC。

我試圖完成的另一種方法是使用DirectX中的硬件疊加功能,並使用瀏覽器的頂級HWND初始化DirectX,然後使用HDC和座標來告訴directX在TOP瀏覽器窗口中的哪個位置渲染視頻幀。並將其直接呈現給頂級父瀏覽器窗口。

我已經厭倦了概念驗證,但是我看到我的視頻幀在我繪製它們後經常擦除,因此視頻看起來閃爍。我試圖理解爲什麼可能是這樣,我想知道這是不是一個可行的解決方案給我的參數。

此外,我很樂意就如何完成這個給我的約束提出建議。

任何幫助將不勝感激!

+0

@taxilian希望你能幫助解決這個問題!謝謝! – breakc0de

+0

如果你只在一個地方發佈,而不是在三個地方發佈,那真的會更好。我會將我的其他回覆複製並粘貼到這裏,但下次請只問一次。 – taxilian

回答

0

在FireBreath-dev的組,約翰譚寫道:

正如我所知道的,你幾乎無法控制精確畫面時,會畫畫。什麼,只能做的是:

1)通知瀏覽器通過發出窗戶invalidatewindow

2)與HDC瀏覽器抽獎事件到達重繪。在hdc上繪圖

約翰是完全正確的。此外,HDC可能(可能可能會)每次調用抽獎都會有所不同。我不知道任何已經使用無窗口模式成功獲得DirectX繪圖的人,並且您絕對不能保證您所做的工作將會發揮作用,因爲即使您已經完成工作,瀏覽器可能會改變其繪製方式或順序以某種方式破壞它。

您可能想看看異步表面API;我不知道哪些瀏覽器適用,但我懷疑可能只有Firefox和IE。它在this commit中實施。

我沒有使用過這個,所以我不能告訴你它是如何工作的,但它的目的是準確地解決你所描述的問題。您的主要問題將是瀏覽器支持。 What documentation there is is here

希望這會有所幫助