GStreamer 0.9 on the Nokia 770

Starting learning to use Scratchbox yesterday and I have to say its pretty nice. Developing for the Nokia 770/Maemo using it was easy to get going. Today already I was able to have GStreamer 0.9 installed and was playing a Real media file streamed over http from my own laptop and played back using GStreamer and Fluendo’s soon to be released Real Media plugin for GStreamer. Cool stuff. Pipeline used was this one:

gst-launch-0.9 gnomevfssrc location=http://192.168.1.70:/kelly.rm ! rmdemux ! realaudiodec ! esdsink

Tried to get video output working also, the closest I got was trying to play a .fli file with Zeenix’s fli decoder and sdlvideosink. Got a black SDL box onto the 770 screen,but no actual moving image.

As part of trying to fix the issue of getting SDL output working I tried updating the device to latest development snapshot. But that seems to work very badly for me, seems the interface is extremely slow or unresponsive so that I can’t input anything with the stylus. Probably caused by me having an early prototype of the device, but still a bit frustrating.

GStreamer API freeze

So with the new release today GStreamer 0.9 is in a temporary API freeze. It will last for a full month before there is short thaw before the hard freeze before 0.10. So if you want to start porting to 0.10 this is a good time to do it as the API will not change under you for the next month and the changes occuring during the thaw will probably be mild (beautiful play on words there).

The new baseclass setup in 0.9 is very nice, in 0.8 it was a constant problem that people fixed something in for instance alsasink, but they didn’t bother fixing it for osssink, sunaudiosink or esdsink for example. Which meant that you got different milage with different plugins for different tasks. This can of course still happen, but with the new baseclasses the chance is much smaller and whenever new functionality is added to the baseclass all the plugins built on top of it have it too.

Thomas caused quite a stir with his venting on NetworkManager (which I am using btw), my biggest irritation currently is that the gaim tab keeps on blinking on the panel even when I have maxized the chat window and seen the message, only way to get it to stop blinking is either reply, switch message or close the window. If they could make it stop blinking after receiving messages I would be very greatful.

Caleb did some major librsvg hacking this weekend. With his latest commit the infrastructure in in place in librsvg for full animation and DOM1 support. Your kicking ass Caleb!

Making free formats competitive

We have some technically good solutions available now in terms of Vorbis, Theora an Dirac. The codecs produce good quality audio and video and is slowly but surely seeing increased uptake. Yet the uptake could be even speedier, but there are some things that needs to be done:

a) RTP support – we are already working on that through the Xiph RTP project. Essential for our codecs to be used in VOIP and multicast scenarios.
b) Profiles – define profiles for various usage like its done for MPEG. For many vendors having standarised profiles, like mobile and main, is essential before they will consider using our codecs.
c) Surround sound – Vorbis can theoretically do multichannel audio, but not very efficiently. Work should probably be done to create a vorbis variation which can compete more head on with AC3 and DTS. Any community members interested in working on this?
d) Content sites – in an email exchange with someone working in the content industry about formats I suggested using Ogg for distributing trailers. The person I talked with agreed (although it wasn’t his decision to make), but said that the main reason they didn’t distribute trailers in Ogg format was simply because none of the major trailer sites requested it. Maybe something that Google could help out with?
e) Tools – I mentioned this before and it is still an core issue, we need more and better tools available for creating/handling content. This is an area where I see a lot of movement, both with the work we are doing here at Fluendo with our work GStreamer, Flumotion and Pitivi, but also from other members of the community with efforts such as DIVA and Thoggen.

Fluendo joins the GNOME Foundation

So together with Imendio and OpenedHand we announced joining the GNOME Foundation today. We have discussed it a lot back and forth for some time, but in the end the fact that GNOME is using GStreamer made us decide it was in our interest to join. A big thanks to David Neary for his relentless work to make this happen.

Community hiring

From time to time and think about the community and the effect the increasing level on hiring have on it. Mostly in a purely practical context. It is clear to me that the ever increasing rate at which people in the GNOME and GStreamer communities are getting hired is a long term win, but can cause a lot of short term problems. Especially in the case when people get hired to work on something else than they have been doing up to the point of getting hired. Let me take one example. Two people I would love to be able to hire to Fluendo at some point are Dom Lachowicz and Caleb Moore. The reason for this is that I know they are both top of the line hackers based on my experience with them in regards to librsvg which they co-maintain. Hiring them to work for Fluendo would of course mean they would be working on projects directly related to our business, which at least at this point do not include much SVG. Also from experience I know that when people do start working fulltime on free software they tend to work less on it in their free time. Partly because they tend to do long hours, partly cause the hacking on free software itch gets fully satisfied as part of the workday. So while having Caleb and Dom work for Fluendo would be a net win for free software in general, as they would work on free software projects of immediate importance to Fluendo, it would be a net loss for librsvg, which would find itself without any active maintainers suddenly.

Over time someone else would probably come along and take over the project, but it could mean a long period of time where an important project for the community goes without any new development or bugfixes.

One example where something like this did happen, was Rhythmbox, where Walters got hired by Red Hat. After that he simply didn’t have that much time and energy to hack on Rhythmbox anymore, although the total ammount of time he spent on free software development probably increased greatly, but most of it went into projects of more immediate importance to Red Hat.

Anyway, so whats my point apart from pointing out the obvious. Not sure actually :) The issue I have been pondering is if there is any way we can make transition periods like these shorter and smoother somehow. Hiring is good for projects like GNOME and GStreamer overall and good for the people getting job of course, but they do increase the turnover rate quite a lot on the individual project level which do and can cause some pain.

Return to the land of the free(zing)

So I am going back to Norway for a week on vacation and to celebrate my oldest sisters 30th birthday. Looking forward to it although I was told it was about 5 degrees Celsius in Oslo atm.

News on SMIL

Got good news on SMIL today, the LiveSupport
project which is a software package for managing Radio stations (and which uses GStreamer have written some SMIL elements for GStreamer already. And they are willing to relicense them to LGPL for inclusion in GStreamer.

The Ambulant project which I also blogged about earlier also got back to me today saying that the next version of Ambulant will be LGPL, which at least takes away the licensing hindrance for GStreamer intergration.

The advantage of Ambulant of the LiveSupport stuff is that it is much more complete in terms of implementing the SMIL spec, the downside is that its design might be more painful to integrate in a nice way. Anyway Flavio Oliveira is planning on investigating the issue further and working on it, so hopefully a good solution can be found in the end.

VoIP

Currently having a Asterisk server set up for use by the GNOME board meetings, the current phone setup is costly and unpractical and I can’t help but feel that if such a technical group of people like the GNOME board is not able to switch to using a VOIP conference solution the who is.

DAAP is all around

Cool things are happening all around. I mentioned the Rhythmbox support for DAAP some days ago and I have know also learned that DAAP support for Maemo and the 770 is under development. Which means you can listen to anything shared from Rhythmbox or iTunes (apart from DRM’ed crap) using your Nokia 770 device.

Flumotion and GStreamer 0.9

Wingo managed to get Flumotion running with GStreamer 0.9 on Friday which means that we hopefully can do a new release of Flumotion soon which runs both with GStreamer 0.8 and GStreamer 0.9/0.10.

Fluendo plugins beta

Also been working on preparing our beta program over the last couple of days as we are preparing to launch our first set of plugins upon an unsuspecting world very soon. Lot of ‘fun’ work writing licensing text and similar, but luckily that is mostly a one time task per plugin.

LiveSupport

Got informed of a new GStreamer using project today, LiveSupport which is software for managing a radio station. They also started on a SMIL element for GStreamer as part of that effort which might be a better suited starting point for GStreamer SMIL support than the Ambulant project I mentioned in an earlier blog. Of course some licensing issues involved as usual, but hopefully we can get those sorted out :)

Desktop eyecandy

Been thinking a lot about how to approach the desktop eyecandy issue. Think I will start by fixing up my old Colony theme (which is a dark futuristic theme) and see where it stands today. When I made it (and abandoned it) many months ago it did trigger some ugly bugs which hopefully are fixed by now. I also talked shortly with some of the people in -art about it the other day, among them Star which hadn’t been around for a long while. Think the idea of asking artists to provide desktop screenshot mockups displaying features they would like to have available when themeing would be a good start. We would also need to get some coders onboard to help file patches against relevant projects as I think just filing bug reports would not be enough to get this moving. So if there are any interested hackers out there please mail me at uraeus(at)gnome.org or come to the -art channel on Gimpnet. Helping out with this would probably be a great way to get involved with GNOME hacking in general as it would expose you to a lot of different modules.

Jan and Jaime’s going away party

So Jan and Jaime are organizing a party today as they are returning to Australia in a few days to get married, go on honeymoon and eat vegemite. This means they will not be back in Barcelona until November. Wine and Cheese have been promised, some of it probably even from the Wine and Cheese region of France.

Election in Norway

Yesterday there was a national election back in Norway. Didn’t get around to voting at the consulate here in Barcelona so I guess I have no right to complain, but I will do so anyway…argh the socialists won :(, whats worse is that they won due to how the election system works not because the majority wanted them as they actually got fewer votes than the sitting right wing government.

GStreamer bits and bytes

Lots of cool stuff happening lately. On Friday Wim and Thomas managed to get RTP/RTSP going with GStreamer and managed to put our office teststream onto a cell phone, I took some earlier pictures myself of a distortet testvideo signal, decided not to put them up as the office stream image looks much better.

Jono Bacon put up a great article on Linux video handling, including a lot of talk about GStreamer and Pitivi. Make sure to read it!.

GStreamer 0.9 is progressing fast, Wingo is porting over the soundcard mixer stuff currently which is one of the last remaining pieces for being able to port ‘GNOME’ over to 0.9/0.10. Plan on putting together a list today of plugins that needs porting in the hope of getting some community action going on it.

I also went to the Barcelona FNAC store today to buy myself some comics as I figured it was the kind of easy reading that could get my going forward with my Spanish. They have a quite good selection of comics at the FNAC and I bought an Astrix album, 3 Thorgal albums and some belgian comics I hadn’t heard of before. Coming home I sat down to try to read the Astrix story first as I have it back in Norway in Norwegian. Got a bit disapointed at first that I wasn’t able to understand more of the dialogue as I felt I had started to get a semi-usable passive vocabulary from watching subtitled tv. Then after 4-5 pages I noticed the word ‘amb’ in a setence and my alarm bells started ringing. After some further investigation it turned out that album and all the albums I bought where in Catalan not in Castilliano(Spanish). Suxors. Guess I try to go trade them in on Monday again unless Wingo wants them for his Catalan learning.

Anyway I got myself a big fat English/Spanish-Spanish/English dictionary also as my little pocket dictionary has its constraints.

SMIL to the world and the world SMIL’s to you

We have been looking to add SMIL support for GStreamer and GNOME for a while now. Problem have been that there hasn’t really been and complete usable implementation yet under an acceptable license. Well I discovered Ambulant
recently. Currently its under a GPL+exception license, but they seemed open to dual license it under the LGPL which would make things easier to relate to in a GStreamer and GNOME context.

Ambulant is a C++ based library which includes player(s) for a lot of platforms, including a simple Qt player for Linux. It currently use ffmpeg for network and format support and expat as its XML library. We would want to replace ffmpeg with GStreamer, expat with libxml and hook up Totem as the GUI. Currently fighting with its build system and some GCC4 issues, but hopefully I get it running to test it soon and then later on I hope someone who actually can hack is willing to help out to intergrate it with our stack.