What packages QAudioDecoder may require on Ubuntu and CentOS?

If QAudioDecoder does not decode mp3, reporting a format error (GStreamer; Unable to start decoding process), the following package can help:
On Ubuntu:

apt-get install gstreamer0.10-fluendo-mp3

On CentOS:

yum -y install http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum install gstreamer{,1}-plugins-ugly


Except mp3 files, there is also some specific subset of 24/32bit wav files, that QAudioDecoder may not decode, reporting format error. To figure out what packages these files may require I used the following simple command:

strace -e open build/SoundTest -t sounds/incoming24.wav |& sed '/creating QAudioDecoder/,$!d' | sed '/QAudioDecoder created/q' | sed '/ENOENT/d' | sed 's@open("\([^"]*\)".*@\1@' | while read i; do echo $(basename $i); done | grep gst | uniq | sort

where SoundTest is a test application that can be downloaded from GitHub. This command outputs the following on different machines:

KUbuntu (wav decodes) CentOS (wav does not decode) Astra (wav does not decode)
libgstapp-1.0.so.0
libgstaudio-1.0.so.0
libgstaudioconvert.so
libgstaudiodecoder.so
libgstaudiodecoder.so
libgstbase-1.0.so.0
libgstcamerabin.so
libgstmediacapture.so
libgstmediaplayer.so
libgstpbutils-1.0.so.0
libgstplayback.so
libgstreamer-1.0.so.0
libgsttag-1.0.so.0
libgstvideo-1.0.so.0
libqgsttools_p.so.1
libgstapp-0.10.so.0
libgstaudio-0.10.so.0
libgstaudioconvert.so
libgstaudiodecoder.so
libgstaudiodecoder.so
libgstbase-0.10.so.0
libgstcamerabin.so
libgstinterfaces-0.10.so.0
libgstmediacapture.so
libgstmediaplayer.so
libgstpbutils-0.10.so.0
libgstplaybin.so
libgstreamer-0.10.so.0
libgstvideo-0.10.so.0
libqgsttools_p.so.1
gstreamer-0.10.mo
libgstapp-0.10.so.0
libgstaudio-0.10.so.0
libgstaudioconvert.so
libgstaudiodecoder.so
libgstaudiodecoder.so
libgstbase-0.10.so.0
libgstcamerabin.so
libgstinterfaces-0.10.so.0
libgstmediacapture.so
libgstmediaplayer.so
libgstpbutils-0.10.so.0
libgstplaybin.so
libgstreamer-0.10.so.0
libgstvideo-0.10.so.0
libqgsttools_p.so.1

Except the packages have different versions (1.0 and 0.10), the only noticeable difference between these machines it that there is libgsttag module that loads on KUbuntu where wav decodes successfully does not load on CentOS and Astra. And there is libgstinterfaces that loads on CentOS and Astra but does not load on KUbuntu.
Another alternative of this command is:

strace -e open examples/build/SoundTest -t sounds/incoming24.wav 2>&1 >/dev/null | sed '/ENOENT/d' | sed 's@open("\([^"]*\)".*@\1@' | while read i; do echo $(basename $i); done | grep gst | uniq | sort

Also for some reason on my CentOS gst-lanch does not work, but works on KUbuntu and Astra:

gst-launch-1.0 filesrc location=somefile.wav ! wavparse ! alsasink

On KUbuntu machine where sound decodes I have the following GStreamer packages:

dpkg -l | grep gstreamer

ii gir1.2-gstreamer-0.10 0.10.36-1.2ubuntu3 amd64 Description: GObject introspection data for the GStreamer library
ii gir1.2-gstreamer-1.0 1.2.4-0ubuntu1.1 amd64 Description: GObject introspection data for the GStreamer library
ii gstreamer0.10-alsa:amd64 0.10.36-1.1ubuntu2 amd64 GStreamer plugin for ALSA
ii gstreamer0.10-fluendo-mp3:amd64 0.10.23.debian-3 amd64 Fluendo mp3 decoder GStreamer 0.10 plugin
ii gstreamer0.10-nice:amd64 0.1.4-1 amd64 ICE library (GStreamer 0.10 plugin)
ii gstreamer0.10-plugins-bad:amd64 0.10.23-7.2ubuntu1.3 amd64 GStreamer plugins from the “bad” set
ii gstreamer0.10-plugins-bad-multiverse 0.10.21-1ubuntu3 amd64 GStreamer plugins from the “bad” set (Multiverse Variant)
ii gstreamer0.10-plugins-base:amd64 0.10.36-1.1ubuntu2 amd64 GStreamer plugins from the “base” set
ii gstreamer0.10-plugins-base-apps 0.10.36-1.1ubuntu2 amd64 GStreamer helper programs from the “base” set
ii gstreamer0.10-plugins-good:amd64 0.10.31-3+nmu1ubuntu5.2 amd64 GStreamer plugins from the “good” set
ii gstreamer0.10-plugins-ugly:amd64 0.10.19-2ubuntu5 amd64 GStreamer plugins from the “ugly” set
ii gstreamer0.10-pulseaudio:amd64 0.10.31-3+nmu1ubuntu5.2 amd64 GStreamer plugin for PulseAudio
ii gstreamer0.10-qapt 2.1.70-0ubuntu4.2 amd64 GStreamer plugin to install codecs using QApt
ii gstreamer0.10-tools 0.10.36-1.2ubuntu3 amd64 Tools for use with GStreamer
ii gstreamer0.10-x:amd64 0.10.36-1.1ubuntu2 amd64 GStreamer plugins for X11 and Pango
ii gstreamer1.0-alsa:amd64 1.2.4-1~ubuntu2 amd64 GStreamer plugin for ALSA
ii gstreamer1.0-clutter 2.0.8-1build1 amd64 Clutter PLugin for GStreamer 1.0
ii gstreamer1.0-fluendo-mp3:amd64 0.10.23.debian-3 amd64 Fluendo mp3 decoder GStreamer 1.0 plugin
ii gstreamer1.0-libav:amd64 1.2.4-1~ubuntu1 amd64 libav plugin for GStreamer
ii gstreamer1.0-nice:amd64 0.1.4-1 amd64 ICE library (GStreamer plugin)
ii gstreamer1.0-plugins-bad:amd64 1.2.4-1~ubuntu1.1 amd64 GStreamer plugins from the “bad” set
ii gstreamer1.0-plugins-bad-faad:amd64 1.2.4-1~ubuntu1.1 amd64 GStreamer faad plugin from the “bad” set
ii gstreamer1.0-plugins-bad-videoparsers:amd64 1.2.4-1~ubuntu1.1 amd64 GStreamer videoparsers plugin from the “bad” set
ii gstreamer1.0-plugins-base:amd64 1.2.4-1~ubuntu2 amd64 GStreamer plugins from the “base” set
ii gstreamer1.0-plugins-base-apps 1.2.4-1~ubuntu2 amd64 GStreamer helper programs from the “base” set
ii gstreamer1.0-plugins-good:amd64 1.2.4-1~ubuntu1.3 amd64 GStreamer plugins from the “good” set
ii gstreamer1.0-plugins-ugly:amd64 1.2.3-2build1 amd64 GStreamer plugins from the “ugly” set
ii gstreamer1.0-pulseaudio:amd64 1.2.4-1~ubuntu1.3 amd64 GStreamer plugin for PulseAudio
ii gstreamer1.0-tools 1.2.4-0ubuntu1.1 amd64 Tools for use with GStreamer
ii gstreamer1.0-x:amd64 1.2.4-1~ubuntu2 amd64 GStreamer plugins for X11 and Pango
ii libgstreamer-plugins-bad0.10-0:amd64 0.10.23-7.2ubuntu1.3 amd64 GStreamer shared libraries from the “bad” set
ii libgstreamer-plugins-bad1.0-0:amd64 1.2.4-1~ubuntu1.1 amd64 GStreamer development files for libraries from the “bad” set
ii libgstreamer-plugins-base0.10-0:amd64 0.10.36-1.1ubuntu2 amd64 GStreamer libraries from the “base” set
ii libgstreamer-plugins-base0.10-0:i386 0.10.36-1.1ubuntu2 i386 GStreamer libraries from the “base” set
ii libgstreamer-plugins-base1.0-0:amd64 1.2.4-1~ubuntu2 amd64 GStreamer libraries from the “base” set
ii libgstreamer-plugins-base1.0-0:i386 1.2.4-1~ubuntu2 i386 GStreamer libraries from the “base” set
ii libgstreamer-plugins-good1.0-0:amd64 1.2.4-1~ubuntu1.3 amd64 GStreamer development files for libraries from the “good” set
ii libgstreamer0.10-0:amd64 0.10.36-1.2ubuntu3 amd64 Core GStreamer libraries and elements
ii libgstreamer0.10-0:i386 0.10.36-1.2ubuntu3 i386 Core GStreamer libraries and elements
ii libgstreamer0.10-dev 0.10.36-1.2ubuntu3 amd64 GStreamer core development files
ii libgstreamer1.0-0:amd64 1.2.4-0ubuntu1.1 amd64 Core GStreamer libraries and elements
ii libgstreamer1.0-0:i386 1.2.4-0ubuntu1.1 i386 Core GStreamer libraries and elements
ii libgstreamer1.0-0-dbg:amd64 1.2.4-0ubuntu1.1 amd64 Core GStreamer libraries and elements
ii libgstreamer1.0-dev 1.2.4-0ubuntu1.1 amd64 GStreamer core development files
ii libreoffice-avmedia-backend-gstreamer 1:4.2.8-0ubuntu4 amd64 GStreamer backend for LibreOffice
ii phonon-backend-gstreamer:amd64 4:4.7.80-0ubuntu2~ubuntu14.04 amd64 Phonon GStreamer 1.0.x backend
ii phonon-backend-gstreamer-common:amd64 4:4.7.80-0ubuntu2~ubuntu14.04 amd64 Phonon GStreamer 1.0.x backend icons
ii phonon-backend-gstreamer1.0 4:4.7.80-0ubuntu2~ubuntu14.04 all transitional package

but on Astra I had only these at first:

ii gstreamer0.10-alsa:amd64 0.10.36-1.1 amd64 GStreamer plugin for ALSA
ii gstreamer0.10-doc 0.10.36-1.2 all GStreamer core documentation and manuals
ii gstreamer0.10-fluendo-mp3:amd64 0.10.23.debian-2 amd64 Fluendo mp3 decoder GStreamer plugin
ii gstreamer0.10-plugins-base:amd64 0.10.36-1.1 amd64 GStreamer plugins from the “base” set
ii gstreamer0.10-plugins-good:amd64 0.10.31-3+nmu1ubuntu5 amd64 GStreamer plugins from the “good” set
ii gstreamer0.10-tools 0.10.36-1.2 amd64 Tools for use with GStreamer
ii libgstreamer-plugins-base0.10-0:amd64 0.10.36-1.1 amd64 GStreamer libraries from the “base” set
ii libgstreamer0.10-0:amd64 0.10.36-1.2 amd64 Core GStreamer libraries and elements
ii phonon-backend-gstreamer:amd64 4:4.7.1-1ubuntu4 amd64 Phonon GStreamer 0.10.x backend
ii phonon-backend-gstreamer-common:amd64 4:4.7.1-1ubuntu4 amd64 Phonon GStreamer 0.10.x backend icons
ii phonon4qt5-backend-gstreamer:amd64 4:4.7.1-1ubuntu4 amd64 Phonon4Qt5 GStreamer 0.10.x backend

then I installed gstreamer0.10-plugins-ugly and gir1.2-gstreamer-0.10, but with no success.
Further experimentation with tracing gst-launch.X.X on Astra shown that there a gstreamer 1.0 installed on the system but it is not listed with ‘dpkg -l’ command

strace -e open gst-launch-1.0 filesrc location=incoming32.wav ! wavparse ! alsasink 2>&1 >/dev/null | sed '/ENOENT/d' | sed 's@open("\([^"]*\)".*@\1@' | while read i; do echo $(basename $i); done | grep gst | uniq | sort

libgstalsa.so
libgstaudio-1.0.so.0
libgstbase-1.0.so.0
libgstcoreelements.so
libgstpbutils-1.0.so.0
libgstreamer-1.0.so.0
libgstriff-1.0.so.0
libgsttag-1.0.so.0
libgstvideo-1.0.so.0
libgstwavparse.so

Packages on CentOS:

yum list installed | grep gstreamer

PackageKit-gstreamer-plugin.x86_64 0.8.9-11.el7.centos @anaconda
gstreamer.x86_64 0.10.36-7.el7 @anaconda
gstreamer-devel.x86_64 0.10.36-7.el7 installed
gstreamer-plugins-bad-free.x86_64 0.10.23-20.el7 @anaconda
gstreamer-plugins-bad-nonfree.x86_64
gstreamer-plugins-base.x86_64 0.10.36-10.el7 @anaconda
gstreamer-plugins-good.x86_64 0.10.31-11.el7 @anaconda
gstreamer-plugins-ugly.x86_64 0.10.19-17.el7.nux @nux-dextop
gstreamer-tools.x86_64 0.10.36-7.el7 @anaconda
gstreamer1.x86_64 1.0.7-4.el7 @anaconda
gstreamer1-devel.x86_64 1.0.7-4.el7 @c7-media
gstreamer1-plugins-bad-free.x86_64 1.0.7-4.el7 @anaconda
gstreamer1-plugins-bad-freeworld.x86_64
gstreamer1-plugins-base.x86_64 1.0.7-5.el7 @anaconda
gstreamer1-plugins-good.x86_64 1.0.7-5.el7 @anaconda
gstreamer1-plugins-ugly.x86_64 1.0.6-2.el7.nux @nux-dextop
phonon-backend-gstreamer.x86_64 2:4.6.3-3.el7 @anaconda

Finally I came to the conclusion that looks like GStreamer 0.10 does not support WAVE_FORMAT_EXTENSIBLE (see list of WAV formats) and so QT 5.5.1 up to 5.7. QT 5.8 uses GStreamer 1.0 by default.
QT 5.5.1 can be compiled with ‘-gstreamer 1.0’ option, but this options requires some development packages.

git clone --recursive https://github.com/qtproject/qt5.git --branch 5.5.1
./configure -prefix $PWD/qtbase -opensource -nomake tests -nomake examples -debug -confirm-license -gstreamer 1.0
make -j4

Links related to QT:

Links related to CentOS:

  1. How to make QAudioDecoder decode mp3 on CentOS?
  2. Something related to installing GStreamer on CentOS
  3. Some other link about GStreamer on CentOS
  4. How to list all available packages from a repository
  5. Setting up Nux Dextop on CentOS or RHEL
  6. Nux Dextop repository may or may not be up to date. Use it at your own risk.

Leave a Reply

Your email address will not be published. Required fields are marked *