[Development] The dark side of QtMultimedia

Nichols Andy Andy.Nichols at theqtcompany.com
Sat Nov 15 18:54:29 CET 2014

Hi Kevin and others,

I still think that this discussion has derailed.  I do not think Phonon is the solution to fix or replace QtMultimedia so I hope to make this clear so we can move on to a real solution.

The current state of Phonon is thus:

Phonon is part of the KDE project and is licensed as LGPLv2.1 only.  This is an issue for Qt because if Phonon is to again become our solution for providing multimedia, then it only really covers a percentage of our user base.  It is important for us to be able to offer flexible licensing options to our customers, and without the option to do so this is already a non-starter.  The same goes for the rest of the KDE 5 frameworks.  Some people are OK with using the LGPL license and that is fine, but the Qt product itself needs more options.

Phonon is only somewhat actively developed, as I counted about 15 real commits in the phonon/master and 30 real commits the the phonon-gstreamer/master repository this year (commits that weren’t merges or version bumps).  By comparison QtMultimedia received this year around 150 commits from Christian and Yoann alone, with over 40 additional unique contributors with at least one patch this year.  Sure we have a much large scope in having to support so many platforms, but that is not insignificant.

Phonon is primarily targeted at Qt 4.  It is compatible with Qt 5, but in the same way that many Qt 4 applications can easily be ported to Qt 5 due to us being mostly source compatible.

Phonon does not have support for Qt Quick 2.  This is related to the previous point, as there is currently only support for QtQuick 1 (QGraphicsView).  Additional development effort would be required to fully bring Phonon into the Qt 5 era.

Phonon is only supported on the Desktop platforms.  Any support for mobile platforms is theoretical in that the libVLC and GStreamer dependencies of the backends have support for running there.  

Phonon being part of the KDE project uses the Cmake build system.  While not a problem in itself, a Qt essentials module should distributed as part of Qt 5 should be build with the default build system qmake.  Not a hard problem to overcome but yet another barrier to current acceptance.

Phonon has dropped its native backends in favour of using libVLC and GStreamer.  This seems to be the Phonon project’s solution to not having enough resources available to maintain native backends, and while this is a tempting option we have considered for QtMultimedia, it may not be the right solution either.  If we depend on a 3rd party library like libVLC or GStreamer (on platforms other than Linux), then if someone would like to use the multimedia functionality, then they would need to have this dependency when developing and deploy it along with their application.  We likely could not distribute either libVLC or GStreamer along with Qt releases due to licensing and patent concerns, so this would be one more barrier to getting started.  What is nice about using the native frameworks is that they are already available on the machines, and they give the most flexibility with regards to features and performance.  Using the native backends also means that deployment is easier as the end user will not need to bundle libVLC or GStreamer with their application.  If anything I think we should offer these backends as an option(cross-platform GStreamer and libVLC) along side the existing native backends in QtMultimedia.

Most of these issues could be resolved with some development effort, however this will not fix the critical issue of licensing.  

Hopefully this adds some perspective to the discussion.

Andy Nichols

More information about the Development mailing list