diff options
author | Slávek Banko <[email protected]> | 2016-03-11 02:21:44 +0100 |
---|---|---|
committer | Slávek Banko <[email protected]> | 2016-03-11 02:21:57 +0100 |
commit | 3cca7e09f69c5b7faa558074e12c3a53a86dd05f (patch) | |
tree | 72e225f1e68ad07af5f13309300d73276a2f6112 | |
parent | 2f2464012f4d762fdb060831c473dd570e52dfad (diff) | |
download | kmplayer-3cca7e09f69c5b7faa558074e12c3a53a86dd05f.tar.gz kmplayer-3cca7e09f69c5b7faa558074e12c3a53a86dd05f.zip |
Add GStreamer 1.0 support
Signed-off-by: Slávek Banko <[email protected]>
(cherry picked from commit da6d8b0b34a10f7510d2054dbb059570a9194ab3)
-rw-r--r-- | configure.in | 425 | ||||
-rw-r--r-- | configure.in.in | 35 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/gstplayer.cpp | 91 |
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 ([email protected]) - -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 [email protected] -# 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: { |