Sunday 4 April 2010
Big Week
It's been quite a big week in Gecko-land!
Bas Schouten landed his OpenGL layers backend and we're using it to accelerate full-screen video on Windows.
David Baron landed his fixes to to the :visited privacy leak.
Chris Pearce landed the new Ogg decoder to get rid of some nasty problems and make forward progress faster.
Josh Aas turned on out-of-process plugins for Mac.
Of course, lots of other people made huge contributions to these projects.
Comments
Sad: So little yet on Linux?
With more browsers understanding SVG I was wondering whether we could make screenshots available to disabled people and search engines.
Is it possible for a Firefox addon to take screenshots as SVG/PDF? By this I mean vectors, base64 bitmaps, real text, embed ALT text for accessibility, real hyperlinks, etc. in an SVG file.
I just tested the full-screen video thing. It doesn't work as well as I hoped, it's much better than it was but it still uses too much CPU and isn't perfectly smooth. Direct2D produced much better results for me, and this is using an nVidia card which is supposed to have good OpenGL support. The task manager shows that 50% of the time is spent in the kernel/driver, maybe it's due to inefficient texture upload (does the OpenGL backed use PBOs?).
A bit off-topic, but is improving the software code patch out of the question? I hate to mention it here but Chromium just landed an optimized software resizer for video which is abut five times faster than what Firefox uses on Windows (see http://codereview.chromium.org/1556021 ). It uses 25% CPU for me when upscaling 480x272 -> 1200x680. By comparison FF maxes one core using 65% total and drops frames left and right (about half framerate). Chromium also has the multi-process overhead to deal with (at least one extra memory copy).
We actually have a patch to import some Chromium code to speed up CPU YUV conversion and we'll land that shortly. We're wary of importing their scaling code because a lot of people have complained that it produces low-quality results. Possibly we should have multiple scaling algorithms and pick the highest-quality one that gives us full frame rate. Getting hardware-accelerated scaling working well is higher-priority, though.
The multi-process setup shouldn't add a copy if they're doing it right.