/pidgin/main: 2415067473ba: Support GStreamer 1.x and resync wit...
David Woodhouse
David.Woodhouse at intel.com
Thu Mar 12 12:11:11 EDT 2015
Changeset: 2415067473ba10a2090d6130b93204a3b537b05c
Author: David Woodhouse <David.Woodhouse at intel.com>
Date: 2015-03-11 11:39 +0000
Branch: release-2.x.y
URL: https://hg.pidgin.im/pidgin/main/rev/2415067473ba
Description:
Support GStreamer 1.x and resync with trunk
diffstat:
configure.ac | 153 ++++++++++++++++----
finch/Makefile.am | 1 +
libpurple/Makefile.am | 2 +
libpurple/data/purple.pc.in | 1 +
libpurple/example/Makefile.am | 1 +
libpurple/media/backend-fs2.c | 300 +++++++++++++++++++++++++++++------------
libpurple/mediamanager.c | 76 ++++++++--
pidgin/Makefile.am | 1 +
pidgin/gtkmedia.c | 5 +
pidgin/plugins/vvconfig.c | 24 +++-
10 files changed, 421 insertions(+), 143 deletions(-)
diffs (truncated from 1127 to 300 lines):
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -741,42 +741,115 @@ AM_GCONF_SOURCE_2
dnl #######################################################################
dnl # Check for GStreamer
dnl #######################################################################
-dnl
-dnl TODO: Depend on gstreamer >= 0.10.10, and remove the conditional use of
-dnl gst_registry_fork_set_enabled.
AC_ARG_ENABLE(gstreamer,
- [AC_HELP_STRING([--disable-gstreamer], [compile without GStreamer audio support])],
+ [AS_HELP_STRING([--disable-gstreamer], [compile without GStreamer audio support])],
enable_gst="$enableval", enable_gst="yes")
+AC_ARG_WITH(gstreamer, [AS_HELP_STRING([--with-gstreamer=<version>],
+ [compile with GStreamer 0.10 or 1.0 interface (default: auto)])],
+ with_gstreamer="$withval", with_gstreamer="auto")
if test "x$enable_gst" != "xno"; then
- PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10], [
- AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for playing sounds])
- AC_SUBST(GSTREAMER_CFLAGS)
- AC_SUBST(GSTREAMER_LIBS)
- AC_CHECK_LIB(gstreamer-0.10, gst_registry_fork_set_enabled,
- [ AC_DEFINE(GST_CAN_DISABLE_FORKING, [],
- [Define if gst_registry_fork_set_enabled exists])],
- [], [$GSTREAMER_LIBS])
- ], [
- AC_MSG_RESULT(no)
- enable_gst="no"
- if test "x$force_deps" = "xyes" ; then
- AC_MSG_ERROR([
+ if test "x$with_gstreamer" == "xauto"; then
+ PKG_CHECK_MODULES(GSTREAMER, [gstreamer-1.0], [
+ AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for playing sounds])
+ with_gstreamer="1.0"
+ AC_SUBST(GSTREAMER_CFLAGS)
+ AC_SUBST(GSTREAMER_LIBS)
+ dnl Check whether forking stuff is required for this version.
+ ], [
+ PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10], [
+ AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for playing sounds])
+ with_gstreamer="0.10"
+ AC_SUBST(GSTREAMER_CFLAGS)
+ AC_SUBST(GSTREAMER_LIBS)
+ ], [
+ AC_MSG_RESULT(no)
+ enable_gst="no"
+ if test "x$force_deps" = "xyes" ; then
+ AC_MSG_ERROR([
GStreamer development headers not found.
Use --disable-gstreamer if you do not need GStreamer (sound) support.
])
- fi])
+ fi
+ ])
+ ])
+ elif test "x$with_gstreamer" == "x1.0"; then
+ PKG_CHECK_MODULES(GSTREAMER, [gstreamer-1.0], [
+ AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer 1.0 for playing sounds])
+ AC_SUBST(GSTREAMER_CFLAGS)
+ AC_SUBST(GSTREAMER_LIBS)
+ ], [
+ AC_MSG_RESULT(no)
+ enable_gst="no"
+ if test "x$force_deps" = "xyes" ; then
+ AC_MSG_ERROR([
+GStreamer development headers not found.
+Use --disable-gstreamer if you do not need GStreamer (sound) support.
+])
+ fi
+ ])
+ elif test "x$with_gstreamer" == "x0.10"; then
+ PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10], [
+ AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer 0.10 for playing sounds])
+ AC_SUBST(GSTREAMER_CFLAGS)
+ AC_SUBST(GSTREAMER_LIBS)
+ ], [
+ AC_MSG_RESULT(no)
+ enable_gst="no"
+ if test "x$force_deps" = "xyes" ; then
+ AC_MSG_ERROR([
+GStreamer development headers not found.
+Use --disable-gstreamer if you do not need GStreamer (sound) support.
+])
+ fi
+ ])
+ else
+ AC_MSG_ERROR([--with-gstreamer must specify one of 0.10, 1.0 or auto.])
+ fi
+fi
+
+if test "x$with_gtk" == "x3" -a "x$with_gstreamer" == "x0.10"; then
+ AC_MSG_ERROR([WebKitGTK+ 3.0 cannot be mixed with GStreamer 0.10.
+Please switch to WebKitGTK+ 2.0 or GStreamer 1.0.])
+elif test "x$with_gtk" == "x2" -a "x$with_gstreamer" == "x1.0"; then
+ AC_MSG_ERROR([WebKitGTK+ 2.0 cannot be mixed with GStreamer 1.0.
+Please switch to WebKitGTK+ 3.0 or GStreamer 0.10.])
+fi
+if test "x$with_gstreamer" == "x0.10" -o "x$with_gstreamer" == "x1.0"; then
+ AC_SUBST(GSTREAMER_VER, [$with_gstreamer])
+else
+ AC_SUBST(GSTREAMER_VER, "")
+fi
+
+dnl #######################################################################
+dnl # Check for GStreamer Video
+dnl #######################################################################
+if test "x$enable_gst" != "xno" -a "x$with_gstreamer" == "x1.0"; then
+ AC_ARG_ENABLE(gstreamer-video,
+ [AS_HELP_STRING([--disable-gstreamer-video], [compile without GStreamer 1.0 Video Overlay support])],
+ enable_gstvideo="$enableval", enable_gstvideo="yes")
+ if test "x$enable_gstvideo" != "xno"; then
+ PKG_CHECK_MODULES(GSTVIDEO, [gstreamer-video-1.0], [
+ AC_DEFINE(USE_GSTVIDEO, 1, [Use GStreamer Video Overlay support])
+ AC_SUBST(GSTVIDEO_CFLAGS)
+ AC_SUBST(GSTVIDEO_LIBS)
+ ], [
+ enable_gstvideo="no"
+ ])
+ fi
+else
+ enable_gstvideo="no"
fi
dnl #######################################################################
dnl # Check for GStreamer Interfaces
dnl #######################################################################
-if test "x$enable_gst" != "xno"; then
+if test "x$enable_gst" != "xno" -a "x$with_gstreamer" == "x0.10"; then
AC_ARG_ENABLE(gstreamer-interfaces,
- [AC_HELP_STRING([--disable-gstreamer-interfaces], [compile without GStreamer interface support])],
+ [AS_HELP_STRING([--disable-gstreamer-interfaces], [compile without GStreamer 0.10 interface support])],
enable_gstinterfaces="$enableval", enable_gstinterfaces="yes")
if test "x$enable_gstinterfaces" != "xno"; then
PKG_CHECK_MODULES(GSTINTERFACES, [gstreamer-interfaces-0.10], [
- AC_DEFINE(USE_GSTINTERFACES, 1, [Use GStreamer interfaces for X overlay support])
+ AC_DEFINE(USE_GSTINTERFACES, 1, [Use GStreamer 0.10 interfaces for X overlay support])
AC_SUBST(GSTINTERFACES_CFLAGS)
AC_SUBST(GSTINTERFACES_LIBS)
], [
@@ -791,32 +864,43 @@ dnl ####################################
dnl # Check for Farstream
dnl #######################################################################
AC_ARG_ENABLE(farstream,
- [AC_HELP_STRING([--disable-farstream], [compile without farstream support])],
+ [AS_HELP_STRING([--disable-farstream], [compile without farstream support])],
enable_farstream="$enableval", enable_farstream="yes")
if test "x$enable_farstream" != "xno"; then
- PKG_CHECK_MODULES(FARSTREAM, [farstream-0.1], [
- AC_SUBST(FARSTREAM_CFLAGS)
- AC_SUBST(FARSTREAM_LIBS)
- ], [
- # Try farsight.
- PKG_CHECK_MODULES(FARSTREAM, [farsight2-0.10 >= 0.0.9], [
- AC_DEFINE(HAVE_FARSIGHT, 1, [Use Farsight instead of Farstream])
+ if test "x$with_gstreamer" == "x1.0"; then
+ PKG_CHECK_MODULES(FARSTREAM, [farstream-0.2], [
AC_SUBST(FARSTREAM_CFLAGS)
AC_SUBST(FARSTREAM_LIBS)
], [
enable_farstream="no"
])
- ])
- fi
+ else
+ PKG_CHECK_MODULES(FARSTREAM, [farstream-0.1], [
+ AC_SUBST(FARSTREAM_CFLAGS)
+ AC_SUBST(FARSTREAM_LIBS)
+ ], [
+ # Try farsight.
+ PKG_CHECK_MODULES(FARSTREAM, [farsight2-0.10 >= 0.0.9], [
+ AC_DEFINE(HAVE_FARSIGHT, 1, [Use Farsight instead of Farstream])
+ AC_SUBST(FARSTREAM_CFLAGS)
+ AC_SUBST(FARSTREAM_LIBS)
+ ], [
+ enable_farstream="no"
+ ])
+ ])
+ fi
+fi
dnl #######################################################################
dnl # Check for Voice and Video support
dnl #######################################################################
AC_ARG_ENABLE(vv,
- [AC_HELP_STRING([--disable-vv], [compile without voice and video support])],
+ [AS_HELP_STRING([--disable-vv], [compile without voice and video support])],
enable_vv="$enableval", enable_vv="yes")
if test "x$enable_vv" != "xno"; then
- if test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno"; then
+ if test "x$enable_gst" != "xno" -a "x$with_gstreamer" == "x1.0" -a "x$enable_gstvideo" != "xno" -a "x$enable_farstream" != "xno"; then
+ AC_DEFINE(USE_VV, 1, [Use voice and video])
+ elif test "x$enable_gst" != "xno" -a "x$with_gstreamer" == "x0.10" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno"; then
AC_DEFINE(USE_VV, 1, [Use voice and video])
else
enable_vv="no"
@@ -829,7 +913,7 @@ Or use --disable-vv if you do not need v
fi
fi
fi
-AM_CONDITIONAL(USE_VV, test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno")
+AM_CONDITIONAL(USE_VV, test "x$enable_vv" != "xno")
dnl #######################################################################
dnl # Check for Internationalized Domain Name support
@@ -2605,6 +2689,7 @@ echo Protocols to build dynamically : $D
echo Protocols to link statically.. : $STATIC_PRPLS
echo
echo Build with GStreamer support.. : $enable_gst
+echo Build for GStreamer version... : $with_gstreamer
echo Build with D-Bus support...... : $enable_dbus
echo Build with voice and video.... : $enable_vv
if test "x$enable_dbus" = "xyes" ; then
diff --git a/finch/Makefile.am b/finch/Makefile.am
--- a/finch/Makefile.am
+++ b/finch/Makefile.am
@@ -73,6 +73,7 @@ finch_LDADD = \
$(LIBXML_LIBS) \
$(GNT_LIBS) \
$(GSTREAMER_LIBS) \
+ $(GSTVIDEO_LIBS) \
./libgnt/libgnt.la \
$(top_builddir)/libpurple/libpurple.la
diff --git a/libpurple/Makefile.am b/libpurple/Makefile.am
--- a/libpurple/Makefile.am
+++ b/libpurple/Makefile.am
@@ -308,6 +308,7 @@ libpurple_la_LIBADD = \
$(INTLLIBS) \
$(FARSTREAM_LIBS) \
$(GSTREAMER_LIBS) \
+ $(GSTVIDEO_LIBS) \
$(GSTINTERFACES_LIBS) \
$(IDN_LIBS) \
ciphers/libpurple-ciphers.la \
@@ -324,6 +325,7 @@ AM_CPPFLAGS = \
$(LIBXML_CFLAGS) \
$(FARSTREAM_CFLAGS) \
$(GSTREAMER_CFLAGS) \
+ $(GSTVIDEO_CFLAGS) \
$(GSTINTERFACES_CFLAGS) \
$(IDN_CFLAGS) \
$(NETWORKMANAGER_CFLAGS)
diff --git a/libpurple/data/purple.pc.in b/libpurple/data/purple.pc.in
--- a/libpurple/data/purple.pc.in
+++ b/libpurple/data/purple.pc.in
@@ -5,6 +5,7 @@ includedir=@includedir@
datarootdir=@datarootdir@
datadir=@datadir@
sysconfdir=@sysconfdir@
+gstreamer=@GSTREAMER_VER@
plugindir=${libdir}/purple- at PURPLE_MAJOR_VERSION@
diff --git a/libpurple/example/Makefile.am b/libpurple/example/Makefile.am
--- a/libpurple/example/Makefile.am
+++ b/libpurple/example/Makefile.am
@@ -8,6 +8,7 @@ nullclient_LDADD = \
$(INTLLIBS) \
$(GLIB_LIBS) \
$(LIBXML_LIBS) \
+ $(GSTVIDEO_LIBS) \
$(top_builddir)/libpurple/libpurple.la
AM_CPPFLAGS = \
diff --git a/libpurple/media/backend-fs2.c b/libpurple/media/backend-fs2.c
--- a/libpurple/media/backend-fs2.c
+++ b/libpurple/media/backend-fs2.c
@@ -41,6 +41,7 @@
#include <farstream/fs-conference.h>
#include <farstream/fs-element-added-notifier.h>
#include <farstream/fs-utils.h>
+#include <gst/gststructure.h>
#endif
/** @copydoc _PurpleMediaBackendFs2Class */
@@ -242,9 +243,17 @@ purple_media_network_protocol_from_fs(Fs
g_return_val_if_reached(PURPLE_MEDIA_NETWORK_PROTOCOL_TCP);
}
+#if GST_CHECK_VERSION(1,0,0)
+static GstPadProbeReturn
+event_probe_cb(GstPad *srcpad, GstPadProbeInfo *info, gpointer unused)
+#else
static gboolean
event_probe_cb(GstPad *srcpad, GstEvent *event, gboolean release_pad)
+#endif
{
+#if GST_CHECK_VERSION(1,0,0)
+ GstEvent *event = GST_PAD_PROBE_INFO_EVENT(info);
+#endif
if (GST_EVENT_TYPE(event) == GST_EVENT_CUSTOM_DOWNSTREAM
&& gst_event_has_name(event, "purple-unlink-tee")) {
@@ -252,22 +261,40 @@ event_probe_cb(GstPad *srcpad, GstEvent
gst_pad_unlink(srcpad, gst_pad_get_peer(srcpad));
+#if GST_CHECK_VERSION(1,0,0)
+ gst_pad_remove_probe(srcpad,
More information about the Commits
mailing list