yay me

Multimedia frameworks in Qt

So the three multimedia API’s that are planned for inclusion in Qt are as follows:

Phonon. The first multimedia API in Qt, written mostly by Matthias Kretz and with some help from Trolltech to Qt-ify the API, and included in Qt since 4.4.0. Written as a ‘replacement’ for various multimedia libraries (like Xine, libvlc, gstreamer), abstracting the API away, so the application developer doesn’t have to worry about which multimedia library they use, and if it got abandoned (then it would just take someone to write a new backend, and voila, all the apps worked again, without having to be updated to the new API).

QtMultimedia. A low-level multimedia API written by the Qt Brisbane office, and to be included in Qt 4.6.0. It will probably make sense to use as much of this API as possible in the different Phonon backends, as it provides platform-agnostic access to audio outputs, inputs, and some video handling. I’ve talked a bit with the KMess developers and with Matthias Kretz, and we will probably try to get webcam/video input support into QtMultimedia, and then eventually provide a convenience API for this in Phonon. This will probably also make it easy to simplify and crossplatformify parts of the KDE platform plugin for Phonon (which manages sound devices, amongst other things).

QtMobility/multimedia. I don’t think it is intended for inclusion in Qt, but in a separate “mobility” library (Qtopia^WQt Extended?). I replicates a lot of the functionality in Phonon, but I think that maybe is intentional. I would like to see some more information of what was lacking in Phonon, though, and why they wanted to start from scratch.

If I’m mistaken in any way, feel free to correct me in the comments (I moved my blog to wordpress.com, because I’m lazy and didn’t feel like implementing comment support in my django-based blog).

In semi-related news; I’ll be taking the job as the semi-official maintainer of Phonon until Matthias gets finished with his thesis (at least). That means I’ll be trying to keep the unloved parts of Phonon from bitrotting (like the tests…), fixing bugs, reviewing patches that come in, etc.

I’ve also started the work on an advanced configuration dialog for Phonon-Xine, like the Xine configuration dialog in Codeine (the Xine-based video player in KDE 3), exposing all the available options, without having to edit the config file by hand.

I’m also conspiring with blauzahl to hold a bug-day for Phonon, there’s a lot of untriaged, duplicated and otherwise unsuited bugs against Phonon, bordering on unmanagable. So stay tuned, if you think bugs are fun.

Lastly, in completely unrelated news, I’ve started porting Kredentials to KDE 4. It’s a tiny tray-application for managing (acquiring and automatically renewing) kerberos tickets. I’m also almost completely finished with the KDE 4 port of Filelight, I think I nailed one of the last regressions today (the cutting off of edges of the radial map).

Well we can see in a comment from Gerard that the Qt Multimedia announcement was actually a passive-aggressive announcement that Phonon is being deprecated in Qt. So Phonon will continue to be supported in Qt 4, in the same way QHttp is (basically on life support).http://labs.trolltech.com/blogs/2009/09/03/multimedia/

Glad to hear that Phonon has a new official mantainer! Will you maintain just the Phonon API or also the backends? I’d like to report a few issues with the gstreamer and quicktime backends. What’s the best place to do it?

Some time ago, you mentioned you would write a QIODevice – ring buffer, something I think I need for a project I have in mind (something I think a lot of people would need…) – did you ever get it implemented?