/pidgin/main: 2415067473ba: Support GStreamer 1.x and resync wit...
David Woodhouse <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 2415067473ba10a2090d6130b93204a3b537b05c Author: David Woodhouse <[email protected]> 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-@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,