Eyes Above The Waves

Robert O'Callahan. Christian. Repatriate Kiwi. Hacker.

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.


Lars Gunther
Glad: So much goodness.
Sad: So little yet on Linux?
Robert O'Callahan
Out of process plugins already work on Linux. David Baron's and Chris Pearce's work is completely cross-platform. We just need to hook up the GL layers backend for Linux/X, that should be done soon. So I'd say that's 3.5/4 for Linux? :-)
Matthew Holloway
This is a bit offtopic but I was wondering whether Firefox could do this easily?
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.
Robert O'Callahan
We'd have to enable the cairo SVG backend and do some work to emit metadata like hyperlinks and alt text. That can't be done as an addon, it would require core changes. A fun and doable project, though.
That's some awesome work!
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).
Robert O'Callahan
Rob, there were some bugs in the initial landing that made performance much worse than it should have been. You might want to try again with the latest nightly. There are still some issues with GL layers on trunk that we can speed up further.
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.