Chrome 插件 window 图像反转

Chrome plugin window image inverted

我们正在使用 FireBreath 开发视频播放器插件。它有一个无窗口模式,并且在 Chrome on Windows 中它产生了一个非常奇怪的效果。

每当我们尝试在 hdc 中绘制时,像素会以正确的颜色出现或反转,这取决于 3 个通道中任何一个通道中最高有效位的值。

这意味着在全色深度下,平均有一半的像素出现倒置,而另一半则正常。使用 StretchDIBits() 显示视频帧和使用 FillRect() 仅填充纯色时都是一样的。 SetStretchBltMode() 设置为 COLORONCOLOR

到目前为止我们找不到解决方案,我们的临时 hack 是将颜色转换为一半的深度并将所有最高有效位设置为 1,但这显然是浪费 CPU 努力并失去一半的颜色深度。

是的,Chrome 有一个奇怪的错误。最简单的解决方法是将 window 后面的背景颜色设置为黑色;有一个 whole thread on this on the firebreath-dev group.

编辑:经过反思,错误实际上可能不是正确的术语;它有一个有趣的实现方式 =]