Phonon Loves Codecs

As the Phonon team is hard at work to prepare for the release of Phonon 4.4.4, the GStreamer backend has seen some awesome improvements these past few days.

Not only will it be the second backend to support the experimental video capturing features introduced with Phonon 4.4.3 but has also seen tremendous improvements with regards to stability. But most importantly of all it got improved codec installation support.

If you ever found yourself looking for a way to play that mov video a friend sent you, then you will love Phonon GStreamer 4.4.4. Whenever it can not play a file because a media plugin is missing, it will now try to get it semi-automatically. Check out the screencast:

This gives user experience quite a boost, so I am most certain that Linux distributions will pick this up and integrate it nicely with their package management systems.

In the video KPackageKit is handling the plugin lookup and installation, so both Fedora and Kubuntu should have this awesome feature in their next releases.

Have fun ๐Ÿ™‚

Kubuntu 11.04 Sneak Peek [UDS Cookie]

At every Ubuntu Developer Summit, the Ubuntu project comes together and tries to find new and exiting ways of breaking their own systems.

So it also happened about a month ago in Orlando, FL. But let me focus on the Kubuntu bits and pieces, since Ubuntu is way to big a project to summarize all the awesomeness in one (sensibly long) blog post.

Maybe first I should say that we were rather conservative with regards to major changes of the kind “might-eat-fluffy-bunnies”, though we have some that probably qualify as “might-eat-bunnies”. The important thing with such kinds of changes is testing, testing, testing, testing, testing, testing, testing, testing, testing and fixing ๐Ÿ˜‰

Testing is not something terribly difficult, a bit time-consuming maybe, but surely worth the effort. If you want to help test the upcoming Kubuntu release you might want to download the daily ISO image every once in a while, or checkout the progress after each pre-release release (alpha, beta, rc). You only need to create a CD or a USB stick, boot from it and you can right away test the current state of affairs from the CD/stick in a live session. This is probably the easiest choice as it does not change your running systemย at all, yet it is a very good start to find large-scale issues, like broken sound driver, or broken graphics driver or overall brokenness. More engaging are installations in a VirtualBox (still not touching your data), or very brave people can also install it on their actual system (which gives the best testing, but one really should not do this on a production system, since it isย going to break at least 2 times ;)).

Now that I prepared you for making sure the grave changes do not eat bunnies, let me tell you about the changes ๐Ÿ˜€ Please note that they are not necessarily appearing in Kubuntu 11.04 for real if they cause unsolvable problems (so, this is mostly just planned things, they are however partially already applied).

Phonon GStreamer

Phonon is the abstraction layer used by KDE and Qt for multimedia magic – Amarok and Dragon Player for example use it to play their media. The wonderful thing about Phonon is, that it is designed to not be dependent on one single multimedia framework (GStreamer, Xine, VLC), but supports multiple of those via so-called “backends”. Those backends make it incredibly easy to switch from one multimedia framework to another.

QtWebKit is changing to a less sophisticated solution that hard-depends on the GStreamer framework, consequently we will have to provide GStreamer on the Kubuntu CD to support HTML5 audio/video in our current default browser Rekonq. Additionally OpenOffice.org/LibreOffice on Ubuntu also depends on GStreamer, so it only seems a logical option to switch all of Kubuntu to GStreamer (previously we were using Xine).

This is however a bit of a brave move, to my knowledge no distribution used GStreamer by default before (I might be mistaken here). In any case I would call the backend a less favored choice of backend, although I am not entirely sure why that is, because GStreamer is a decent enough multimedia framework.

Now, since I am a very practical person I do not like changing things around just to accommodate some random dependency change in one (actually rather small) part of the system. Therefore there are of course more reasons that make me believe changing to GStreamer is a good thing. Let me just highlight 3 here.

GStreamer supports more advanced missing-code-installation features than any of the other frameworks. GStreamer can actually notify the application that is using it, that it cannot play, say a MP3, and that application can then use a special functionality of GStreamer to launch a codec installation application that helps the user obtain the necessary codec to play the file. I was really referring to Phonon, when I said “application” there ;). Lets use a real example here. Kubuntu does not include MP3 support by default for various reasons. Now, currently when the user tries to play a MOV file in Dragon Player, a notification comes up telling the user that some stuff might not work and that he shall be so kind as to allow installation of additional stuff. With GStreamer the whole notification is gone and a window comes up explaining the situation. If all goes well the user can then install the appropriate GStreamer package to play the file at hand. The beauty of this is that KPackageKit and the PackageKit aptcc backend handle this in a very amazing manner so that the user experience goes up 300%.

The advantage for Phonon at large is that the GStreamer backend gets more testing and thus we will very likely see a big quality push there. This is also good for Qt, because Qt’s Phonon uses GStreamer by default.

Finally the awesome people of Linaro included special hardware optimizations for ARM in GStreamer, making it (at least for now) the preferred framework on ARM devices using an Ubuntu distribution.

I am using Phonon GStreamer for about a month now and also fixed some issues here and there, and I think this has potential for awesome.

Raster Rendering

Those of you who follow my ramblings regularly might know about Qt raster rendering already, as I made a KCM to manipulate the rendering system a while ago.

At least for the first alpha of Kubuntu 11.04 we will have this magical raster rendering turned on.

— If you care about superficial tech blah blah —

Qt widget rendering can happen by various means, basically the rendering is done by a pluggable rendering system. On Linux this by default means that rendering is conducted by the X11 server, the graphical layer of the Linux operating system. Alternatively Qt also supports rendering using the so called “raster” and “opengl” (note: Qt actually supports more, but those are currently most interesting in a desktop context).

The raster engine, is a custom made software rendering solution, which is basically doing the same as X11 would be doing with the X11 engine, but in the case of raster, the rendering is actually done internally. Also this implementation works on all supported platforms.

— End of blah blah —

We are trying raster for mainly 2 reasons:

Firstly we are interested in seeing how well it really works ๐Ÿ˜‰

Secondly the raster engine seems to perform a lot better than the default rendering for a lot of applications, especially those with a lot of graphics manipulation. Those of you who have used Kubuntu Netbook on an actual netbook with Intel chip will probably know that it actually is quite a drag and not much fun to use under some load (which one gets pretty easy on a puny netbook). However, with raster rendering this is about as snappy as one can expect. So, the netbook experience plays a lot into the decision to try raster, because it really makes an enormous difference on some setups. Additionally it of course also helps on more powerful systems that still (for some odd reason) suffer from this slowness.

If your system is feeling sluggish, please try the newly released Alpha of Kubuntu 11.04 and tell us your experience.

Of course there is a down side to all this. For one raster is not as widely tested as native rendering using X11, for another some applications do simply not work with raster at all.

The second problem comes from when applications use X11 specific features (such as overlay painting), which is however easy enough to fix by just enforcing native rendering for those applications (KWin does this for example). I do not think that this is going to cause a lot of problems, and if there should be too many problems of greater impact we can easy enough switch back to native rendering.

Summary

Of course those 2 changes are only a minor fraction of what goodness you can expect from Kubuntu 11.04, but I feel that those 2 are the biggest changes and thus worth mentioning explicitly. ย Also they are the ones that everyone who helps with Kubuntu testing the following couple of months should keep in mind.

That is it for now, I am sure you will hear about the smaller changes throughout the development cycle. Kubuntu 11.04 is going to rock, of that I am sure!
If you want to help ensuring this, please join us in #kubuntu-devel on irc.freenode.net, where you can have a nice cup of tea and a discussion about the meaning of life ๐Ÿ™‚

Stay friendly!