Wednesday, 9 June 2010

WebM has landed on Firefox nightlies

Today I landed Firefox's WebM support on mozilla-central, our Firefox development branch. It should appear in nightly builds from tonight onwards.

Credits to the development effort go to Chris Double for writing the decoder backend, Matthew Gregan for writing the ISC style licensed libnestegg WebM demuxer, and myself for integrating all the moving parts into the Mozilla tree and build system. Also thanks need to go to the releng team which promptly installed YASM on the Mozilla Linux and Mac build machines, and to Roc, Shaver and many others for cracking the whip and working behind the scenes.

Firefox should build with WebM support without needing any extra changes to your build configuration, unless you're building on Win32, where you'll need to have MASM installed in order to compile libvpx's optimized assembly. MASM ships with the Windows 7 SDK, and with Visual Studio Pro. If you've got neither of those installed, you can also download MASM directly.

If you're building on Linux x86, Mac x86 or Mac x86_64 and you've got YASM installed, you'll automatically build VP8 decoder's optimized assembly code from libvpx. If you don't have YASM, you'll fallback to using the generic C code, which won't be as fast, but still performs acceptably. We don't have WebM support building on Win64 yet, you can disable if you reconfigure with --disable-webm.

If you're looking for some WebM videos to test with, you can view WebM videos on YouTube's HTML5 Experiement with nightly builds from tonight onwards.

17 comments:

  1. Silently falling back to no-assembly if yasm isn't installed seems dangerous. It'll give people slow builds when they could trivially gave gotten faster ones. (It wouldn't surprise me if something like that causes Linux distros to ship the non-assembly codepath.) Better to give an error (and a configure option to say "don't use yasm".)

    Otherwise, great news!

    ReplyDelete
  2. What about Linux x86_64?

    ReplyDelete
  3. Speaking for a Linux distro. I noticed the yasm thing but it's probably still a good idea to be explicit about its configure status.
    More critical is that Linux x86-64 is not available given that at least 1/3 of our distro users are using Firefox 64bit.

    ReplyDelete
  4. I would be very sad if it was not backported to the 3.6 branch

    ReplyDelete
  5. Thanks anyway for the work :)

    ReplyDelete
  6. Last time I tried, I couldn't get the assembly code to link on Linux x86_64 when assembled with YASM. I was working in a VirtualBox VM, and the system clock started to screw up and confused Make, breaking my build process and I've not had a chance to go back and try again on a real machine. It's on the list of things to do. ;)

    ReplyDelete
  7. i really hope that doesn't happen again like it was with tracemonkey on x86_64. even that is working perfectly is not enable for x86_64.

    is it me or linux x86_64 is just ignored instead of being fixed whatever is broken?

    ReplyDelete
  8. Yes, dbaron's right, there shouldn't be any sort of guessing when it comes to build configs.

    ReplyDelete
  9. Is there a list of known issues that would get listed in the next alpha release? I tried it on youtube and was disappointed to get higher CPU usage than with flash, and I expect this to be the initial reaction of other people who try this.

    I found https://bugzilla.mozilla.org/show_bug.cgi?id=571000, but I can't really tell if it's a problem with specific configurations or there's just some optimizations not implemented.

    ReplyDelete
  10. @Nickolay: Remember, it's an alpha build! Poor YouTube preformance is most likely caused by YouTube resizing the video (as per bug 571000). We're still doing scaling in software, until the layers backend is enabled. We do use hardware acceleration when rendering video in full screen now, but we've not yet landed the patch which enables you to view YouTube in fullscreen (they put a transparent div over top of the video element to prevent the context menu showing up when you right click on a video, and that's the only way to get fullscreen ATM).

    ReplyDelete
  11. Re: Linux x86_64 ; we don't ignore it. Clearly it is the future. We just added a whole bunch of Fedora Core 12 x86_64 machines to our test and build machines. If we haven't gotten around to doing something on x64, it's a matter on manpower, not desire. Help would be accepted!

    ReplyDelete
  12. Nice, thanks. What about Firefox nightlies for OpenSolaris on SPARC?

    ReplyDelete
  13. @bahaltener: I don't have access to OpenSolaris or Sparc hardware, so I can't ensure WebM work on that platform myself. If you send me a machine, I promise I'll ensure it works! :)

    Failing that, we'll accept patches too!

    ReplyDelete
  14. OpenSolaris Mozilla team might have some spare SPARC VMs if you are really interested:
    http://hub.opensolaris.org/bin/view/Community+Group+desktop/development

    ReplyDelete
  15. This comment has been removed by a blog administrator.

    ReplyDelete
  16. EVEN the ./configure --disable-webm NEEDS YASM, in the other way the ./configure FAILS!

    I am running Linux x86_64 Fedora Core 17.

    I am compiling Firefox 17.0.2, but I thing that does not matter what stuff do you compile. Please help, HOW TO GET THE ./configure CONSIDER about the --disable-webm OPTION? It just ignores it.

    Thanks.

    ReplyDelete
  17. @Rafael: We also use YASM for building libjpeg, though yes the configure warning probably could be clearer regarding that.

    ReplyDelete