2008-01-28
Video Element Progress
I thought it might be time for an update on the progress of the <video> element support for Firefox.
Unfortunately on Christmas Eve my Macbook hard drive crashed losing everything on it. Fortunately I push my repository to a remote server regularly. Until I get a new drive and the Macbook set up again I'm using another laptop dual booting Linux and Windows. This has given me the chance to work on getting the Linux version of <video> support a lot better.
The main problem with the Linux version was with the sound implementation. The Linux backend of sydney audio uses OSS and has problems with locking /dev/dsp, is unable to return information I need for a/v sync, and didn't have any volume control support. There is a partial implementation of ALSA support for sydney audio included with liboggplay but it was nowhere near complete, and used an older API interface.
I've implemented a new ALSA backend for the library and now have sound playing much better on Linux. Volume control works and sound playback is generally better. I'm adding support for returning the information required for a/v sync now. Once this is done Linux playback should be as good as that on the Mac and Windows builds.
After that I'll be updating the Windows audio backend so volume control and a/v sync information works with that as well.
I'm still using an older libtheora library. During my work on the theora playback a new version of the library was released. This has many improvements but does not have optimized assembler routines for the Microsoft Visual C++ compiler, which is what we use to build Firefox on Windows. Nils Pipenbrinck has submitted a patch to theora which adds MSVC compatible optimized assembler routines. Once that hits the main codebase I'll be moving to the new version and see how it goes.
I'll have a patch pushed to the git repository with the recent Linux changes as soon as I confirm it still builds and runs on the other platforms.