UDS App for MeeGo and Symbian

Are you attending the Ubuntu Developer Summit? Maybe you want to try the UDS app then ;)

Some time ago I started writing a mobile UDS app to manage UDS affairs on my mobile phone. Being a Qt fanboy and owning multiple phones with Qt the choice of toolkit was rather obvious. And oh boy is it awesome.

Right now there are stable versions for Meego 1.2 Harmattan (Nokia N9 and N950) as well as Symbian^3 (basically every Nokia Symbian device after the N8). Additionally there is a working prototype for Maemo 5 (Nokia N900) as well as platform UI code for Android >= 1.6.

Get it while it is hot! From the Nokia Store (for the N9) or here (for Symbian^3).

If you want to help with the Desktop/Maemo5/Android UI please poke me on IRC or drop me a mail.

The code is available at projects.developer.nokia.com.

This slideshow requires JavaScript.

Posted in kde, kubuntu, mobile, qt, ubuntu, uds | Tagged , , , , , , , , , , | 7 Comments

Dragon Player 3

Only a few minutes ago Ian Monroe, the creator of Dragon Player, announced at the Desktop Summit in Berlin that there will be a Dragon Player 3.


In 2004 a new video player named Codeine was presented by former Amarok rockstar Max Howell, later adopted by Ian and turned into Dragon Player 2, which has served the KDE workspace as default video player for almost 4 years now.

Today the KDE Multimedia community is proud to announce the next evolutionary stage of this simple but powerful player.

Dragon Player 3 is being created using the latest terrific technologies: Phonon’s currently evolving support for QML/Qt Quick and Qt Quick itself. The combination of these technologies allows for rapid creation of awesome looking graphical applications for media playback.

The estimated feature set of Dragon Player 3 is definitely something to long for.

  • As simple and easy to use as its predecessor
  • All the features of its predecessor
  • Smooth animations on startup
  • A more visual and more usable recently viewed display
  • On playback start both Video and Audio fade in, on stop they fade out
  • A revolutionary approach that will make it tons easier to watch a series of videos (yet to be unveiled ;))

Dragon Player 3 will earliest arrive with the KDE workspace 4.8 release, though 4.9 seems more likely.

The current development version of Dragon Player 3 is available in my scratch repository on git.kde.org. It depends on the qml branches of both Phonon and Phonon GStreamer as well as the Qt Quick Desktop Components.

Posted in gsoc, kde, kubuntu, phonon, qt, ubuntu, wdp | Tagged , , , , , | 32 Comments

Phonon VLC 0.4.1 – The Rise of Legacy Media

The Phonominals are proud to present Phonon VLC 0.4.1.

Now available on a KDE FTP mirror near you.

This thrilling new release of the VLC backend for Phonon features vastly improved subtitle loading, support for it, s3m and xm, as well as greater stability in case of a broken libvlc  installation.

But above all it enables audio CD playback in Amarok. Yes. We also care about legacy media ;) . With latest Amarok and Phonon VLC 0.4.1 you are finally able to play audio CDs properly. Of course this improvement is not limited to Amarok, but available to every application that uses Phonon, thanks to the wonderful architecture of Phonon.

by xcode@flickr

Amarok’s Myriam Schweingruber said the following about this wonderful new release:

you people rock and really help us improve the user experience!

VideoLan’s Jean-Baptiste Kempf added:

 pVLC will rock your audiophile poney!

Have fun with Phonon VLC 0.4.1!

Posted in amarok, kde, kubuntu, phonon, qt, ubuntu | Tagged , , , , , | 24 Comments

GSoC: Phonon QML Iteration2 & Meego

In my quest of bringing Phonon, the best multimedia abstraction library from KDE, to QML and Qt Quick I have reached another big iteration.

Following iteration 1 there is a now a new branch called ‘qml-i2‘ for iteration 2.

While i1 was using only existing experimental technology of Phonon, namely the VideoDataOutput class, i2 has moved away from this and now features a closer relation with the Phonon backend (currently only GStreamer).

Also I spent half an hour on creating an alternative appearance for the demo player. It is using Nokia Meego 1.2 Harmattan Qt Quick Components and I already ran it on a Nokia N950, the developer version of the Nokia N9 – looks really slick.

Hot new stuff:

  • Closer to backend
  • Redrawing only of space occupied by video frame
  • Pull instead of push frame access -> no memcopy
  • Faster due to above
  • Still raster/qimage based frame drawing
  • Demo player in demos/qml/videoplayer much improved
  • Harmattan demo player

The overall architecture is really simple to explain:
There are 3 QML Elements for Audio, Video and the Media control itself. The Video element uses a class called VideoGraphicsObject which implements the drawing logic. The VideoGraphicsObject connects to a backend implementation via a well defined interface. The backend implementation does magic in order to obtain raw video data from the video pipeline, emits a signal that a new frame is ready and the VideoGraphicsObject does the drawing.

What is particularly interesting is the way we currently access the frame data. The backend implementation holds exactly one frame, consequently either the pipeline or the VideoGraphicsObject hold a lock on the frame. This has three particular advantages for the time being: a) it does avoid any sort of object copy b) it allows the pipeline to adapt to drawing speed and frequency c) always the most current frame is drawn, even if the drawing operation was delayed.

To test qml-i2 you’ll need both the qml-i2 branch from the Phonon git repository as well as the qml-i2 branch from the Phonon GStreamer git repository. After installing both you should be able to run the demo player in Phonon’s demos/qml/videplayer folder.

Posted in amarok, gsoc, kde, kubuntu, phonon, qt, ubuntu, wdp | Tagged , , , , , , , , , | 6 Comments

Kubuntu and KDE SC 4.7: A Love Story

I am proud to report that Kubuntu 11.10 now has KDE SC 4.7rc.

Over the last couple of weeks the better part of the Kubuntu team has been pulling all nighters to bring the greatness of KDE SC 4.7 to Kubuntu.

It was quite an initial effort to get packages ready due to some architectural changes with regards to distribution of sources (I suppose I should write about that at some point ;) ). But now that we have almost all of them ready for 11.10 we will be able to bring you release packages of 4.7.0 in the best quality possible for both 11.10 and 11.04.

On a related note KDE SC 4.7.0 is supposed to be available on July 27.

Of course we would not be in that good a position for the 4.7.0 release without the excellent team of Kubuntu Ninjas, the elite release packagers working in the dungeon of our IRC channel.

Together they prepared 130 source packages for upload, 57 of those were new to the Kubuntu archive and therefore required special attention. Additionally 6 new scripts were created to help manage the increased amount of packages.

A big thank you goes to:

  • Romain Perier – french reinforcement for the ninjas, though he is becoming a knight who says ni at the court of Phonon (or so someone told me)
  • Rohan Garg – the ever so fearless licensing specialist and he is the one responsible for Kate still being broken (in case you were wondering)
  • Michał Zając – apparently he won in the lottery and went on a skateboarding trip through Poland, he has not been the same ever since
  • Philip Muškovac – not much of a blogger but otherwise a nice enough chap, also he coordinated the whole effort and might become Kubuntu developer some time soon (no idea what latter entails, but it sure sounds cool)
  • Felix Geyer – I believe he is living in a data center as he uploaded half the packages in less than a day, also he came up with a build status overview web page (I guess that supports my theory?)
  • Scott Kitterman – the man who actually gets new stuff into the archive, or not, depending on whether he gets enough cookies, sometimes proper licensing also helps
  • Myself – the grumpy upstream developer who gets annoyed from not having packages :P
Greetings from your friendly Kubuntu crew :)
Posted in kde, kubuntu, ubuntu, wdp | Tagged , , , | 26 Comments

GSoC: Details on Phonon in QML

Native Phonon QML Player

As mentioned in my previous blog post I am working on bringing Phonon, the best multimedia abstraction library from KDE, to QML and Qt Quick.

Now I’d like to go more into detail about what the point of all this is and how this is going to rock our world.

Before Qt Quick we had widgets (imagine them as boxes). These were easy to use for Phonon, because every box on just about every operating system has some way to draw video content on it. Therefore this was nicely implemented in the frameworks underneath Phonon, so only the high-level Qt integration had to be done. With Qt Quick we don’t have proper boxes anymore, not in the way the operating systems like them anyway. Consequently we need to do some work to get from where we are to Qt Quick.

How will this work you might ask. Really it is actually very simple. In Qt Quick rather than having a random box where you can draw your video frames on, you have declarative items, which in essence also are boxes but unknown to the operating system. In Qt Quick those boxes are rendered using Qt internal technology. Right now that would be a software rasterizing approach or similar magic supported by QPainter, in Qt 5 this will actually all be done using OpenGL to enable much more awesome and complex applications as essentially the whole user interface will be rendered using GL.

Even though Qt 5 will do this vastly different, the concept of making video playback happen with Qt Quick is the same in both cases. You get your video frame, hand it to your Qt Quick item and in there you draw the frame depending on available capabilities and what not.

Ok, clearly there is various degrees of complexity involved on both ends (video/audio sync? drawing speed? …). Some of the more interesting programming challenges I will blog about next week.

Anyhow, people who know me a bit will notice that this post is unusually long, and clearly I would not blog that much blah without offering something to try ;) So, get the Phonon QML branch iteration1 and take it for a test drive if you want. There is an audio and video demo in demos/qml (just make sure you have audio.wav or vidoe.ogv in the demo folders).

Iteration1 actually uses only technology that is already available (namely stock Phonon QObjects for Media and Audio and VideoDataOutput from experimental for Video). Future iterations will get rid of the dependency on VideoDataOutput as the QML branch is moving parts of the magic in the Phonon backends to allow for more ways to optimize the entire drawing process. In fact my local branches already have something that draws without the overhead of VideoDataOutput ;)

If you want to watch development at large you might want to check out the main qml branch.

I’ll blog soon about the architecture (once I have figured it out better ^^), meanwhile you can take a look at this picture (for Phonon GStreamer).

Posted in amarok, kde, kubuntu, wdp, ubuntu, qt, phonon, gsoc | Tagged , , , , , , | 12 Comments

GSoC: Phonon and QML

This summer the Phonominals have something particularly awesome for you in store: native QML elements.

Phonon is the multimedia abstraction layer for Qt brought to you by the KDE community. QML is the new and cool way to create snazzy computer applications with Qt.

Through Google Summer of CodeI will be working on bringing these two great technologies closer together.

Why is this good you ask? Well….

  • QML allows for more designer involved computer application development -> better designed user interfaces
  • QML gives more freedom with regards to what the user interface can look like -> more engaging and natural interfaces
  • Phonon allows for rapid creation of media applications -> more time for actual features

In conclusion: Phonon and QML together will bring us better designed, better looking and feature rich media applications such as video players. Of course it also allows non-media centered applications to easily emit audio or video.

Finally, if you are a developer you might want to look at this code sample, which might very well be how one will use Phonon in QML.

import Qt 4.7
import Phonon 1.0

Media {
    source: "video.webm"

    Audio {
        volume: 5
    }

    Video {
        width: 320
        height: 240
    }
}
Posted in amarok, kde, kubuntu, phonon, qt, ubuntu, wdp | Tagged , , , , , | 10 Comments