summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2016-03-11 02:21:44 +0100
committerSlávek Banko <slavek.banko@axis.cz>2016-03-11 02:21:44 +0100
commitda6d8b0b34a10f7510d2054dbb059570a9194ab3 (patch)
tree27259804092408a8e936d8ba3f86bdc7cc3259e0
parent4da999bdb1b535994fd3fa18772921da41b0b65e (diff)
downloadkmplayer-da6d8b0b.tar.gz
kmplayer-da6d8b0b.zip
Add GStreamer 1.0 support
Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
-rw-r--r--configure.in425
-rw-r--r--configure.in.in35
-rw-r--r--src/Makefile.am2
-rw-r--r--src/gstplayer.cpp91
4 files changed, 106 insertions, 447 deletions
diff --git a/configure.in b/configure.in
deleted file mode 100644
index 585bda4..0000000
--- a/configure.in
+++ /dev/null
@@ -1,425 +0,0 @@
-dnl =======================================================
-dnl FILE: ./admin/configure.in.min
-dnl =======================================================
-
-dnl This file is part of the KDE libraries/packages
-dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
-
-dnl This file is free software; you can redistribute it and/or
-dnl modify it under the terms of the GNU Library General Public
-dnl License as published by the Free Software Foundation; either
-dnl version 2 of the License, or (at your option) any later version.
-
-dnl This library is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-dnl Library General Public License for more details.
-
-dnl You should have received a copy of the GNU Library General Public License
-dnl along with this library; see the file COPYING.LIB. If not, write to
-dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-dnl Boston, MA 02110-1301, USA.
-
-# Original Author was Kalle@kde.org
-# I lifted it in some mater. (Stephan Kulow)
-# I used much code from Janos Farkas
-
-dnl Process this file with autoconf to produce a configure script.
-
-AC_INIT(acinclude.m4) dnl a source file from your sub dir
-
-dnl This is so we can use kde-common
-AC_CONFIG_AUX_DIR(admin)
-
-dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
-unset CDPATH
-
-dnl Checking host/target/build systems, for make, install etc.
-AC_CANONICAL_SYSTEM
-dnl Perform program name transformation
-AC_ARG_PROGRAM
-
-dnl Automake doc recommends to do this only here. (Janos)
-AM_INIT_AUTOMAKE(kmplayer, 0.10.0c) dnl searches for some needed programs
-
-KDE_SET_PREFIX
-
-dnl generate the config header
-AM_CONFIG_HEADER(config.h) dnl at the distribution this done
-
-dnl Checks for programs.
-AC_CHECK_COMPILERS
-AC_ENABLE_SHARED(yes)
-AC_ENABLE_STATIC(no)
-KDE_PROG_LIBTOOL
-
-dnl for NLS support. Call them in this order!
-dnl WITH_NLS is for the po files
-AM_KDE_WITH_NLS
-
-KDE_USE_QT(3)
-AC_PATH_KDE
-dnl =======================================================
-dnl FILE: configure.in.in
-dnl =======================================================
-
-#MIN_CONFIG(3)
-
-dnl PACKAGE set before
-
-KDE_ENABLE_HIDDEN_VISIBILITY
-
-AM_MAINTAINER_MODE
-
-AC_ARG_VAR(PKGCONFIGFOUND, [Path to pkg-config])
-AC_ARG_VAR(NSPRCONFIGFOUND, [Path to nspr-config])
-AC_CHECK_PROG(PKGCONFIGFOUND, pkg-config,[yes])
-
-AC_MSG_CHECKING(if koffice-plugin support is wanted)
-AC_ARG_ENABLE(koffice-plugin,
-[ --enable-koffice-plugin enable koffice plugin],
-[if test "$enableval" = yes; then
- AC_MSG_RESULT(yes)
- want_koffice_plugin="yes"
-else
- AC_MSG_RESULT(no)
-fi], [AC_MSG_RESULT(no); want_koffice_plugin="no"])
-
-KDE_CHECK_HEADER(koDocument.h,
- have_koffice=yes,
- have_koffice=no)
-
-AC_MSG_CHECKING([if kmplayer can be compiled with koffice support])
-AC_MSG_RESULT($have_koffice)
-
-AM_CONDITIONAL(include_koffice_support, test "$want_koffice_plugin" = "yes" -a "$have_koffice" = "yes")
-if test "$want_koffice_plugin" = "yes" -a "$have_koffice" = "yes"; then
- AC_DEFINE(HAVE_KOFFICE, 1, [If we have koffice installed])
- LIB_KOFFICE="-lkofficecore -lkofficeui"
- AC_SUBST(LIB_KOFFICE)
-fi
-
-AC_MSG_CHECKING(if expat XML parsing is wanted)
-AC_ARG_ENABLE(expat,
-[ --enable-expat use expat libs],
-[if test "$enableval" = yes; then
- AC_MSG_RESULT(yes)
- want_expat="yes"
-else
- AC_MSG_RESULT(no)
-fi], [AC_MSG_RESULT(no); want_expat="no"])
-
-KDE_CHECK_HEADER(expat.h,
- have_expat=yes,
- have_expat=no)
-
-AC_MSG_CHECKING([if kmplayer can use expat its XML parser])
-AC_MSG_RESULT($have_expat)
-
-AM_CONDITIONAL(include_expat_support, test "$want_expat" = "yes" -a "$have_expat" = "yes")
-if test x$have_expat = xyes -a x$want_expat = xyes; then
- AC_DEFINE(HAVE_EXPAT, 1, [If libexpat is installed])
- LIB_EXPAT="-lexpat"
- AC_SUBST(LIB_EXPAT)
-fi
-
-dnl -------------------------
-dnl check for XTest extension
-dnl -------------------------
-
-AC_ARG_WITH([xtest], [AS_HELP_STRING([--without-xtest], [build without XTest support])],,
- [with_xtest=yes])
-
-CFLAGS_XTEST=""
-LIB_XTEST=""
-
-if test "$with_xtest" != "no" ; then
- AC_MSG_CHECKING([for XTest extension])
-
- if "$PKG_CONFIG" --exists xtst ; then
- with_xtest=yes
- CFLAGS_XTEST=`"$PKG_CONFIG" --cflags xtst`
- LIB_XTEST=`"$PKG_CONFIG" --libs xtst`
- AC_DEFINE([HAVE_XTEST],,[XTest extension available])
- AC_MSG_RESULT([yes])
- else
- with_xtest=no
- AC_MSG_RESULT([no])
- fi
-fi
-
-AC_SUBST([CFLAGS_XTEST])
-AC_SUBST([LIB_XTEST])
-
-
-KDE_CHECK_HEADER(xine.h,
- have_xine=yes,
- have_xine=no)
-
-AC_MSG_CHECKING([if kxineplayer can be compiled])
-AC_MSG_RESULT($have_xine)
-
-AC_ARG_WITH(xine,
- AC_HELP_STRING([--without-xine],[build KMPlayer without Xine [default=with]]),
- [build_xine=$withval],
- [build_xine=yes]
-)
-
-if test "$build_xine" != "no"; then
- if test "$have_xine" = "yes"; then
- vers=`xine-config --version 2>/dev/null | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- if test -n "$vers" && test "$vers" -ge 1000000
- then
- AC_DEFINE(HAVE_XINE, 1, [If we have libxine installed])
- LIB_XINE="`xine-config --libs`"
- AC_SUBST(LIB_XINE)
- CFLAGS_XINE="`xine-config --cflags`"
- AC_SUBST(CFLAGS_XINE)
- else
- have_xine="no"
- AC_MSG_WARN([Your xine installation is too old (1.0.0 or later required)])
- fi
- fi
-else
- have_xine="no"
-fi
-
-AM_CONDITIONAL(include_kxineplayer, test "$have_xine" = "yes")
-
-AC_ARG_WITH(gstreamer,
- AC_HELP_STRING([--without-gstreamer],[build KMPlayer without GStreamer [default=with]]),
- [build_gstreamer=$withval],
- [build_gstreamer=yes]
-)
-
-if test "$build_gstreamer" != "no"; then
- if test "$PKGCONFIGFOUND" = "yes" ; then
- # check for GStreamer
- dnl Now we're ready to ask for gstreamer libs and cflags
- dnl And we can also ask for the right version of gstreamer
-
- GST_MAJORMINOR=0.10
- GST_REQ=0.10.0
-
- PKG_CHECK_MODULES(GST, gstreamer-$GST_MAJORMINOR >= $GST_REQ,
- have_gst=yes,have_gst=no)
-
- PKG_CHECK_MODULES(GST_PLUGINS, gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQ, \
- have_gst_plugins=yes,have_gst_plugins=no)
- LIB_GST=""
- CFLAGS_GST=""
- LIB_GST_PLUGINS=""
- dnl Give error if we don't have gstreamer
- if test "x$have_gst" = "xyes"; then
- AC_SUBST(GST_MAJORMINOR)
- AC_DEFINE(HAVE_GSTREAMER, 1, [have GStreamer])
- LIB_GST=$GST_LIBS
- CFLAGS_GST=$GST_CFLAGS
- LIB_GST_PLUGINS=$GST_INTERFACES_LIBS
- fi
- AC_SUBST(LIB_GST)
- AC_SUBST(CFLAGS_GST)
- AC_SUBST(LIB_GST_PLUGINS)
- fi
-fi
-AC_MSG_CHECKING([if kgstplayer can be compiled])
-if test "x$have_gst" = "xyes" && test "x$have_gst_plugins" = "xyes"; then
- AC_MSG_RESULT(yes)
-else
- AC_MSG_RESULT(no)
-fi
-
-AM_CONDITIONAL(include_kgstplayer, [test "x$have_gst" = "xyes" && test "x$have_gst_plugins" = "xyes"])
-
-buildnpp=yes
-LIBNSPR_LIBS=""
-LIBNSPR_CFLAGS=""
-LIBQTDBUS=""
-LIBDBUS_CFLAGS=""
-AC_ARG_ENABLE(nspr, [ --enable-npplayer Enables building with npp support],
-[if test "x$enableval" == "xno"; then
- buildnpp=no
- fi])
-if test "$buildnpp" = "yes"; then
- if test "$PKGCONFIGFOUND" = "yes" ; then
- DBUS_REQ=1.0.0
- PKG_CHECK_MODULES(DBUS, [ dbus-tqt dbus-1 >= $DBUS_REQ ],
- have_dbus=yes,have_dbus=no)
- if test "x$have_dbus" = "xyes"; then
- have_nspr=yes
- AC_DEFINE(HAVE_DBUS, 1, [have DBus])
- LIBQTDBUS="`$PKG_CONFIG --libs dbus-tqt`"
- LIBDBUS_CFLAGS="`$PKG_CONFIG --cflags dbus-tqt`"
- AC_DEFINE(HAVE_NSPR, 1, [build Netscape plugin loader])
- LIBNSPR_LIBS="`$PKG_CONFIG --libs gtk+-x11-2.0` `$PKG_CONFIG --libs dbus-glib-1` `$PKG_CONFIG --libs gthread-2.0`"
- LIBNSPR_CFLAGS="`$PKG_CONFIG --cflags gtk+-x11-2.0` `$PKG_CONFIG --cflags dbus-glib-1`"
- fi
- fi
-fi
-AC_SUBST(LIBNSPR_LIBS)
-AC_SUBST(LIBNSPR_CFLAGS)
-AC_SUBST(LIBQTDBUS)
-AC_SUBST(LIBDBUS_CFLAGS)
-
-AM_CONDITIONAL(include_knpplayer, test "$have_nspr" = "yes")
-
-hascairo=yes
-LIBCAIRO_LIBS=""
-LIBCAIRO_CFLAGS=""
-AC_ARG_ENABLE(cairo, [ --enable-cairo Enables building with cairo support],
-[if test "x$enableval" == "xno"; then
- hascairo=no
- fi])
-if test $hascairo = yes; then
- AC_MSG_CHECKING([Checking for cairo with pkg-config])
- hascairo=no
- if test -n "$PKG_CONFIG"; then
- LIBCAIRO_LIBS="`$PKG_CONFIG cairo --libs`"
- LIBCAIRO_CFLAGS="`$PKG_CONFIG cairo --cflags`"
- if test -n "$LIBCAIRO_LIBS" || test -n "$LIBCAIRO_CFLAGS"; then
- AC_MSG_RESULT([found])
- hascairo=yes
- else
- AC_MSG_RESULT([not found])
- fi
- else
- AC_MSG_RESULT([failed: pkg-config not found])
- fi
- if test $hascairo = yes; then
- AC_DEFINE_UNQUOTED(HAVE_CAIRO, 1, [Defines if your system has the cairo library])
- else
- AC_MSG_WARN([Couldn't find a usable cairo])
- fi
-fi
-AC_SUBST(LIBCAIRO_LIBS)
-AC_SUBST(LIBCAIRO_CFLAGS)
-
-KDE_CHECK_BINUTILS
-
-AC_MSG_CHECKING([for KDE version])
-
-AC_LANG_SAVE
-AC_LANG_CPLUSPLUS
-tdeversion_save_CXXFLAGS="$CXXFLAGS"
-tdeversion_safe_LIBS="$LIBS"
-LIBS="$LIBS $X_EXTRA_LIBS"
-CXXFLAGS="$CXXFLAGS $all_includes"
-
-AC_COMPILE_IFELSE([
-#include <tdeversion.h>
-#if ! ( KDE_IS_VERSION( 3, 3, 91 ) )
-#error KDE 3.3
-#endif
-],
- need_trinity3_compat="no"
-,
- need_trinity3_compat="yes"
-)
-
-AC_COMPILE_IFELSE([
-#include <tdeversion.h>
-#if ! ( KDE_IS_VERSION( 3, 2, 90 ) )
-#error KDE 3.2
-#endif
-],
- need_trinity2_compat="no"
-,
- need_trinity2_compat="yes"
-)
-
-AC_COMPILE_IFELSE([
-#include <tdeversion.h>
-#if ! ( KDE_IS_VERSION( 3, 1, 90 ) )
-#error KDE 3.1
-#endif
-],
- need_trinity1_compat="no"
-,
- need_trinity1_compat="yes"
-)
-
-CXXFLAGS="$tdeversion_save_CXXFLAGS"
-LIBS="$tdeversion_safe_LIBS"
-AC_LANG_RESTORE
-
-if test "$need_trinity2_compat" = "yes"; then
- AC_MSG_RESULT([KDE 3.2.x])
-fi
-
-if test "$need_trinity1_compat" = "yes"; then
- AC_MSG_RESULT([KDE 3.1.x])
-fi
-
-AM_CONDITIONAL(need_trinity3_compatibility, test "$need_trinity3_compat" = "yes")
-AM_CONDITIONAL(need_trinity2_compatibility, test "$need_trinity2_compat" = "yes")
-AM_CONDITIONAL(need_trinity1_compatibility, test "$need_trinity1_compat" = "yes")
-
-KDE_CREATE_SUBDIRSLIST
-AC_CONFIG_FILES([ Makefile ])
-AC_CONFIG_FILES([ doc/Makefile ])
-AC_CONFIG_FILES([ doc/da/Makefile ])
-AC_CONFIG_FILES([ doc/de/Makefile ])
-AC_CONFIG_FILES([ doc/en/Makefile ])
-AC_CONFIG_FILES([ doc/es/Makefile ])
-AC_CONFIG_FILES([ doc/et/Makefile ])
-AC_CONFIG_FILES([ doc/fr/Makefile ])
-AC_CONFIG_FILES([ doc/it/Makefile ])
-AC_CONFIG_FILES([ doc/nl/Makefile ])
-AC_CONFIG_FILES([ doc/pt/Makefile ])
-AC_CONFIG_FILES([ doc/ru/Makefile ])
-AC_CONFIG_FILES([ doc/sv/Makefile ])
-AC_CONFIG_FILES([ icons/Makefile ])
-AC_CONFIG_FILES([ mimetypes/Makefile ])
-AC_CONFIG_FILES([ mimetypes/application/Makefile ])
-AC_CONFIG_FILES([ mimetypes/audio/Makefile ])
-AC_CONFIG_FILES([ mimetypes/video/Makefile ])
-AC_CONFIG_FILES([ mimetypes/video/trinity1/Makefile ])
-AC_CONFIG_FILES([ po/Makefile ])
-AC_CONFIG_FILES([ protocols/Makefile ])
-AC_CONFIG_FILES([ src/Makefile ])
-AC_OUTPUT
-# Check if KDE_SET_PREFIX was called, and --prefix was passed to configure
-if test -n "$kde_libs_prefix" -a -n "$given_prefix"; then
- # And if so, warn when they don't match
- if test "$kde_libs_prefix" != "$given_prefix"; then
- # And if kde doesn't know about the prefix yet
- echo ":"`tde-config --path exe`":" | grep ":$given_prefix/bin/:" 2>&1 >/dev/null
- if test $? -ne 0; then
- echo ""
- echo "Warning: you chose to install this package in $given_prefix,"
- echo "but KDE was found in $kde_libs_prefix."
- echo "For this to work, you will need to tell KDE about the new prefix, by ensuring"
- echo "that TDEDIRS contains it, e.g. export TDEDIRS=$given_prefix:$kde_libs_prefix"
- echo "Then restart KDE."
- echo ""
- fi
- fi
-fi
-
-if test x$GXX = "xyes" -a x$kde_have_gcc_visibility = "xyes" -a x$kde_cv_val_qt_gcc_visibility_patched = "xno"; then
- echo ""
- echo "Your GCC supports symbol visibility, but the patch for Qt supporting visibility"
- echo "was not included. Therefore, GCC symbol visibility support remains disabled."
- echo ""
- echo "For better performance, consider including the Qt visibility supporting patch"
- echo "located at:"
- echo ""
- echo "http://bugs.kde.org/show_bug.cgi?id=109386"
- echo ""
- echo "and recompile all of Qt and KDE. Note, this is entirely optional and"
- echo "everything will continue to work just fine without it."
- echo ""
-fi
-
-if test "$all_tests" = "bad"; then
- if test ! "$cache_file" = "/dev/null"; then
- echo ""
- echo "Please remove the file $cache_file after changing your setup"
- echo "so that configure will find the changes next time."
- echo ""
- fi
-else
- echo ""
- echo "Good - your configure finished. Start make now"
- echo ""
-fi
diff --git a/configure.in.in b/configure.in.in
index 78b4d5f..5fe5704 100644
--- a/configure.in.in
+++ b/configure.in.in
@@ -132,32 +132,39 @@ if test "$build_gstreamer" != "no"; then
dnl Now we're ready to ask for gstreamer libs and cflags
dnl And we can also ask for the right version of gstreamer
- GST_MAJORMINOR=0.10
- GST_REQ=0.10.0
-
- PKG_CHECK_MODULES(GST, gstreamer-$GST_MAJORMINOR >= $GST_REQ,
- have_gst=yes,have_gst=no)
-
- PKG_CHECK_MODULES(GST_PLUGINS, gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQ, \
- have_gst_plugins=yes,have_gst_plugins=no)
LIB_GST=""
CFLAGS_GST=""
LIB_GST_PLUGINS=""
- dnl Give error if we don't have gstreamer
+ LIB_GST_OVERLAY=""
+
+ PKG_CHECK_MODULES(GST_1, gstreamer-1.0, have_gst=yes, have_gst=no)
+ PKG_CHECK_MODULES(GST_1_PLUGINS, gstreamer-plugins-base-1.0, have_gst_plugins=yes, have_gst_plugins=no)
if test "x$have_gst" = "xyes"; then
- AC_SUBST(GST_MAJORMINOR)
- AC_DEFINE(HAVE_GSTREAMER, 1, [have GStreamer])
- LIB_GST=$GST_LIBS
- CFLAGS_GST=$GST_CFLAGS
- LIB_GST_PLUGINS=$GST_INTERFACES_LIBS
+ dnl We have GStreamer 1.0
+ LIB_GST=$GST_1_LIBS
+ CFLAGS_GST=$GST_1_CFLAGS
+ LIB_GST_PLUGINS=$GST_1_PLUGINS_LIBS
+ LIB_GST_OVERLAY="-lgstvideo-1.0"
+ else
+ PKG_CHECK_MODULES(GST, gstreamer-0.10, have_gst=yes, have_gst=no)
+ PKG_CHECK_MODULES(GST_PLUGINS, gstreamer-plugins-base-0.10, have_gst_plugins=yes, have_gst_plugins=no)
+ if test "x$have_gst" = "xyes"; then
+ dnl We have GStreamer 0.10
+ LIB_GST=$GST_LIBS
+ CFLAGS_GST=$GST_CFLAGS
+ LIB_GST_PLUGINS=$GST_PLUGINS_LIBS
+ LIB_GST_OVERLAY="-lgstinterfaces-0.10"
+ fi
fi
AC_SUBST(LIB_GST)
AC_SUBST(CFLAGS_GST)
AC_SUBST(LIB_GST_PLUGINS)
+ AC_SUBST(LIB_GST_OVERLAY)
fi
fi
AC_MSG_CHECKING([if kgstplayer can be compiled])
if test "x$have_gst" = "xyes" && test "x$have_gst_plugins" = "xyes"; then
+ AC_DEFINE(HAVE_GSTREAMER, 1, [have GStreamer])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
diff --git a/src/Makefile.am b/src/Makefile.am
index 6db915f..6278004 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -53,7 +53,7 @@ kxvplayer_LDADD= libkmplayerbackend.la -lDCOP -lXv
kxvplayer_LDFLAGS= $(all_libraries) $(KDE_RPATH) $(LIB_QT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_TDEIO) -ltdetexteditor
kxvplayer_SOURCES= xvplayer.cpp
-kgstplayer_LDADD= libkmplayerbackend.la $(LIB_GST) $(LIB_GST_PLUGINS) -lgstinterfaces-0.10 -lDCOP
+kgstplayer_LDADD= libkmplayerbackend.la $(LIB_GST) $(LIB_GST_PLUGINS) $(LIB_GST_OVERLAY) -lDCOP
kgstplayer_LDFLAGS= $(all_libraries) $(KDE_RPATH) $(LIB_QT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_TDEIO) -ltdetexteditor
kgstplayer_SOURCES= gstplayer.cpp
diff --git a/src/gstplayer.cpp b/src/gstplayer.cpp
index 0585ac9..74bcee0 100644
--- a/src/gstplayer.cpp
+++ b/src/gstplayer.cpp
@@ -39,8 +39,13 @@
#include <X11/keysym.h>
#include <X11/Xatom.h>
#include <gst/gst.h>
+#if GST_CHECK_VERSION(1,0,0)
+#include <gst/video/videooverlay.h>
+#include <gst/video/colorbalance.h>
+#else
#include <gst/interfaces/xoverlay.h>
#include <gst/interfaces/colorbalance.h>
+#endif
static char configfile[2048];
@@ -76,7 +81,11 @@ static const char *vcd_device;
static GstElement *gst_elm_play;
static GstBus *gst_bus;
static unsigned int /*GstMessageType*/ ignore_messages_mask;
+#if GST_CHECK_VERSION(1,0,0)
+static GstVideoOverlay *xoverlay;
+#else
static GstXOverlay *xoverlay;
+#endif
static GstColorBalance *color_balance;
static gulong gst_bus_sync;
static gulong gst_bus_async;
@@ -121,7 +130,11 @@ gstCapsSet (GstPad *pad,
GParamSpec * /*pspec*/,
gpointer /*data*/)
{
+#if GST_CHECK_VERSION(1,0,0)
+ GstCaps *caps = gst_pad_get_current_caps (pad);
+#else
GstCaps *caps = gst_pad_get_negotiated_caps (pad);
+#endif
if (!caps)
return;
TQApplication::postEvent (gstapp, new TQEvent ((TQEvent::Type) event_video));
@@ -200,7 +213,13 @@ static void gstSource (GObject *, GParamSpec *, gpointer /*data*/) {
static void gstGetDuration () {
GstFormat fmt = GST_FORMAT_TIME;
gint64 len = -1; // usec
- if (gst_element_query_duration (gst_elm_play, &fmt, &len))
+ if (gst_element_query_duration (gst_elm_play,
+#if GST_CHECK_VERSION(1,0,0)
+ fmt,
+#else
+ &fmt,
+#endif
+ &len))
if (movie_length != len / (GST_MSECOND * 100)) {
movie_length = len / (GST_MSECOND * 100);
fprintf (stderr, "new length %d\n", movie_length);
@@ -245,13 +264,23 @@ static void gstBusMessage (GstBus *, GstMessage * message, gpointer) {
break;
case GST_MESSAGE_BUFFERING: {
gint percent = 0;
- gst_structure_get_int (message->structure, "buffer-percent", &percent);
+ gst_structure_get_int (
+#if GST_CHECK_VERSION(1,0,0)
+ gst_message_get_structure(message),
+#else
+ message->structure,
+#endif
+ "buffer-percent", &percent);
TQApplication::postEvent (gstapp, new GstProgressEvent (percent));
//fprintf (stderr, "Buffering message (%u%%)\n", percent);
break;
}
case GST_MESSAGE_APPLICATION: {
+#if GST_CHECK_VERSION(1,0,0)
+ const char * msg = gst_structure_get_name (gst_message_get_structure(message));
+#else
const char * msg = gst_structure_get_name (message->structure);
+#endif
fprintf (stderr, "app msg %s\n", msg ? msg : "<unknown>");
//gst_structure_foreach (message->structure, gstStructure, 0L);
break;
@@ -297,10 +326,21 @@ static void gstBusMessage (GstBus *, GstMessage * message, gpointer) {
}
static void gstMessageElement (GstBus *, GstMessage *msg, gpointer /*data*/) {
- if (gst_structure_has_name (msg->structure, "prepare-xwindow-id")) {
+ if (gst_structure_has_name (
+#if GST_CHECK_VERSION(1,0,0)
+ gst_message_get_structure(msg),
+#else
+ msg->structure,
+#endif
+ "prepare-xwindow-id")) {
fprintf (stderr, "prepare-xwindow-id\n");
- if (xoverlay)
+ if (xoverlay) {
+#if GST_CHECK_VERSION(1,0,0)
+ gst_video_overlay_set_window_handle (xoverlay, wid);
+#else
gst_x_overlay_set_xwindow_id (xoverlay, wid);
+#endif
+ }
}
}
@@ -598,13 +638,25 @@ void KGStreamerPlayer::play (int repeat) {
goto fail;
if (GST_IS_BIN (videosink))
element = gst_bin_get_by_interface (GST_BIN (videosink),
- GST_TYPE_X_OVERLAY);
+#if GST_CHECK_VERSION(1,0,0)
+ GST_TYPE_VIDEO_OVERLAY
+#else
+ GST_TYPE_X_OVERLAY
+#endif
+ );
else
element = videosink;
+#if GST_CHECK_VERSION(1,0,0)
+ if (GST_IS_VIDEO_OVERLAY (element)) {
+ xoverlay = GST_VIDEO_OVERLAY (element);
+ gst_video_overlay_set_window_handle (xoverlay, wid);
+ }
+#else
if (GST_IS_X_OVERLAY (element)) {
xoverlay = GST_X_OVERLAY (element);
gst_x_overlay_set_xwindow_id (xoverlay, wid);
}
+#endif
gst_element_set_bus (videosink, gst_bus);
gst_element_set_state (videosink, GST_STATE_READY);
success = gstPollForStateChange (videosink, GST_STATE_READY);
@@ -621,7 +673,11 @@ void KGStreamerPlayer::play (int repeat) {
"video-sink", videosink,
"audio-sink", audiosink,
NULL);
+#if GST_CHECK_VERSION(1,0,0)
+ gst_bus_set_sync_handler (gst_bus, gst_bus_sync_signal_handler, 0L, 0L);
+#else
gst_bus_set_sync_handler (gst_bus, gst_bus_sync_signal_handler, 0L);
+#endif
gst_bus_sync = g_signal_connect (gst_bus, "sync-message::element",
G_CALLBACK (gstMessageElement), 0L);
g_signal_connect (gst_elm_play, "notify::source",
@@ -766,7 +822,13 @@ void KGStreamerPlayer::updatePosition () {
if (gst_elm_play && callback) {
GstFormat fmt = GST_FORMAT_TIME;
gint64 val = 0; // usec
- if (gst_element_query_position (gst_elm_play, &fmt, &val))
+ if (gst_element_query_position (gst_elm_play,
+#if GST_CHECK_VERSION(1,0,0)
+ fmt,
+#else
+ &fmt,
+#endif
+ &val))
callback->moviePosition (int (val / (GST_MSECOND * 100)));
}
mutex.unlock ();
@@ -888,11 +950,19 @@ protected:
if (gst_elm_play) {
GstElement *videosink;
g_object_get (gst_elm_play, "video-sink", &videosink, NULL);
+#if GST_CHECK_VERSION(1,0,0)
+ if (videosink && GST_IS_VIDEO_OVERLAY (videosink)) {
+ gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (videosink), wid);
+ gst_video_overlay_expose (GST_VIDEO_OVERLAY (videosink));
+ gst_object_unref (videosink);
+ }
+#else
if (videosink && GST_IS_X_OVERLAY (videosink)) {
gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (videosink), wid);
gst_x_overlay_expose (GST_X_OVERLAY (videosink));
gst_object_unref (videosink);
}
+#endif
}
mutex.unlock ();
}
@@ -900,8 +970,15 @@ protected:
case ConfigureNotify:
mutex.lock ();
- if (xoverlay && GST_IS_X_OVERLAY (xoverlay))
+#if GST_CHECK_VERSION(1,0,0)
+ if (xoverlay && GST_IS_VIDEO_OVERLAY (xoverlay)) {
+ gst_video_overlay_expose (xoverlay);
+ }
+#else
+ if (xoverlay && GST_IS_X_OVERLAY (xoverlay)) {
gst_x_overlay_expose (xoverlay);
+ }
+#endif
mutex.unlock ();
break;
case ButtonPress: {