FS#11070 - Phonon does not recognizes gstreamer backend

Attached to Project: Arch Linux
Opened by Hugo Doria (hdoria) - Thursday, 31 July 2008, 01:30 GMT
Last edited by Pierre Schmitz (Pierre) - Sunday, 14 September 2008, 13:15 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Pierre Schmitz (Pierre)
Architecture All
Severity Low
Priority Normal
Reported Version None
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:

Any application that uses sound output through Phonon, such as KDE applications, does not work.

It seems that the problem is that it is looking for the backends in Qt directory, when in reality they are into KDE directory. The solution a user (thotypous) found was to make a symbolic link:

ln-s / usr/lib/kde4/plugins/phonon_backend / usr / lib / qt / plugins

Additional info:
phonon-4.20

NOTE: Phonon PKGBUILD does not work too. The source url is wrong and it is missing "automoc4" in makedepends.
This task depends upon

Closed by  Pierre Schmitz (Pierre)
Sunday, 14 September 2008, 13:15 GMT
Reason for closing:  Works for me
Comment by Paulo Matias (thotypous) - Thursday, 31 July 2008, 01:48 GMT
Sound in KDE applications actually works without doing the symbolic link.

The problem occurs when you try to use a pure Qt application (i.e. a Qt application that does not use kdelibs). As you can see, Phonon was included since Qt 4.4 as a part of the official Qt distribution, independent from KDE.

But Arch's Qt is packaged without phonon. Nothing more fair from that, as there is a "phonon" package in our repositories. The problem is that pure Qt applications will look for phonon at /usr/lib/qt/plugins, as Qt's phonon is to be installed there. In the order side, KDE applications will look at /usr/lib/kde4/plugins. The solution was to link phonon_backend, as Hugo said.

Patching qt to look for phonon at /usr/lib/kde4/plugins seems to be complicated and awkward, so the best solution I see is to make this symbolic link here at the phonon package.

About the PKGBUILD, the phonon sources can be found at ftp://ftp.kde.org/pub/kde/stable/phonon/4.2.0/phonon-4.2.0.tar.bz2. The md5sum in the PKGBUILD is incorrect, too.

As Hugo said, "automoc4" is missing from makedepends.
Comment by Pierre Schmitz (Pierre) - Thursday, 31 July 2008, 01:57 GMT
Yes, sorry I'll fix the PKGBUILD. And I have no idea why the source file is gone.

Do you know of any app which does not work with phonon? ATM I just cannot reproduce this problem. (Phonon with KDE apss like Dragon player or Juk work fine)
Comment by Paulo Matias (thotypous) - Thursday, 31 July 2008, 02:21 GMT
Hi, Pierre! Thanks a lot for your fast response.

I'm testing Phonon with the example applications that come with Qt - ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-4.4.0.tar.gz

The applications are located at examples/phonon/capabilities and examples/phonon/musicplayer. You can compile them by calling qmake && make inside each directory.
Comment by Paulo Matias (thotypous) - Thursday, 31 July 2008, 03:01 GMT
If you don't want to download and unpack the entire Qt source code, that is indeed very big (as it contains all documentation and so on), you can download only the phonon examples at: http://matias.archlinux-br.org/files/phonon-examples.tar.gz

This is a small 6kb file. Only download, unpack, and compile phonon/capabilities and phonon/musicplayer running qmake && make in each directory.
Comment by Pierre Schmitz (Pierre) - Thursday, 31 July 2008, 09:48 GMT
Those examples are working fine here. I tried gstreamer and xine backend. But I must say I couldn't make sure gstreamer is really used here. However: What I miss is an option in QT to build it with system phonon. For now you can only enable the intranal one or disable it completly.
Comment by Paulo Matias (thotypous) - Thursday, 31 July 2008, 19:52 GMT
> What I miss is an option in QT to build it with system phonon

Well, the Qt phonon is actually the same phonon as the KDE one, but a "frozen" version of it. KDE phonon is actually 100% compatible with Qt phonon, except that the path it looks for the backends is a different directory.

> I couldn't make sure gstreamer is really used here

The xine backend isn't included in the "phonon" package. Note that /usr/share/kde4/services/phononbackends/xine.desktop and /usr/lib/kde4/phonon_xine.so are owned by the "kdebase-runtime" package. The "phonon" package only includes the gstreamer backend. The gstreamer backend is the only backend that would be included by the internal Qt phonon, too.

> Those examples are working fine here

Had you done any additional configurations in your phonon to get it working?

NOTE: I'm not running KDE. Maybe it has something to do with that. Did you tried to run the applications inside another window manager?

Here I'm using the latest phonon and qt from extra (phonon 4.2.0-1 and qt 4.4.0-7), and if I do NOT make the symlink, I get the following output from the examples:


$ ./capabilities
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
$ ./musicplayer
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
Phonon::createPath: Cannot connect Phonon::MediaObject(no objectName) to Phonon::AudioOutput(no objectName).
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded


The windows open, but the sound doesn't work, as it does not find the backend. Things only work correctly when creating the symlink, as below:

ln -s /usr/lib/kde4/plugins/phonon_backend /usr/lib/qt/plugins

Comment by Paulo Matias (thotypous) - Thursday, 31 July 2008, 20:16 GMT
Perhaps it works when running inside KDE because KDE sets the environment variable QT_PLUGIN_PATH to /usr/lib/kde4/plugins.

But setting it here outside KDE messed up my Qt theme, and some text inside the Qt applications became unreadable.

Screenshot follows: http://i35.tinypic.com/308fy0y.png

So the symlink is still the best solution I found by now.
Comment by Pierre Schmitz (Pierre) - Thursday, 31 July 2008, 23:46 GMT
Strange, I still cannot reproduce this. I checked it within a chroot which has not kde stuff installed; just phonon, gstreamer and qt. I compiled musicplayer and it runs fine in twm using gstreamer. It's not that I wouldn't add the symlink if needed, but atm I am not sure if the problem is not some configuration issue at your site. Maybe we'll see if someone else can confirm this problem?
Comment by pibarnas (pibarnas) - Friday, 01 August 2008, 02:49 GMT
Same thotypous describe here, including terminal errors. Solved with sudo ln -s /usr/lib/kde4/plugins/phonon_backend /usr/lib/qt/plugins.
Comment by Rafael Gonçalves Martins (rafaelmartins) - Friday, 01 August 2008, 03:22 GMT
As thotypous and pibarnas I had these same problems and the same terminal errors, resolved the same way.
Comment by xzy (fendou) - Sunday, 17 August 2008, 15:54 GMT
I have the same problem! I want to use Qt/E in the arm platform. It has no KDE.
I build the qt/e in the /mnt/nfs/qte6, and under the/mnt/nfs/qte6/plugins/phonon_backend there is a file named libphonon_gstreamer.so.
when I run the demos,
$ ./capabilities
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
$ ./musicplayer
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
Phonon::createPath: Cannot connect Phonon::MediaObject(no objectName) to Phonon::AudioOutput(no objectName).
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded


What can i do ?

Loading...