Skip to content

The story of a humble codec

Here’s another tale that I’ve been meaning to tell for a while. I think it’s the last one for now. :-)

Way back in Workstation 5, we introduced the ability to record movies of activity in a virtual machine, and to this end we devised our own codec. Now, that’s probably enough to generate a hail of bread-rolls from the cheap seats, but bear with me.

We have a remoting protocol allow for interaction with a virtual machine at a distance and it is largely VNC with some small extensions, so it seemed very natural for us to use this as a basis for our recordings – we could just dump the VNC stream into a file and write a codec to play it back. And this is in indeed what we did – except that we only ever wrote a windows codec and never provided a linux equivalent or useful documentation. It was a source of much frustration for me – how could we stick this feature in our Linux product and offer no credible way to play back the resulting recordings??

Naturally, the MPlayer and ffmpeg crowd didn’t take long to work out how to use the windows codec with their win32 loader but that’s horribly suboptimal and last year, some people managed to reverse engineer the format (it’s pretty easy once you realise that it’s just VNC) and added native support to ffmpeg. The latest release of MPlayer features this support.

Not being a regular MPlayer user, I didn’t realise this until the beginning of the year – and once I did, I saw that there was a page in the multimedia wiki describing the format. Now that we had a ready made forum to document the format, I suggested to one of the guys who did a lot of the original work (Hi Tony!) that he should update the wiki and fill in the gaps and correct the mistakes – which he then proceeded to do. It’s a small gesture, but the ffmpeg folks appreciated it and I hope we can look forward to complete support in a future release.

A lot of the time, the failure to publish this kind of information is more a function of logistics than proprietary paranoia – it’s a lot easier to directly update a wiki page than to try and get a page added to the official company website!

{ 3 } Comments

  1. Anthony Liguori | 25th February 2007 at 20:49 | Permalink

    Ya’ll should get those encoding types reserved. Just send a note to the email address listed at the top of the RFB specification. We’ve got a set reserved for QEMU that do similar things.

  2. Mike Smith | 3rd March 2007 at 05:02 | Permalink

    Hi Philip. I think we were talking briefly about this codec on #gnome-hackers the other day (I’m MikeS). Yesterday I implemented it in a gstreamer plugin, and have run into a number of bugs in the spec on that wiki page.

    Mostly they seem to be things I can just ignore, but I’d like to find out some of them so I can update the wiki page and finish off my implementation (it’s working, but not yet committed while I clean up some stuff). Could you put me in touch with someone who might be able to explain a few of the problems I found?

    Thanks, Mike.

  3. Philip Langdale | 3rd March 2007 at 09:35 | Permalink

    Will do!

Post a Comment

Your email is never published nor shared. Required fields are marked *