Transmageddon continued

Released a 0.6 version of Transmageddon today. The user noticeable new feature is support for outputting Quicktime, MPEG4 and 3GPP files. Internally that was actually a big hurdle with some major code reorganisation and me learning about multiple new concepts on the way. A big thanks goes to Sjoerd Simons and Tim-Philipp Müller, because I don’t think I would have managed to sort out the state change stuff in the code without their help and input.

Would also like to thank David Love for sending in the first patch for Transmageddon. It switches the UI over from using radioboxes to drop down lists instead. This was also something quite a few people suggested to me both in person and in the comments to the previous blog. I haven’t merged the patch yet as I am still very uncertain about if I want to do this change. I like the visual feedback you get from seeing the radioboxes getting made sensitive/insensitive bases on container format and drop down lists simply do not give me or the user the same level of feedback. So I think I keep the current UI at least until I get moving on the output profiles.

One thing I realized after adding 3GPP as a container format is that we do not have a good AMR encoder and decoder in GStreamer. The reason for this is mostly that the people who most care about AMR are mobile phone people and even though a lot of them use GStreamer today, they got their own proprietary AMR plugins they use. So to alleviate this I added writing AMR encoder and decoder plugins to our suggested projects list for this years Google Summer of Code. One could probably take the code in Android for AMR and refactor it into a set of GStreamer plugins. Be aware though that Edward tells me that the current Android codec code is very ugly, so be prepared for some spring cleaning if you apply for Summer of Code to do this. This task would even have a bit of synergy effect with Edwards effort of porting GStreamer to Android.

One thing I should mention is that I have been spending a lot of time looking at the code of OggConvert when working on this version. It is really nice code and it does stuff correctly. So far it has always been to complex for me to understand when I look at it, but once I have managed to learn enough by trial and error to get my own code to work, I tend to notice that I am doing more or less the same as OggConvert :)

GStreamer Google Summer of Code

Just wanted to remind all interested students who want to do a Google Summer of Code project to apply as soon as possible. You need your proposal to be submitted before April the 3rd to have a chance to be accepted, but as always the sooner your apply the better. Be sure to look at our guidelines for how to write your GSoC application and if you need some ideas for what to propose look at our ideas list.

Also let me also point you to my earlier blog post about what kind of Google summer of code project to do. The key factor of success is motivation, which in turns depend on having chosen a project you think is fun and which challenge you enjoy.

Learning to code

So January 2008 I posted blog entry in which I expressed the hope for an easy to use GStreamer transcoding application.
Well after so much time gone by and still none on the horizon I decided to bite the bullet myself and make a go for it. Only problem was that I didn’t have either a clue about programming or about how glade works. But upon skimming through the book Learning Python at Robs place I decided to try to do it.

In addition to the book there was two online resources who helped to make things connect for me. The first was this tutorial on how to make user interfaces with python and glade and Jono Bacons blog about getting started with gstreamer and python.

My first application from playing with those tutorials was a GTK button which when you pressed it played a beep sound using the audiotestsrc element in GStreamer. But I kept at it and after having now spent about 5 days on learning the basics I am pretty happy with the progress I have made
on my application named ‘Transmageddon’:


The application is still very early stage, but if you got all the GStreamer plugins modules installed it should work. I even posted Fedora RPM on the very basic Transmageddon homepage.

There is a lot of coding stuff that needs fixing behind the scenes to enable more features and make the application more robust. My big long term goal is to add support for profiles to the application, so you choose Nokia 810 or iPod or PSP and the application chooses the container format and codecs for you and also rescale the video if needed to be optimal for that device. For those who care I have a fairly detailed Todo list here.

Any feedback people want to provide please feel free to email me or post a comment on this blog entry, just make sure to read the Todo list before suggesting stuff ;)

I also hope to write some blog entries explaining how I did some of the stuff in the application as I don’t think there is a very simple tutorial on how you do a progressbar with GStreamer for example.

GStreamer Google Summer of Code

So GStreamer is also this year part of the Google Summer of Code. This means all multimedia interested students should start thinking of a cool project they can do for or with GStreamer. For example if you are interested in learning more about multimedia formats I suggest writing a GStreamer muxer or demuxer for a missing container format (although the list of truly interesting container formats we do not have good support for is getting rather short). Or if you are more interested in networking protocols maybe you could do a project on writing and implementing an RFC for how to do Dirac over RTP? Or if your interest is mostly in the application layer you could write or enhance an existing GStreamer application or development tool. We got a webpage with some information about what you should consider when applying for a GStreamer summer of code project which includes a list of GStreamer SoC ideas, but be aware that these are just that, ideas, most of them are not fully developed project ideas, so be prepared to bring your own vision and ideas to the table to take them to the finish line :)

Students can start to apply on the 23rd of March, hope to see your applications!

Update on MXF plugins

As mentioned before getting MXF support in GStreamer and Pitivi is a priority for us here at Collabora Multimedia. In that regard Sebastian is still working hard on providing GStreamer with top notch MXF support. The demuxer is mostly done these days, handling the testclips we have decoders for, so he is currently focusing on getting an initial muxer ready. He hopes to commit the first version of this muxer to gst-plugins-bad any day now, but while he cleans up the final bits of code, it would be great if people grabbed the generated MXF sample files and tried them with any MXF supporting application and/or library they might have around. If you are not able to load any of the files please let us know through our bugzilla and please include as many details as possible about your application and platform.

Another thing we are looking at the moment is getting some specifications written to put free codecs inside MXF, like Vorbis, Theora, FLAC and Dirac.

Theora in Empathy

Over the last few months a lot of effort has been put into getting Empathy up to scratch as not only a chat client, but also for use as an audio and video conferencing client, the long term goal being to support all the major instant messaging based videoconf systems in addition to stalwarts such as SIP. Being free software enthusiasts we have of course been especially keen on combining the open protocol of XMPP, used by Jabber and Google Talk, with a set of free video and audio codecs, namely Speex for audio and Theora for video.
Empathy video-conf, Sjoerd and myself talking

Theora RTP being a bit special meant we had to wait on the integration of Farsight2 into Empathy for this to work, but now using our eminent stack of GStreamer with Farsight and Telepathy, this now works on my computer as shown by the screenshot above. It requires the very latest versions of everything, and there are still some bugs that need hammering out, but all in all we are very close to reaching the goal. So once the relevant versions of Empathy and the underlying libraries have trickled out into the distribution ecosystem over the next months, we will finally have fully working XMPP based Speex+Theora video conferencing working out of the box between all Linux and Unix systems. Empathy supports doing audio calls with Google Talk, and video calls with the Nokia N810 devices over XMPP if you install the relevant H.263 encoders and decoders for GStreamer. We’re still working on support for the new GMail Video Chat plugin, which initially supported H.264 SVC, although even though it now also supports H.264 AVC we can’t get it to decode streams created by the x264 encoder.

The Internet is for energy drain?

One of my favourite books series currently is Ice & Fire by George R.R. Martin. Due to like many other fans waiting on the upcoming book in this series I check his blog from time to time for news. George Martin, like a lot of other people today is quite active online and thus interact with his fans through his blog and through email. In some way he is as available to the readers of his books as an open source developer is to the users of his or her software. And it is not always fun as George recently pointed out. As it turns out George experience is in no way unique and another writer, Patrick Rothfuss, did the following hillarious cartoon for his blog, which explains exactly how it these things feels for the author.

I think a lot of open source developers can recognize some of the stuff in those cartoons, the internet seems to be one of the best methods humanity has ever created for spreading negative energy around quickly and easily. So while less people bother emailing or blogging or commenting on a forum about their favourite open source tool compared to best selling books, the effect tend to be the same. The barrage of negative feedback drains the developer of energy and instead of encouraging him or her to bring out a new version to fix issues, in fact such feedback cause the developer to do less than they otherwise would.

I guess open source developers tend to be quite hard skinned in general, but I do remember for instance Arlo Rose, the guy who did the original graphics for Nautilus back in the day, saying he stopped being involved with the Linux community partly due to all the negative comments he saw on footnotes.

So a word for the road, if you want to achieve something in terms of dealing with anyone, be it the author of your favourite book or your favourite piece of software, your chance of doing that is much much higher if you stay positive.

Google Summer of Code 2009

So the Google Summer of Code 2009 is about to get started. So interested students better start thinking about projects they would like to do. We will try to get GStreamer accepted as a project also this year, so I been spending some time going over our ideas list and student guidelines from last year, removing stuff no longer relevant and trying to improve the text and information in the existing ones.

I have also been pondering what works well and what works less well. One thing is clear to me now, which I didn’t see as clearly last year, is that you should not sign up as a student for a summer of code project to do a loosely defined project, unless you have your own clear vision for it. The GStreamer project, and I think this is true for most participating projects, can provide you with great technical mentors, who can answer almost any coding related question you might have, but we can not provide you with a ‘vision’ for how an application should look or what it should do. So if you do not have what you personally feel is a great vision and idea for an application, one that you are able to work on without getting a lot of high level feedback, then you should instead try to do a project which is more clearly defined and specified. In GStreamer terms good examples of the latter is writing new encoders and decoders or muxer and demuxers, or any plugin providing support a well known existing technology. Cause by that you usually have clear specs for what needs to be done and can get maximum utility out of your mentor as the kind of questions you would have would be quite clear and concrete.

And doing this sort of project is also often highly appreciated. I know a lot of people who have been very happy because they have been able to utilize Thiagos Quicktime/mpeg4 muxer, which he wrote as part of last years summer of code.

That said, I do not want to discourage people from doing more ‘vision’ based projects, but I am sure that on the GStreamer ideas list and on many other projects list you will find what are essentially quite loosely defined ideas. Those can be great projects, but just because someone has posted such a loose idea, do not assume the project or person in question has got a clear idea about the details. So if you want to take on such a project (or propose one of your own conjuration) make sure you have a clear inner image of the application you what to write. If you get accepted and your first question to your mentor or the mentoring organisation ends up being ‘so how should I do this?’ then there is a big chance your project will fail.

Another thing worth mentioning is that all projects listed on such ideas pages are not the be all and end all of possible projects, if you have a great idea of your own then propose that through the Google Summer of Code application page. As long as your idea seems viable and you come of looking like someone able to pull it off, then most of the larger projects at least should be able to provide you with a mentor for that project. Just be sure before you submit your application to read over it and think to yourself ‘if I read this would I understand what he/she hopes to do and do I get the feeling this person has the skills to pull it off’.

The skills part is important, cause even if the Summer of Code do provide you with a mentor this mentor can not take you from nothing to glory (most bigger organisations have done the Summer of Code enough times now to realize this and thus not accept applications which do not fill them with confidence). Instead the mentor can help you hone your skills and be someone you can bounce ideas off, but you have to do a lot of the legwork yourself. A Summer of Code project is more like doing a thesis than being taught something in a class. You are mostly on your own, but you have someone to check in with from time to time to verify that your general ideas are sound and that you are on the right track and get answers to specific questions.

Anyway I keep people posted on when/if GStreamer gets accepted and let you know where you can post your participation applications.

The sort of end to a sorta era

In March 2004 I was granted a skilled migration visa to Australia. It was something I had been spending both quite a bit of money and time on getting and it represented something I had wanted to do for a long time. In many ways Australia represented to me what the United States represented to many in the past generations of Europeans, a land of adventure and opportunity. As things would have it I didn’t end up going to Australia, instead I went to Barcelona in Spain and started working with my friends from the GStreamer community and then a year and a half ago I moved to Cambridge here in the UK as part of Collabora Multimedia.

But through these five years since I got that visa it has been something thats always been in the back of my mind, that if I wanted to I could pack up my stuff and move down to Australia. More recently I spent some time before Christmas last year discussing it with friends and family as I realized the visa was approaching expiration. I had almost decided to let it go, but then some friends of mine started talking about moving down to Melbourne and that combined with some company people locating there made me spend the last few weeks revisiting the idea once more. So today I decided to check the exact terms of my visa again, to verify the terms and dates, in the back of my mind the final expiration date was at the end of July, but looking at it I discovered it expired yesterday, 1st of March 2009. So the decision or indecision depending on how you look at it was taken out of my hands.

It does in some ways mark the end of an era for me, strange as it is to mark an era after something one didn’t do. But having that something, which I wanted to do, available to me for the last five years. A thing which by its nature would have had a huge impact on my life and also on my relationship with family and friends, have influenced my life quite a bit I think. It has been a part of my approach to the world around me in terms of how I viewed things in terms of permanence for instance. Made me more than a little restless many a time.

But now that the last train has left the station I don’t actually feel very sad, instead I feel that a new chapter starts for me. Sure I can always start a process of getting a new visa, but I think maybe its time to focus on enjoying where I am instead of wondering about where I want to go :)