Pimping Togra

One project using GStreamer which I think is really cool, but doesn’t get enough pimping, is Togra. Togra is a framework that allows you to combine GStreamer media handling with 3D objects using OpenGL. One example of cool usage is the spinning movie cube which was worked on for linux.conf.au. The idea was to have one camera in every room where someone was speaking and then have those video feeds play on each side of the cube. The sound would then fade in and fade out for each room as the cube spun around. This spinning cube was then shown on a big screen in the reception. Don’t remember if they managed to pull it all together in terms of getting the needed hardware, but the cube works and maybe it would be cool to try to get it going for GUADEC this year.

Anyway, Togra allows you do to all these quickly and easily in Python, so if you need to put something together to pimp your own coolness at the next LUG meeting make sure to take a look at togra.

Maemo article

Newsforge has a good article on Maemo and Nokia. The article gives a good insight into the process I think is happening at Nokia where the success and quality of the Maemo platform is causing the whole organisations thinking around software, copyright and patents to change. One could always wish for the change to happen faster, but I think the current development is inreversible. As bigger and bigger parts of the industry starts depending on open source and open source solutions takes over internally as being the most important businesswise I think we will at the same time see a change in these companies from being agressive ‘pro-IP’ to being ‘pro-competition’. See this happening with IBM too, for every month that has gone by over the last two-three years their public comments on software patents for instance have become closer to that of the open source community. Still a long way to go for sure, but the direction of movement seems clear to me. Other companies too, have at least begun not vocally supporting software patents, hopefully they soon start advocating doing away with them as they simply don’t work. Maybe Sun and Jonathan Schwartz wants to be first one out?

Maemo news

The Maemo 2.0 roadmap is out. It contains a lot of interesting information on the plans for the next version of Maemo like the upgrade to GStreamer 0.10, the inclusion of farsight/telepathy for VoiP and a lot of general version upgrades. There is also a general Maemo multimedia overview available now, although its about gst 0.8 its mostly correct for 0.10 to as GStreamer didn’t change much at the level which that document is covering.

Quality of Service

Wim has been working adding Quality of Service support to GStreamer. For those who don’t have any familarity with that term in this context is means that when you are playing back something which you don’t have enough CPU power to play back GStreamer tries to cope with it nicely. This usually means dropping/skipping video frames and for instance only decode the keyframes in a video file. One of the things you need to get right in such a setting is that no matter how many video frames you need to skip audio and video should still stay perfectly in sync. So when movement in the video slows down a bit again and your CPU is once again able to cope the audio and video hasn’t lost sync. You also want audio to keep playing perfectly through it all. Well Wim has the start of it working now and its already doing better on his selected testclip than the alternatives he is testing with. There is of course still more work that needs doing in terms of both enabling this for more formats and fine tuning the core, but its looking pretty sweet. Not as sweet of course as actually having enough CPU to play it perfectly, but still a waste improvement of what you are experiencing today.

House on fire

Seems the house of my mothers neighbour burned to the ground yesterday. Nobody got hurt, but it still feels kinda strange to have a house thats ‘always’ been there, now be gone.

The Legend that is Mike Smith and Theora

Mike Smith, our resident Xiph.org master at Fluendo, put together a new Theora decoder plugin today. It is based on the alternative theora-exp code from Xiph.org svn and should give very significant performance improvements over the current one in the 30% to 50% range. A big thanks to to Mike for this. All we now need is a release of theora-exp and distributions and users have a much higher performant Theora playback option.

GStreamer on Windows

We long have had some basic Windows support in GStreamer including building using Visual Studio and output plugins using DirectShow. Sebastian Moutte just commited a lot of fixes to our -good plugins package making sure most of the plugins in that package also build on Windows. What will be the second GStreamer application for Windows after Ixion?.

Pitivi

Plan on keeping up with my Pitivi blogging as Edward is such a lazy blogger. Edward has been working on improving robustness of Pitivi over the last few days with better handling for unloadable streams and also various smaller memleak fixes. Getting Pitivi memleak free is actually an important goal for us as we want to use the Pitivi engine also as a backend system for video processing which means it needs to be able to keep running for weeks without choking your server. A new release is planned soon and the goal is to have the features in there working as robustly as possible before then. It is in some ways similar to the development strategy we took with GStreamer 0.10. We defined a core set of plugins (which is what you today know as -base) which we felt represented many of the most important plugin types and usecases. We then worked on making GStreamer and these plugins work really well. Only when that had reached a high level of maturity did porting other plugins start becoming a priority. Apart from practical coding advantages to this approach it also came from a thinking that its better to do a few things really well and build on that instead of trying to do a lot of things right away and do them all badly. I think it worked out well for GStreamer 0.10 (as opposed to 0.8 where I guess we almost did the ‘add enough plugins and the core will fix itself’ strategy :). Hopefully it will work out equally well for Pitivi.

Cool GStreamer stuff

Jokosher

The Jokosher team continues kicking ass and taking names. The latest updates with screenshots of recent additions is simply amazing. I really hope they are planing on submitting a Jokosher talk for GUADEC today (last day before deadline!) or as a minimum do a Jokosher talk at LUGRadio live.

Thoggen

Tim-Philipp Müller has been reviewing patches and fixing bugs at a high speed in GStreamer for a long time now. I often feel he doesn’t get enough credit for this work as it is a little ‘behind-the-scenes’ kinda stuff. So I was very happy to see that his personal project Thoggen got a positive review on linux.com. With all the work Tim has been putting in on fixing the DVD and mpeg plugins in GStreamer 0.10 I think a GStreamer 0.10 based Thoggen should be possible in the not so distant future.

Diva

Michael Dominic just released his first 0.0.1 release of Diva today along with some really sweet looking demo videos. Thumbs up to Michael for his work so far and especially the work he has put into making such a sweet looking user interface. We are sure to borrow some ideas for that for Pitivi when the time comes to add more bling to the Pitivi GUI. Cool stuff Michael!

Diva and Pitivi

So why are there two efforts to make a GTK+ non-linear editor using GStreamer instead of one you might ask. Well as usual the answer is disagreement on design and component choices. While Diva and Pitivi are written in C# vs Python that isn’t the important divide, although it has some secondary implications in that regard as it makes it a little easier for Novell to integrate Diva with f-spot and Banshee when its done with Mono, while for us integrating Pitivi with Flumotion to do live editing on video streams is easier when both are done in Python. Both are possible of course anyway, but using the same language does makes things easier. But as said these are secondary items.

With Pitivi we sincerely feel that the under laying design is sounder and more flexible and that the path taken with gdv, the library Diva is built upon is suboptimal and much less flexible compared to the direction we have taken with GNonLin, the library/gstreamer plugin that Pitivi is built upon. Michael obviously disagrees which this assessment which is why he wrote GDV in the first place. Time will tell who is right and not.

That said the competition between the two projects is friendly and the redundancy in work is luckily kept to a minimum due to both projects using GStreamer. A lot of the work involved for both projects is of course writing various GStreamer plugins to enable support for various formats and effects and here everything that benefits one benefits the other. Both Edward and Michael is also looking at each others code and applications for ideas and discussing technical problems, so even though there are two codebases on two languages there is a good deal of cross pollination going on.

So no matter what happens the community should have one or two kick ass non-linear editors within a year. Personally I am putting my eggs in the Pitivi basket, but I will be genuinely happy about people contributing to any of the two projects.

Pitivi Chapter 2

Took my own suggestion from yesterdays blog and did some work on the Pitivi non-linear editor today. So for any aspiring hackers out there be aware that the task of adding a window manager decoration appicon is now done :). I also took the chance to do a little work on the website, by improving the description text there and adding a favicon to the page based on the great menu icon done by Andreas Nilsson. I also filed some bugs on issues I discovered. My goal is that the next version of Pitivi is stable enough that when people ask for an easy way to create Theora files we can point them to Pitivi. No more gst-launch pipelines or ffmpeg2theora.

The death of a bug

After a long and steady period of bugfixing on GStreamer 0.10 we know have so few bugs that we are out of the GNOME Bugzilla Top 15 buggiest projects list. With Tim being on second place in the top bug closers ranking. One of the reasons we managed to push our bug count down so quickly is because a lot of the bug reports we got over the last months have not only pointed out the problem, but also included patches which of course makes things much easier. So a big thanks to both new and old GStreamer contributors.

The Farsight and Telepathy RTP work for GStreamer seems to be taking shape too these days. Philippe’s blog entry about getting Google Talk working with the Telepathy, Farsight and GStreamer stack was very encouraging. Combined with the work being done to enable RTSP in playbin I think we are going to have a very complete RTP story with GStreamer within the next 3-4 months, with both working conferencing applications and working RTSP streaming support in applications. Will of course be some time before we support ‘all’ protocols and formats, but the most common ones should be covered.

In regards to format support in GStreamer there has been some requests for a 0.10 version of the Windows dll loader, pitfdll. There has been a ready and working version in Sourceforge CVS for quite a while now, and which is just blocking on Ronald getting around to making a new release. For those wanting/needing it please grab the CVS snapshot and give it a spin.

Pitivi

Pitivi is really looking sweet these days. It is now ported to GStreamer 0.10 and the stability and performance increases compared to the GStreamer 0.8 version are just incredible. Currently it lets you transcode for instance Quicktime movie trailers to Ogg’s and also glue different videos together into one clip. More advanced editor features being worked on, but the core of Pitivi is now up and running well. Of course a lot of polish here and there is needed, in order to support both more input and output files properly, make the GUI look nicer etc. This means it is a great time for people interested to get involved in the Pitivi project. Being done in Python it should be easy for new people to grok the codebase and there are lot of little things that new people could have a go at to get started, ranging from writing a patch to add a window manager icon to Pitivi, improve the logic for thumbnailing to decrease the chance of getting a black thumbnail, enabling more output formats (anyone interested in helping with getting Matroska ouput working?) and so on. Since a lot of the work going forward is just enabling features available from GStreamer and gnonlin you should be able to add a major feature to Pitivi with just a few hours of work and testing. So grab the latest Pitivi version, join the Pitivi mailing list and either send in your first patch or ask Edward (bilboed) for suggestions for things to get you started hacking pitivi. If just a couple more people get involved Pitivi should be a killer application for GNOME 2.16.

More on cheap GUADEC flights

Noticed that Sterling Airways have restarted their direct flights between Oslo and Barcelona now. This means that people coming here for GUADEC should check out both Sterling and SAS for their tickets. SAS have been quite cheap recently actually so I am not sure if the new Sterling tickets are big savers, but it never hurts checking.

Python everywhere

It is incredible to see how many great projects out there are using Python with GStreamer these days. There is of course Flumotion our streaming server, then there is Pitivi our non-linear video editor. Then there is Jokosher the sound multrack editor. And there is the FU Player music player. The Istanbul screen recorder, Togra the 3D multimedia framework. The Quod Libet the music library manager and finally Serpentine
the audio cd recorder. Probably some I don’t know about also, please add a comment if you know any other projects. I think it is a pretty nice collection of applications. Hopefully with this many Python applications around it makes it easier for new developers too as they have more to look at and more projects to borrow code from.

Python and Jokosher

So Jono has been harassing me and Edward for documentation for the GStreamer python bindings. Well it seems Gian Mario Tagliaretti came to our rescue. He just set up the pygstdocs site with his documentation for the GStreamer python bindings. Thanks to Gian for his hard work.

Seems Jokosher (formerly known as Jono Edit) is really picking up steam. As mentioned in an earlier blog it is an effort to create something like Cubase for Linux using GStreamer and PyGTK+. Mike, Jason and Jono are kicking ass and taking names currently. Nice screenshots here and here.

MPEG2 Transport Streams, Annodex and more

So Wim has completed his work on the Fluendo MPEG2 demuxer adding support for MPEG2 Transport Stream. So if you have been looking for a way to play transport stream files with GStreamer be sure to grab latest svn.

Mike merged the Annodex patches for GStreamer made by Alessandro Decina. This means that the cool Annodex technology that Conrad Parker demoed as last years GUADEC is finally in GStreamer. A little more work is needed on playbin before it works in Totem etc., but the first major step has been taken.

Luca Ognibene fixed one of my last great annoyances in GStreamer 0.10, a bug which caused Totem to screw up with many MPEG2 files when using mpeg2dec for decoding. Tim has also been working more on the GPL DVD support porting the dvdnav and dvdsubdec plugins. Nice to see so many things come together.

Solaris and vmware

Been strugling quite a bit with Solaris 10 and vmware server. The basics work really well, in the sense that Solaris installs without a hitch. The problem is that I can’t seem to get network support working from within Solaris. I am using the bridged networking, but I simply can’t get it to actually work. Reading howto’s it seems networking is supposed to ‘just work’, but it hasn’t so far for me. Another thing to dig into as time allow :)

XGL vs AIGLX

I have no idea which one is the best of aiglx and Xgl. But I am happy that the primary goal of both these groups is to make my desktop look better. Having both groups release demo videos of GNOME in action using their technologies will be a great marketing for GNOME.

Work

This week has been crazy. The amount contract work combined with a sprinkle of phone conferences and general correspondence felt neverending, mixed in with various phone conferences and I felt quite stressed out at times. Missed having Julien around to run things by, but I could hardly fault him for not being here as his son Leon was born. A big congratulations to both Julien and Noelle with this latest addition to their family.

Hopefully next week I will have more time again to help push out more plugins into the beta program and get our Solaris plugins underway.