[Interest] QtMultimedia how to crosscompile with GStreamer

Denis Shienkov denis.shienkov at gmail.com
Tue Nov 3 11:54:12 CET 2015


Hi all,

I have Ubuntu 14.04 i386 as host OS and I want to cross-compile Qt 5.5.1
for embedded ARM target.
I already have a cross-compiled Qt 5.5.1, but with incomplete QtMultimedia
module (without GStreamer 1.0).

The problem is that pkg-config utility does not resolved the installed
GStreamer parts.

I have the rootfs in which my Qt were installed (e.g. in
/home/builder/Projects/tegra/rootfs/opt).

Now, to build the QtMultimedia I use this script:

{code}
#!/bin/sh

TEGRA_SYSROOT=/home/builder/Projects/tegra/rootfs

export PKG_CONFIG_DIR=
export
PKG_CONFIG_LIBDIR=${TEGRA_SYSROOT}/usr/lib/pkgconfig:${TEGRA_SYSROOT}/usr/share/pkgconfig:${TEGRA_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig
export PKG_CONFIG_SYSROOT_DIR=${TEGRA_SYSROOT}

TEGRA_QMAKE=/home/builder/Projects/tegra/rootfs/opt/qt-5.5/bin/qmake

${TEGRA_QMAKE} /home/builder/Projects/tests/qtmultimedia/qtmultimedia.pro
GST_VERSION=1.0
{code}

Also, I modified the qtmultimedia.pro with:

{code}
....
} else:!android {
    contains(QT_CONFIG, alsa):qtCompileTest(alsa)
    contains(QT_CONFIG, pulseaudio):qtCompileTest(pulseaudio)

    isEmpty(GST_VERSION) {
        warning("*** NO GST_VERSION are set, try to take from QT_CONFIG")
        contains(QT_CONFIG, gstreamer-0.10) {
            GST_VERSION = 0.10
        } else: contains(QT_CONFIG, gstreamer-1.0) {
            GST_VERSION = 1.0
        } else {
        }
    } else {
        warning("*** GST_VERSION are set to" $$GST_VERSION)
    }

    cache(GST_VERSION, set)
    !isEmpty(GST_VERSION) {
        qtCompileTest(gstreamer)
        qtCompileTest(gstreamer_photography)
        qtCompileTest(gstreamer_encodingprofiles)
        qtCompileTest(gstreamer_appsrc)
        qtCompileTest(linux_v4l)
    } else {
        warning("*** NO GST_VERSION are set")
    }

    qtCompileTest(resourcepolicy)
    qtCompileTest(gpu_vivante)
}

load(qt_parts)

!config_alsa:warning("*** NO ALSA")
!config_pulseaudio:warning("*** NO PULSE")
!config_gstreamer:warning("*** NO GSTREAMER")
!config_gstreamer_photography:warning("*** NO GSTREAMER PHOTO")
!config_gstreamer_encodingprofiles:warning("*** NO GSTREAMER ENCODING")
!config_gstreamer_gstreamer_appsrc:warning("*** NO GSTREAMER APP")
!config_linux_v4l:warning("*** NO V4L")
{code}

And after running this script I got following:

{quote}
builder at tegra-build-server:~/Projects/tests/build-qtmultimedia$
../qmake-script
Info: creating cache file
/home/builder/Projects/tests/build-qtmultimedia/.qmake.cache
Checking for openal... no
Checking for alsa... yes
Project WARNING: *** GST_VERSION are set to 1.0
Checking for gstreamer... no
Checking for gstreamer_photography... no
Checking for gstreamer_encodingprofiles... no
Checking for gstreamer_appsrc... no
Checking for linux_v4l... yes
Checking for resourcepolicy... no
Checking for gpu_vivante... no
Project WARNING: *** NO PULSE
Project WARNING: *** NO GSTREAMER
Project WARNING: *** NO GSTREAMER PHOTO
Project WARNING: *** NO GSTREAMER ENCODING
Project WARNING: *** NO GSTREAMER APP
builder at tegra-build-server:~/Projects/tests/build-qtmultimedia$
{quote}

Howewer, my rootfs all GStreamer's parts are present:

{code}
builder at tegra-build-server:~/Projects/tests/build-qtmultimedia$ sudo find
/home/builder/Projects/tegra/rootfs/ -name '*.pc' | grep gstreamer
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-app-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-plugins-good-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-base-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-net-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-rtp-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-video-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-pbutils-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-allocators-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-plugins-base-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-tag-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-fft-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-check-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-audio-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-rtsp-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-sdp-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-riff-1.0.pc
/home/builder/Projects/tegra/rootfs/usr/lib/arm-linux-gnueabihf/pkgconfig/gstreamer-controller-1.0.pc
builder at tegra-build-server:~/Projects/tests/build-qtmultimedia$
{code}

What I am doing wrong?


BR,
Denis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20151103/2e695738/attachment.html>


More information about the Interest mailing list