Elisa and Dirac news

Thought I share some of the latest newsbits on Elisa our media center solution. Philippe and Loic are hard at work with the reworking of Elisa internals, which hopefully will be mostly done by the end of next week. Once that is done we have a much stronger fundation for going forward and can go back into ‘feature add’ mode. Two features which we hope to get added in the coming month(s) is full uPnP support and DVB support.

There already is limited client uPnP support in current Elisa, but thanks to the work Frank Scholz is doing on creating a python uPnP framework called Coherence (sorry no URL yet) it should be much easier for us to take the upnp support to the next step to make Elisa a full server and control point for upnp/viiv services. One nice thing that this will enable is integration with Media Streamer which is a upnp enabled player/controller for the Nokia 770. My hope is that you would eventually be able to use your 770 as a media center control pad for your home with Elisa as the heart.

In regards to DVB most of the GStreamer related work is done now and in GStreamer CVS. What we know need is some way to scan whats available through DVB and then hook everything up with a GUI in Elisa.
I hope to be able to throw out my DVB decoder box at home and replace it by a system with a DVB card and running Elisa before new years.

Another cool Elisa newsitem is the Flickr plugin that Michael Sheldon did. As Elisa matures I hope we have a huge number of such plugins available enabling people to easily pick and choose the plugins they want to create the media center system of their dreams.

Dirac stuff

David Schleef is doing some great work currently on Schroedinger. With latest CVS of Schroedinger and liboil I am able to transcode files to Dirac in Ogg using this pipeline:

gst-launch-0.10 filesrc location=320-256kbits-NVIDIA-MadModMike.wmv ! fluasfdemux ! fluwmvdec ! ffmpegcolorspace ! schroenc ! oggmux ! filesink location=dirac-in-ogg.ogg

And play it back again with gst-launch and playbin. Still eating a lot of CPU which David is trying to figure out how we can reduce even if the arithmetic decoding seems like a though nut to optimize. Getting some strange error in Totem, but we will hopefully be able to resolve that soon.

I am also able to create MPEG Transport Stream files with Dirac inside using our Transport Stream muxer that we developed with BBC R&D. We are working on some critical deadlines currently making time a lacking resource, but hopefully things will cool down a bit next week and we can take the time to move it into the public SVN and make a proper release for the public.

GStreamer and Phonon

Starting 1st of November Fluendo will be dedicating a resource to implementing a full featured GStreamer backend for Phonon, the multimedia API for KDE4.
The goal is to make the best backend for Phonon possible in order to demonstrate the qualities of GStreamer to the KDE community and hopefully lessen the chance of fragmentation in the free software multimedia space. This work is done in cooperation with a major industry player who shares our goal of providing the Linux and Unix communities with a unified multimedia API. I let them let announce their name themselves due to contractual reasons, but I do expect to see them talking publically about this at some point as it is quite direct follow-on to already announced efforts they are doing to bring more unity the free desktop under the auspices of the Portland project and the LSB.

As some of you know I have personally voiced reservations on Phonon in the past, and while I still think some of my concerns are valid, I hope that this effort can be a starting point for a more productive exchange of ideas. If we manage to make the GStreamer backend as good as we hope to then it would be a big step forward in resolving the worries some KDE developers have voiced about the readiness of GStreamer and maybe even encourage the development of a full set of Qt-style binding to GStreamer to suplement to the high level objects of Phonon.

I also hope is that this work will be a big step towards making users life much easier, as it will allow distributions to ship GStreamer plugins that enable proprietary codecs, and know that no matter if the user uses a GNOME/GTK or KDE/QT application the user will get access to these formats (at least as soon the licensing of applications are sorted out ;).

Time to give Solaris another try?

We have decided to try to support as many of our plugins as possible on the Solaris platform in addition to GNU/Linux. Due to this I installed Solaris Express under vmware on my machine this week. I have to say that Sun is making great strides forward with Solaris as a developers workstation. Coming at this from someone who has been using Red Hat/Fedora for a long while, this Nevada build was the first Solaris install I could actually see myself using for more than Solaris specific testing. And I mentioned this before, GNOME seems snappier when running under Solaris for some reason, even when running it inside wmvare.

DVD and Windows Media

On my last blog entry I got a couple of questions about the status of DVD and Windows Media in GStreamer.

In gst-ffmpeg CVS it now supports WMV9, so as soon as the next release is out then WMV9 support will be available through that. Also as I have mentioned here Fluendo will launch our proprietary Windows Media plugins very soon now, maybe as early as next week.

In regards to DVD support, well with the new decodebin, which we hope to integrate within the next week or two, getting DVD support working should be much easier. That said someone would still need to do the work. At Fluendo we are due to contractual obligations not able to directly participate in the development of the open source DVD plugins, so we need external contributors to do this work. Anyone interested in helping out should talk to __tim on on irc.freenode.com for the details of what needs doing.


Thought I should do another Dirac update. The Schroedinger project is progressing nicely with the code currently being in bugfix and optimize mode. I hope to push out a release as soon as we have a couple of troublesome bugs fixed. We have sucessfully muxed Dirac into both Ogg and MPEG Transport Stream at this point and I am sure mappings for more formats will come.

Ours is not the only Dirac effort though, there is of course the reference/development version by the BBC and there is also a project to make a hardware implementation of Dirac by Peter Bleackley.

We are rapidly moving towards being able to start pushing Dirac with full force. The good thing at this point is that we have a lot more tools to start pushing Dirac with from day one. Like when we started pushing Theora there was a problem that people found they had few or no tools available to make Theora files, which caused even the strongest supporters of open formats to stumble. At this point hooking Dirac into tools such as Flumotion, Pitivi, Thoggen, Totem and many more is either a quick job or something that happens automatically, all thanks to having managed to build GStreamer and the eco-system around it.

DVB – I mentioned in an earlier blog Zaheer has been working hard on getting our DVB support up to scratch. Things are starting to come together know with a DVB signal being converted to Ogg on the fly and streamed using Flumotion. Some work remains before we can integrate DVB into applications like Elisa (and maybe even Totem?) but things are moving forward.

RTP – On the RTSP/RTP side progress is also being made. There is for instance a set of RTP paylaoders and depayloaders in CVS now for Vorbis. The plan is to also get a set for Theora in there.

Software and Copyright

Had an interesting conversation today with Wim about copyright and software. We are currently working on integrating some RTSP patches into GStreamer and it turns out these patches contain some code originating in Xine which means we need to get a relicense on the code to the LGPL or replace the GPL parts.

Part of the problem is that people in the free software community tend to be rather sloppy with copyright statements when copying code around. So when people take code from a GPL project to put into another GPL project they often don’t copy all the needed copyright headers over as well, and also a lot of people when making significant changes don’t add their names to the copyright header of the file.

On top of that there are issues like the hard to grasp definition of what exactly constitutes a copyrightable contribution and the general problems with programming languages not being very expressive by nature, meaning that there isn’t that many (non stupid) ways of doing something.

Neither of us being a lawyer probably doesn’t help either :)

Anyway all of this makes it a quite extensive task to a) identify all (potential) copyright holders on a specific piece of code. b) track all these people down. c) get their permission to relicense d) if anyone says no, identify exactly what is their contribution and figure how that can be removed. Figuring out what to do when things are not easy to rewrite in any intelligent way, as a rewrite would basically look like the original and so on.

In terms of rewrites being identical to the original copyright law addresses this with rules saying that only the expressive elements of code is copyrightable, but its not easy for a layman to have a clear feeling on what that translates into in terms of a specific piece of code. In many cases you can never really know, even with a good lawyer to help you, before a judge gives final verdict on it. And having a judge give final verdict is what you probably want to avoid in the first place as that process costs a lot of time and money.

What is certain is that it do seem clear to me that copyright law was not made with gigantic collaborative efforts, which open source software is an example of, in mind. (ok, I am not expecting any awards for spotting the obvious :)