summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@theqtcompany.com>2015-02-13 16:41:58 +0100
committerYoann Lopes <yoann.lopes@theqtcompany.com>2015-02-16 16:01:34 +0000
commit710cb8e2fc421b2ae752dd533f4d2eb9c4521f28 (patch)
tree009b1695be023b464ba14559067d298c7627de70
parent478f319df95321a1569f8f3c1ce1fe0847abfbbd (diff)
Add configure option and tests for GStreamer.
Qt Multimedia can be compiled with either GStreamer 0.10 or 1.0. 0.10 takes precedence over 1.0 if both are available (1.0 will be used by default in Qt 5.6). Auto-detection can be overridden with -gstreamer <version>. Change-Id: I74d58d2c146c842902375b4d1e5e6e96d32addac Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
-rw-r--r--config.tests/unix/gstreamer/gstreamer.cpp42
-rw-r--r--config.tests/unix/gstreamer/gstreamer.pro22
-rwxr-xr-xconfigure69
3 files changed, 132 insertions, 1 deletions
diff --git a/config.tests/unix/gstreamer/gstreamer.cpp b/config.tests/unix/gstreamer/gstreamer.cpp
new file mode 100644
index 0000000000..cc61498787
--- /dev/null
+++ b/config.tests/unix/gstreamer/gstreamer.cpp
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#define GST_USE_UNSTABLE_API
+
+#include <gst/gst.h>
+
+int main(int, char**)
+{
+ gst_is_initialized();
+ return 0;
+}
diff --git a/config.tests/unix/gstreamer/gstreamer.pro b/config.tests/unix/gstreamer/gstreamer.pro
new file mode 100644
index 0000000000..a5e158fa21
--- /dev/null
+++ b/config.tests/unix/gstreamer/gstreamer.pro
@@ -0,0 +1,22 @@
+SOURCES += gstreamer.cpp
+
+CONFIG += link_pkgconfig
+
+gst-0.10 {
+ PKGCONFIG_PRIVATE += \
+ gstreamer-0.10 \
+ gstreamer-base-0.10 \
+ gstreamer-audio-0.10 \
+ gstreamer-video-0.10 \
+ gstreamer-pbutils-0.10
+} else:gst-1.0 {
+ PKGCONFIG_PRIVATE += \
+ gstreamer-1.0 \
+ gstreamer-base-1.0 \
+ gstreamer-audio-1.0 \
+ gstreamer-video-1.0 \
+ gstreamer-pbutils-1.0
+}
+
+CONFIG -= qt
+
diff --git a/configure b/configure
index 9c07e3713b..ecf223f074 100755
--- a/configure
+++ b/configure
@@ -644,6 +644,8 @@ CFG_QNX_IMF=auto
CFG_LGMON=auto
CFG_SYSTEM_PROXIES=no
CFG_ANDROID_STYLE_ASSETS=yes
+CFG_GSTREAMER=auto
+CFG_GSTREAMER_VERSION=""
# Target architecture
CFG_ARCH=
@@ -968,7 +970,17 @@ while [ "$#" -gt 0 ]; do
shift;
VAL=$1
fi
- ;;
+ ;;
+ -gstreamer)
+ VAR=gstreamer
+ # this option may or may not be followed by an argument
+ if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
+ VAL=yes
+ else
+ shift;
+ VAL=$1
+ fi
+ ;;
-hostprefix)
VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
# this option may or may not be followed by an argument
@@ -1896,6 +1908,15 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
+ gstreamer)
+ if [ "$VAL" = "auto" ] || [ "$VAL" = "yes" ] ||
+ [ "$VAL" = "0.10" ] || [ "$VAL" = "1.0" ] ||
+ [ "$VAL" = "no" ]; then
+ CFG_GSTREAMER="$VAL"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ ;;
gtkstyle)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_QGTKSTYLE="$VAL"
@@ -2612,6 +2633,12 @@ Additional options:
-no-libinput ........ Do not support libinput.
* -libinput ........... Enable libinput support.
+ -no-gstreamer ....... Do not support GStreamer.
+ + -gstreamer <version> Enable GStreamer support
+ With no parameter, this will attempt to auto-detect GStreamer 0.10 and
+ 1.0. GStreamer 0.10 is used by default when available.
+ Use 0.10 or 1.0 for <version> to override auto-detection.
+
* -no-system-proxies .. Do not use system network proxies by default.
-system-proxies ..... Use system network proxies by default.
@@ -5852,6 +5879,42 @@ if [ "$CFG_AUDIO_BACKEND" = "auto" ]; then
CFG_AUDIO_BACKEND=yes
fi
+# detect GStreamer support
+if [ "$CFG_GSTREAMER" = "auto" ] || [ "$CFG_GSTREAMER" = "yes" ]; then
+ if compileTest unix/gstreamer "GStreamer 0.10" -config gst-0.10; then
+ CFG_GSTREAMER=yes
+ CFG_GSTREAMER_VERSION=0.10
+ elif compileTest unix/gstreamer "GStreamer 1.0" -config gst-1.0; then
+ CFG_GSTREAMER=yes
+ CFG_GSTREAMER_VERSION=1.0
+ else
+ if [ "$CFG_GSTREAMER" = "yes" ]; then
+ echo "GStreamer support cannot be enabled due to functionality tests!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ exit 1
+ fi
+ CFG_GSTREAMER=no
+ fi
+elif [ "$CFG_GSTREAMER" = "0.10" ]; then
+ if compileTest unix/gstreamer "GStreamer 0.10" -config gst-0.10; then
+ CFG_GSTREAMER=yes
+ CFG_GSTREAMER_VERSION=0.10
+ else
+ echo "The GStreamer 0.10 functionality test failed!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ exit 1
+ fi
+elif [ "$CFG_GSTREAMER" = "1.0" ]; then
+ if compileTest unix/gstreamer "GStreamer 1.0" -config gst-1.0; then
+ CFG_GSTREAMER=yes
+ CFG_GSTREAMER_VERSION=1.0
+ else
+ echo "The GStreamer 1.0 functionality test failed!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ exit 1
+ fi
+fi
+
if [ "$CFG_LARGEFILE" != "yes" ] && [ "$XPLATFORM_MINGW" = "yes" ]; then
echo "Warning: largefile support cannot be disabled for win32."
CFG_LARGEFILE="yes"
@@ -6124,6 +6187,9 @@ if [ "$CFG_PULSEAUDIO" = "yes" ]; then
QT_CONFIG="$QT_CONFIG pulseaudio"
fi
+[ "$CFG_GSTREAMER_VERSION" = "0.10" ] && QT_CONFIG="$QT_CONFIG gstreamer-0.10"
+[ "$CFG_GSTREAMER_VERSION" = "1.0" ] && QT_CONFIG="$QT_CONFIG gstreamer-1.0"
+
if [ "$CFG_COREWLAN" = "yes" ]; then
QT_CONFIG="$QT_CONFIG corewlan"
fi
@@ -6892,6 +6958,7 @@ report_support " Evdev .................." "$CFG_EVDEV"
report_support " FontConfig ............." "$CFG_FONTCONFIG"
report_support " FreeType ..............." "$CFG_FREETYPE" system "system library" yes "bundled copy"
report_support " Glib ..................." "$CFG_GLIB"
+report_support " GStreamer .............." "$CFG_GSTREAMER" yes "$CFG_GSTREAMER_VERSION"
report_support " GTK theme .............." "$CFG_QGTKSTYLE"
report_support " HarfBuzz ..............." "$CFG_HARFBUZZ" system "system library" qt "bundled copy"
report_support " Iconv .................." "$CFG_ICONV"