1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129 |
- # HG changeset patch
- # User David Woodhouse <David.Woodhouse@intel.com>
- # Date 1426073959 0
- # Node ID 2415067473ba10a2090d6130b93204a3b537b05c
- # Parent 6b4576edf2a694ab55d0d06d3643c44601a75b15
- Support GStreamer 1.x and resync with trunk
- Index: pidgin-2.10.11/configure.ac
- ===================================================================
- --- pidgin-2.10.11.orig/configure.ac
- +++ pidgin-2.10.11/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
- @@ -2619,6 +2703,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
- Index: pidgin-2.10.11/finch/Makefile.am
- ===================================================================
- --- pidgin-2.10.11.orig/finch/Makefile.am
- +++ pidgin-2.10.11/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
-
- Index: pidgin-2.10.11/libpurple/Makefile.am
- ===================================================================
- --- pidgin-2.10.11.orig/libpurple/Makefile.am
- +++ pidgin-2.10.11/libpurple/Makefile.am
- @@ -313,6 +313,7 @@ libpurple_la_LIBADD = \
- $(INTLLIBS) \
- $(FARSTREAM_LIBS) \
- $(GSTREAMER_LIBS) \
- + $(GSTVIDEO_LIBS) \
- $(GSTINTERFACES_LIBS) \
- $(IDN_LIBS) \
- ciphers/libpurple-ciphers.la \
- @@ -329,6 +330,7 @@ AM_CPPFLAGS = \
- $(LIBXML_CFLAGS) \
- $(FARSTREAM_CFLAGS) \
- $(GSTREAMER_CFLAGS) \
- + $(GSTVIDEO_CFLAGS) \
- $(GSTINTERFACES_CFLAGS) \
- $(IDN_CFLAGS) \
- $(NETWORKMANAGER_CFLAGS) \
- Index: pidgin-2.10.11/libpurple/data/purple.pc.in
- ===================================================================
- --- pidgin-2.10.11.orig/libpurple/data/purple.pc.in
- +++ pidgin-2.10.11/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@
-
- Index: pidgin-2.10.11/libpurple/example/Makefile.am
- ===================================================================
- --- pidgin-2.10.11.orig/libpurple/example/Makefile.am
- +++ pidgin-2.10.11/libpurple/example/Makefile.am
- @@ -8,6 +8,7 @@ nullclient_LDADD = \
- $(INTLLIBS) \
- $(GLIB_LIBS) \
- $(LIBXML_LIBS) \
- + $(GSTVIDEO_LIBS) \
- $(top_builddir)/libpurple/libpurple.la
-
- AM_CPPFLAGS = \
- Index: pidgin-2.10.11/libpurple/media/backend-fs2.c
- ===================================================================
- --- pidgin-2.10.11.orig/libpurple/media/backend-fs2.c
- +++ pidgin-2.10.11/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,
- + g_value_get_ulong(gst_structure_get_value(s, "handler-id")));
- +#else
- gst_pad_remove_event_probe(srcpad,
- g_value_get_uint(gst_structure_get_value(s, "handler-id")));
- +#endif
-
- if (g_value_get_boolean(gst_structure_get_value(s, "release-pad")))
- gst_element_release_request_pad(GST_ELEMENT_PARENT(srcpad), srcpad);
-
- +#if GST_CHECK_VERSION(1,0,0)
- + return GST_PAD_PROBE_DROP;
- +#else
- return FALSE;
- +#endif
- }
-
- +#if GST_CHECK_VERSION(1,0,0)
- + return GST_PAD_PROBE_OK;
- +#else
- return TRUE;
- +#endif
- }
-
- static void
- unlink_teepad_dynamic(GstPad *srcpad, gboolean release_pad)
- {
- +#if GST_CHECK_VERSION(1,0,0)
- + gulong id = gst_pad_add_probe(srcpad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM,
- + event_probe_cb, NULL, NULL);
- +#else
- guint id = gst_pad_add_event_probe(srcpad, G_CALLBACK(event_probe_cb), NULL);
- +#endif
-
- if (GST_IS_GHOST_PAD(srcpad))
- srcpad = gst_ghost_pad_get_target(GST_GHOST_PAD(srcpad));
- @@ -276,7 +303,11 @@ unlink_teepad_dynamic(GstPad *srcpad, gb
- gst_event_new_custom(GST_EVENT_CUSTOM_DOWNSTREAM,
- gst_structure_new("purple-unlink-tee",
- "release-pad", G_TYPE_BOOLEAN, release_pad,
- +#if GST_CHECK_VERSION(1,0,0)
- + "handler-id", G_TYPE_ULONG, id,
- +#else
- "handler-id", G_TYPE_UINT, id,
- +#endif
- NULL)));
- }
-
- @@ -859,15 +890,31 @@ gst_msg_db_to_percent(GstMessage *msg, g
- gdouble value_db;
- gdouble percent;
-
- - list = gst_structure_get_value(
- - gst_message_get_structure(msg), value_name);
- + list = gst_structure_get_value(gst_message_get_structure(msg), value_name);
- +#if GST_CHECK_VERSION(1,0,0)
- +G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- + value = g_value_array_get_nth(g_value_get_boxed(list), 0);
- +G_GNUC_END_IGNORE_DEPRECATIONS
- +#else
- value = gst_value_list_get_value(list, 0);
- +#endif
- value_db = g_value_get_double(value);
- percent = pow(10, value_db / 20);
- return (percent > 1.0) ? 1.0 : percent;
- }
-
- static void
- +purple_media_error_fs(PurpleMedia *media, const gchar *error,
- + const GstStructure *fs_error)
- +{
- + const gchar *error_msg = gst_structure_get_string(fs_error, "error-msg");
- +
- + purple_media_error(media, "%s%s%s", error,
- + error_msg ? _("\n\nMessage from Farsight: ") : "",
- + error_msg ? error_msg : "");
- +}
- +
- +static void
- gst_handle_message_element(GstBus *bus, GstMessage *msg,
- PurpleMediaBackendFs2 *self)
- {
- @@ -875,11 +922,12 @@ gst_handle_message_element(GstBus *bus,
- PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self);
- GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg));
- static guint level_id = 0;
- + const GstStructure *structure = gst_message_get_structure(msg);
-
- if (level_id == 0)
- level_id = g_signal_lookup("level", PURPLE_TYPE_MEDIA);
-
- - if (gst_structure_has_name(msg->structure, "level")) {
- + if (gst_structure_has_name(structure, "level")) {
- GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg));
- gchar *name;
- gchar *participant = NULL;
- @@ -934,31 +982,63 @@ gst_handle_message_element(GstBus *bus,
- return;
-
- #ifdef HAVE_FARSIGHT
- - if (gst_structure_has_name(msg->structure, "farsight-error")) {
- + if (gst_structure_has_name(structure, "farsight-error")) {
- #else
- - if (gst_structure_has_name(msg->structure, "farstream-error")) {
- + if (gst_structure_has_name(structure, "farstream-error")) {
- #endif
- FsError error_no;
- - gst_structure_get_enum(msg->structure, "error-no",
- + gboolean error_emitted = FALSE;
- + gst_structure_get_enum(structure, "error-no",
- FS_TYPE_ERROR, (gint*)&error_no);
- switch (error_no) {
- + case FS_ERROR_CONSTRUCTION:
- + purple_media_error_fs(priv->media,
- + _("Error initializing the call. "
- + "This probably denotes problem in "
- +#ifdef HAVE_FARSIGHT
- + "installation of GStreamer or Farsight."),
- +#else
- + "installation of GStreamer or Farstream."),
- +#endif
- + structure);
- + error_emitted = TRUE;
- + break;
- + case FS_ERROR_NETWORK:
- + purple_media_error_fs(priv->media, _("Network error."),
- + structure);
- + error_emitted = TRUE;
- + purple_media_end(priv->media, NULL, NULL);
- + break;
- + case FS_ERROR_NEGOTIATION_FAILED:
- + purple_media_error_fs(priv->media,
- + _("Codec negotiation failed. "
- + "This problem might be resolved by installing "
- + "more GStreamer codecs."),
- + structure);
- + error_emitted = TRUE;
- + purple_media_end(priv->media, NULL, NULL);
- + break;
- case FS_ERROR_NO_CODECS:
- - purple_media_error(priv->media, _("No codecs"
- - " found. Install some"
- - " GStreamer codecs found"
- - " in GStreamer plugins"
- - " packages."));
- + purple_media_error(priv->media,
- + _("No codecs found. "
- + "Install some GStreamer codecs found "
- + "in GStreamer plugins packages."));
- + error_emitted = TRUE;
- purple_media_end(priv->media, NULL, NULL);
- break;
- #ifdef HAVE_FARSIGHT
- case FS_ERROR_NO_CODECS_LEFT:
- - purple_media_error(priv->media, _("No codecs"
- - " left. Your codec"
- - " preferences in"
- - " fs-codecs.conf are too"
- - " strict."));
- + purple_media_error(priv->media,
- + _("No codecs left. Your codec preferences "
- + "in fs-codecs.conf are too strict."));
- + error_emitted = TRUE;
- purple_media_end(priv->media, NULL, NULL);
- break;
- + case FS_ERROR_CONNECTION_FAILED:
- + purple_media_error(priv->media,
- + _("Could not connect to the remote party"));
- + error_emitted = TRUE;
- + break;
- case FS_ERROR_UNKNOWN_CNAME:
- /*
- * Unknown CName is only a problem for the
- @@ -975,22 +1055,22 @@ gst_handle_message_element(GstBus *bus,
- "farstream-error: %i: %s\n",
- #endif
- error_no,
- - gst_structure_get_string(
- - msg->structure, "error-msg"));
- + gst_structure_get_string(structure, "error-msg"));
- break;
- }
-
- if (FS_ERROR_IS_FATAL(error_no)) {
- + if (!error_emitted)
- #ifdef HAVE_FARSIGHT
- - purple_media_error(priv->media, _("A non-recoverable "
- - "Farsight2 error has occurred."));
- + purple_media_error(priv->media,
- + _("A non-recoverable Farsight2 error has occurred."));
- #else
- - purple_media_error(priv->media, _("A non-recoverable "
- - "Farstream error has occurred."));
- + purple_media_error(priv->media,
- + _("A non-recoverable Farstream error has occurred."));
- #endif
- purple_media_end(priv->media, NULL, NULL);
- }
- - } else if (gst_structure_has_name(msg->structure,
- + } else if (gst_structure_has_name(structure,
- #ifdef HAVE_FARSIGHT
- "farsight-new-local-candidate")) {
- #else
- @@ -1005,9 +1085,9 @@ gst_handle_message_element(GstBus *bus,
- PurpleMediaBackendFs2Stream *media_stream;
- gchar *name;
-
- - value = gst_structure_get_value(msg->structure, "stream");
- + value = gst_structure_get_value(structure, "stream");
- stream = g_value_get_object(value);
- - value = gst_structure_get_value(msg->structure, "candidate");
- + value = gst_structure_get_value(structure, "candidate");
- local_candidate = g_value_get_boxed(value);
-
- session = get_session_from_fs_stream(self, stream);
- @@ -1029,7 +1109,7 @@ gst_handle_message_element(GstBus *bus,
- g_signal_emit_by_name(self, "new-candidate",
- session->id, name, candidate);
- g_object_unref(candidate);
- - } else if (gst_structure_has_name(msg->structure,
- + } else if (gst_structure_has_name(structure,
- #ifdef HAVE_FARSIGHT
- "farsight-local-candidates-prepared")) {
- #else
- @@ -1041,7 +1121,7 @@ gst_handle_message_element(GstBus *bus,
- PurpleMediaBackendFs2Session *session;
- gchar *name;
-
- - value = gst_structure_get_value(msg->structure, "stream");
- + value = gst_structure_get_value(structure, "stream");
- stream = g_value_get_object(value);
- session = get_session_from_fs_stream(self, stream);
-
- @@ -1051,7 +1131,7 @@ gst_handle_message_element(GstBus *bus,
-
- g_signal_emit_by_name(self, "candidates-prepared",
- session->id, name);
- - } else if (gst_structure_has_name(msg->structure,
- + } else if (gst_structure_has_name(structure,
- #ifdef HAVE_FARSIGHT
- "farsight-new-active-candidate-pair")) {
- #else
- @@ -1066,13 +1146,11 @@ gst_handle_message_element(GstBus *bus,
- PurpleMediaCandidate *lcandidate, *rcandidate;
- gchar *name;
-
- - value = gst_structure_get_value(msg->structure, "stream");
- + value = gst_structure_get_value(structure, "stream");
- stream = g_value_get_object(value);
- - value = gst_structure_get_value(msg->structure,
- - "local-candidate");
- + value = gst_structure_get_value(structure, "local-candidate");
- local_candidate = g_value_get_boxed(value);
- - value = gst_structure_get_value(msg->structure,
- - "remote-candidate");
- + value = gst_structure_get_value(structure, "remote-candidate");
- remote_candidate = g_value_get_boxed(value);
-
- g_object_get(stream, "participant", &participant, NULL);
- @@ -1089,7 +1167,7 @@ gst_handle_message_element(GstBus *bus,
-
- g_object_unref(lcandidate);
- g_object_unref(rcandidate);
- - } else if (gst_structure_has_name(msg->structure,
- + } else if (gst_structure_has_name(structure,
- #ifdef HAVE_FARSIGHT
- "farsight-recv-codecs-changed")) {
- #else
- @@ -1099,7 +1177,7 @@ gst_handle_message_element(GstBus *bus,
- GList *codecs;
- FsCodec *codec;
-
- - value = gst_structure_get_value(msg->structure, "codecs");
- + value = gst_structure_get_value(structure, "codecs");
- codecs = g_value_get_boxed(value);
- codec = codecs->data;
-
- @@ -1110,7 +1188,7 @@ gst_handle_message_element(GstBus *bus,
- "farstream-recv-codecs-changed: %s\n",
- #endif
- codec->encoding_name);
- - } else if (gst_structure_has_name(msg->structure,
- + } else if (gst_structure_has_name(structure,
- #ifdef HAVE_FARSIGHT
- "farsight-component-state-changed")) {
- #else
- @@ -1121,9 +1199,9 @@ gst_handle_message_element(GstBus *bus,
- guint component;
- const gchar *state;
-
- - value = gst_structure_get_value(msg->structure, "state");
- + value = gst_structure_get_value(structure, "state");
- fsstate = g_value_get_enum(value);
- - value = gst_structure_get_value(msg->structure, "component");
- + value = gst_structure_get_value(structure, "component");
- component = g_value_get_uint(value);
-
- switch (fsstate) {
- @@ -1158,7 +1236,7 @@ gst_handle_message_element(GstBus *bus,
- #endif
- "component: %u state: %s\n",
- component, state);
- - } else if (gst_structure_has_name(msg->structure,
- + } else if (gst_structure_has_name(structure,
- #ifdef HAVE_FARSIGHT
- "farsight-send-codec-changed")) {
- #else
- @@ -1168,7 +1246,7 @@ gst_handle_message_element(GstBus *bus,
- FsCodec *codec;
- gchar *codec_str;
-
- - value = gst_structure_get_value(msg->structure, "codec");
- + value = gst_structure_get_value(structure, "codec");
- codec = g_value_get_boxed(value);
- codec_str = fs_codec_to_string(codec);
-
- @@ -1181,7 +1259,7 @@ gst_handle_message_element(GstBus *bus,
- codec_str);
-
- g_free(codec_str);
- - } else if (gst_structure_has_name(msg->structure,
- + } else if (gst_structure_has_name(structure,
- #ifdef HAVE_FARSIGHT
- "farsight-codecs-changed")) {
- #else
- @@ -1191,7 +1269,7 @@ gst_handle_message_element(GstBus *bus,
- FsSession *fssession;
- GList *sessions;
-
- - value = gst_structure_get_value(msg->structure, "session");
- + value = gst_structure_get_value(structure, "session");
- fssession = g_value_get_object(value);
- sessions = g_hash_table_get_values(priv->sessions);
-
- @@ -1635,7 +1713,11 @@ create_src(PurpleMediaBackendFs2 *self,
- srcpad = gst_element_get_static_pad(session->srcvalve, "src");
- g_object_set(volume, "volume", input_volume, NULL);
- } else {
- +#if GST_CHECK_VERSION(1,0,0)
- + srcpad = gst_element_get_request_pad(session->tee, "src_%u");
- +#else
- srcpad = gst_element_get_request_pad(session->tee, "src%d");
- +#endif
- }
-
- purple_debug_info("backend-fs2", "connecting pad: %s\n",
- @@ -1645,11 +1727,14 @@ create_src(PurpleMediaBackendFs2 *self,
- gst_object_unref(session->src);
- gst_object_unref(sinkpad);
-
- - gst_element_set_state(session->src, GST_STATE_PLAYING);
- -
- purple_media_manager_create_output_window(purple_media_get_manager(
- priv->media), priv->media, sess_id, NULL);
-
- + purple_debug_info("backend-fs2", "create_src: setting source "
- + "state to GST_STATE_PLAYING - it may hang here on win32\n");
- + gst_element_set_state(session->src, GST_STATE_PLAYING);
- + purple_debug_info("backend-fs2", "create_src: state set\n");
- +
- return TRUE;
- }
-
- @@ -1853,14 +1938,10 @@ src_pad_added_cb(FsStream *fsstream, Gst
- * audioresample ! audioconvert ! realsink
- */
- stream->queue = gst_element_factory_make("queue", NULL);
- - stream->volume = gst_element_factory_make(
- - "volume", NULL);
- - g_object_set(stream->volume, "volume",
- - output_volume, NULL);
- - stream->level = gst_element_factory_make(
- - "level", NULL);
- - stream->src = gst_element_factory_make(
- - "liveadder", NULL);
- + stream->volume = gst_element_factory_make("volume", NULL);
- + g_object_set(stream->volume, "volume", output_volume, NULL);
- + stream->level = gst_element_factory_make("level", NULL);
- + stream->src = gst_element_factory_make("liveadder", NULL);
- sink = purple_media_manager_get_element(
- purple_media_get_manager(priv->media),
- PURPLE_MEDIA_RECV_AUDIO, priv->media,
- @@ -1879,10 +1960,12 @@ src_pad_added_cb(FsStream *fsstream, Gst
- gst_element_link(stream->queue, stream->volume);
- sink = stream->queue;
- } else if (codec->media_type == FS_MEDIA_TYPE_VIDEO) {
- - stream->src = gst_element_factory_make(
- - "fsfunnel", NULL);
- - sink = gst_element_factory_make(
- - "fakesink", NULL);
- +#if GST_CHECK_VERSION(1,0,0)
- + stream->src = gst_element_factory_make("funnel", NULL);
- +#else
- + stream->src = gst_element_factory_make("fsfunnel", NULL);
- +#endif
- + sink = gst_element_factory_make("fakesink", NULL);
- g_object_set(G_OBJECT(sink), "async", FALSE, NULL);
- gst_bin_add(GST_BIN(priv->confbin), sink);
- gst_element_set_state(sink, GST_STATE_PLAYING);
- @@ -1896,7 +1979,11 @@ src_pad_added_cb(FsStream *fsstream, Gst
- gst_element_link_many(stream->src, stream->tee, sink, NULL);
- }
-
- +#if GST_CHECK_VERSION(1,0,0)
- + sinkpad = gst_element_get_request_pad(stream->src, "sink_%u");
- +#else
- sinkpad = gst_element_get_request_pad(stream->src, "sink%d");
- +#endif
- gst_pad_link(srcpad, sinkpad);
- gst_object_unref(sinkpad);
-
- @@ -2078,8 +2165,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS
- if (!fs_stream_set_transmitter(fsstream, transmitter,
- _params, _num_params, &err)) {
- purple_debug_error("backend-fs2",
- - "Could not set transmitter %s: %s.\n",
- - transmitter, err->message);
- + "Could not set transmitter %s: %s.\n",
- + transmitter, err ? err->message : NULL);
- g_clear_error(&err);
- g_free(_params);
- return FALSE;
- @@ -2398,14 +2485,44 @@ purple_media_backend_fs2_set_send_codec(
- return TRUE;
- }
-
- +static const gchar **
- +purple_media_backend_fs2_get_available_params(void)
- +{
- + static const gchar *supported_params[] = {
- + "sdes-cname", "sdes-email", "sdes-location", "sdes-name", "sdes-note",
- + "sdes-phone", "sdes-tool", NULL
- + };
- +
- + return supported_params;
- +}
- +
- +static const gchar*
- +param_to_sdes_type(const gchar *param)
- +{
- + const gchar **supported = purple_media_backend_fs2_get_available_params();
- + static const gchar *sdes_types[] = {
- + "cname", "email", "location", "name", "note", "phone", "tool", NULL
- + };
- + guint i;
- +
- + for (i = 0; supported[i] != NULL; ++i) {
- + if (!strcmp(param, supported[i])) {
- + return sdes_types[i];
- + }
- + }
- +
- + return NULL;
- +}
- +
- static void
- purple_media_backend_fs2_set_params(PurpleMediaBackend *self,
- guint num_params, GParameter *params)
- {
- PurpleMediaBackendFs2Private *priv;
- - const gchar **supported = purple_media_backend_fs2_get_available_params();
- - const gchar **p;
- guint i;
- +#ifndef HAVE_FARSIGHT
- + GstStructure *sdes;
- +#endif
-
- g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self));
-
- @@ -2418,27 +2535,30 @@ purple_media_backend_fs2_set_params(Purp
- return;
- }
-
- +#ifdef HAVE_FARSIGHT
- for (i = 0; i != num_params; ++i) {
- - for (p = supported; *p != NULL; ++p) {
- - if (!strcmp(params[i].name, *p)) {
- - g_object_set(priv->conference,
- - params[i].name, g_value_get_string(¶ms[i].value),
- - NULL);
- - break;
- - }
- + if (param_to_sdes_type(params[i].name)) {
- + g_object_set(priv->conference,
- + params[i].name, g_value_get_string(¶ms[i].value),
- + NULL);
- }
- }
- -}
- +#else
- + g_object_get(G_OBJECT(priv->conference), "sdes", &sdes, NULL);
-
- -static const gchar **
- -purple_media_backend_fs2_get_available_params(void)
- -{
- - static const gchar *supported_params[] = {
- - "sdes-cname", "sdes-email", "sdes-location", "sdes-name", "sdes-note",
- - "sdes-phone", "sdes-tool", NULL
- - };
- + for (i = 0; i != num_params; ++i) {
- + const gchar *sdes_type = param_to_sdes_type(params[i].name);
- + if (!sdes_type)
- + continue;
-
- - return supported_params;
- + gst_structure_set(sdes, sdes_type,
- + G_TYPE_STRING, g_value_get_string(¶ms[i].value),
- + NULL);
- + }
- +
- + g_object_set(G_OBJECT(priv->conference), "sdes", sdes, NULL);
- + gst_structure_free(sdes);
- +#endif /* HAVE_FARSIGHT */
- }
- static gboolean
- send_dtmf_callback(gpointer userdata)
- Index: pidgin-2.10.11/libpurple/mediamanager.c
- ===================================================================
- --- pidgin-2.10.11.orig/libpurple/mediamanager.c
- +++ pidgin-2.10.11/libpurple/mediamanager.c
- @@ -44,7 +44,12 @@
- #else
- #include <farstream/fs-element-added-notifier.h>
- #endif
- +
- +#if GST_CHECK_VERSION(1,0,0)
- +#include <gst/video/videooverlay.h>
- +#else
- #include <gst/interfaces/xoverlay.h>
- +#endif
-
- /** @copydoc _PurpleMediaManagerPrivate */
- typedef struct _PurpleMediaManagerPrivate PurpleMediaManagerPrivate;
- @@ -270,8 +275,11 @@ purple_media_manager_get_pipeline(Purple
- gst_bus_add_signal_watch(GST_BUS(bus));
- g_signal_connect(G_OBJECT(bus), "message",
- G_CALLBACK(pipeline_bus_call), manager);
- - gst_bus_set_sync_handler(bus,
- - gst_bus_sync_signal_handler, NULL);
- +#if GST_CHECK_VERSION(1,0,0)
- + gst_bus_set_sync_handler(bus, gst_bus_sync_signal_handler, NULL, NULL);
- +#else
- + gst_bus_set_sync_handler(bus, gst_bus_sync_signal_handler, NULL);
- +#endif
- gst_object_unref(bus);
-
- filename = g_build_filename(purple_user_dir(),
- @@ -405,20 +413,31 @@ request_pad_unlinked_cb(GstPad *pad, Gst
- {
- GstElement *parent = GST_ELEMENT_PARENT(pad);
- GstIterator *iter;
- +#if GST_CHECK_VERSION(1,0,0)
- + GValue tmp = G_VALUE_INIT;
- +#endif
- GstPad *remaining_pad;
- GstIteratorResult result;
-
- - gst_element_release_request_pad(GST_ELEMENT_PARENT(pad), pad);
- + gst_element_release_request_pad(parent, pad);
-
- iter = gst_element_iterate_src_pads(parent);
-
- +#if GST_CHECK_VERSION(1,0,0)
- + result = gst_iterator_next(iter, &tmp);
- +#else
- result = gst_iterator_next(iter, (gpointer)&remaining_pad);
- +#endif
-
- if (result == GST_ITERATOR_DONE) {
- gst_element_set_locked_state(parent, TRUE);
- gst_element_set_state(parent, GST_STATE_NULL);
- gst_bin_remove(GST_BIN(GST_ELEMENT_PARENT(parent)), parent);
- } else if (result == GST_ITERATOR_OK) {
- +#if GST_CHECK_VERSION(1,0,0)
- + remaining_pad = g_value_get_object(&tmp);
- + g_value_reset(&tmp);
- +#endif
- gst_object_unref(remaining_pad);
- }
-
- @@ -456,7 +475,11 @@ purple_media_manager_get_video_caps(Purp
- {
- #ifdef USE_VV
- if (manager->priv->video_caps == NULL)
- +#if GST_CHECK_VERSION(1,0,0)
- + manager->priv->video_caps = gst_caps_from_string("video/x-raw,"
- +#else
- manager->priv->video_caps = gst_caps_from_string("video/x-raw-yuv,"
- +#endif
- "width=[250,352], height=[200,288], framerate=[1/1,20/1]");
- return manager->priv->video_caps;
- #else
- @@ -539,7 +562,11 @@ purple_media_manager_get_element(PurpleM
- g_free(id);
-
- tee = gst_bin_get_by_name(GST_BIN(ret), "tee");
- +#if GST_CHECK_VERSION(1,0,0)
- + pad = gst_element_get_request_pad(tee, "src_%u");
- +#else
- pad = gst_element_get_request_pad(tee, "src%d");
- +#endif
- gst_object_unref(tee);
- ghost = gst_ghost_pad_new(NULL, pad);
- gst_object_unref(pad);
- @@ -730,9 +757,12 @@ window_id_cb(GstBus *bus, GstMessage *ms
- {
- GstElement *sink;
-
- - if (GST_MESSAGE_TYPE(msg) != GST_MESSAGE_ELEMENT ||
- - !gst_structure_has_name(msg->structure,
- - "prepare-xwindow-id"))
- + if (GST_MESSAGE_TYPE(msg) != GST_MESSAGE_ELEMENT
- +#if GST_CHECK_VERSION(1,0,0)
- + || !gst_is_video_overlay_prepare_window_handle_message(msg))
- +#else
- + || !gst_structure_has_name(msg->structure, "prepare-xwindow-id"))
- +#endif
- return;
-
- sink = GST_ELEMENT(GST_MESSAGE_SRC(msg));
- @@ -746,8 +776,16 @@ window_id_cb(GstBus *bus, GstMessage *ms
- | G_SIGNAL_MATCH_DATA, 0, 0, NULL,
- window_id_cb, ow);
-
- - gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(
- - GST_MESSAGE_SRC(msg)), ow->window_id);
- +#if GST_CHECK_VERSION(1,0,0)
- + gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(GST_MESSAGE_SRC(msg)),
- + ow->window_id);
- +#elif GST_CHECK_VERSION(0,10,31)
- + gst_x_overlay_set_window_handle(GST_X_OVERLAY(GST_MESSAGE_SRC(msg)),
- + ow->window_id);
- +#else
- + gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(GST_MESSAGE_SRC(msg)),
- + ow->window_id);
- +#endif
- }
- #endif
-
- @@ -772,17 +810,19 @@ purple_media_manager_create_output_windo
- (participant == ow->participant)) &&
- !strcmp(session_id, ow->session_id)) {
- GstBus *bus;
- - GstElement *queue, *colorspace;
- + GstElement *queue, *convert;
- GstElement *tee = purple_media_get_tee(media,
- session_id, participant);
-
- if (tee == NULL)
- continue;
-
- - queue = gst_element_factory_make(
- - "queue", NULL);
- - colorspace = gst_element_factory_make(
- - "ffmpegcolorspace", NULL);
- + queue = gst_element_factory_make("queue", NULL);
- +#if GST_CHECK_VERSION(1,0,0)
- + convert = gst_element_factory_make("videoconvert", NULL);
- +#else
- + convert = gst_element_factory_make("ffmpegcolorspace", NULL);
- +#endif
- ow->sink = purple_media_manager_get_element(
- manager, PURPLE_MEDIA_RECV_VIDEO,
- ow->media, ow->session_id,
- @@ -795,7 +835,7 @@ purple_media_manager_create_output_windo
- if (g_object_class_find_property(klass,
- "sync"))
- g_object_set(G_OBJECT(ow->sink),
- - "sync", "FALSE", NULL);
- + "sync", FALSE, NULL);
- if (g_object_class_find_property(klass,
- "async"))
- g_object_set(G_OBJECT(ow->sink),
- @@ -803,7 +843,7 @@ purple_media_manager_create_output_windo
- }
-
- gst_bin_add_many(GST_BIN(GST_ELEMENT_PARENT(tee)),
- - queue, colorspace, ow->sink, NULL);
- + queue, convert, ow->sink, NULL);
-
- bus = gst_pipeline_get_bus(GST_PIPELINE(
- manager->priv->pipeline));
- @@ -812,10 +852,10 @@ purple_media_manager_create_output_windo
- gst_object_unref(bus);
-
- gst_element_set_state(ow->sink, GST_STATE_PLAYING);
- - gst_element_set_state(colorspace, GST_STATE_PLAYING);
- + gst_element_set_state(convert, GST_STATE_PLAYING);
- gst_element_set_state(queue, GST_STATE_PLAYING);
- - gst_element_link(colorspace, ow->sink);
- - gst_element_link(queue, colorspace);
- + gst_element_link(convert, ow->sink);
- + gst_element_link(queue, convert);
- gst_element_link(tee, queue);
- }
- }
- Index: pidgin-2.10.11/pidgin/Makefile.am
- ===================================================================
- --- pidgin-2.10.11.orig/pidgin/Makefile.am
- +++ pidgin-2.10.11/pidgin/Makefile.am
- @@ -151,6 +151,7 @@ pidgin_LDADD = \
- $(GLIB_LIBS) \
- $(DBUS_LIBS) \
- $(GSTREAMER_LIBS) \
- + $(GSTVIDEO_LIBS) \
- $(XSS_LIBS) \
- $(SM_LIBS) \
- $(INTLLIBS) \
- Index: pidgin-2.10.11/pidgin/gtkmedia.c
- ===================================================================
- --- pidgin-2.10.11.orig/pidgin/gtkmedia.c
- +++ pidgin-2.10.11/pidgin/gtkmedia.c
- @@ -43,7 +43,9 @@
- #endif
- #include <gdk/gdkkeysyms.h>
-
- +#if !GST_CHECK_VERSION(1,0,0)
- #include <gst/interfaces/xoverlay.h>
- +#endif
-
- #define PIDGIN_TYPE_MEDIA (pidgin_media_get_type())
- #define PIDGIN_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PIDGIN_TYPE_MEDIA, PidginMedia))
- @@ -590,6 +592,9 @@ pidgin_media_error_cb(PidginMedia *media
- if (conv != NULL)
- purple_conversation_write(conv, NULL, error,
- PURPLE_MESSAGE_ERROR, time(NULL));
- + else
- + purple_notify_error(NULL, NULL, _("Media error"), error);
- +
- gtk_statusbar_push(GTK_STATUSBAR(gtkmedia->priv->statusbar),
- 0, error);
- }
- Index: pidgin-2.10.11/pidgin/plugins/vvconfig.c
- ===================================================================
- --- pidgin-2.10.11.orig/pidgin/plugins/vvconfig.c
- +++ pidgin-2.10.11/pidgin/plugins/vvconfig.c
- @@ -26,7 +26,11 @@
- #include "gtkutils.h"
- #include "gtkprefs.h"
-
- +#if GST_CHECK_VERSION(1,0,0)
- +#include <gst/video/videooverlay.h>
- +#else
- #include <gst/interfaces/propertyprobe.h>
- +#endif
-
- /* container window for showing a stand-alone configurator */
- static GtkWidget *window = NULL;
- @@ -81,8 +85,10 @@ get_element_devices(const gchar *element
- GList *ret = NULL;
- GstElement *element;
- GObjectClass *klass;
- +#if !GST_CHECK_VERSION(1,0,0)
- GstPropertyProbe *probe;
- const GParamSpec *pspec;
- +#endif
-
- ret = g_list_prepend(ret, (gpointer)_("Default"));
- ret = g_list_prepend(ret, "");
- @@ -103,6 +109,10 @@ get_element_devices(const gchar *element
- return g_list_reverse(ret);
- }
-
- +#if GST_CHECK_VERSION(1,0,0)
- + purple_debug_info("vvconfig", "'%s' - gstreamer-1.0 doesn't suport "
- + "property probing\n", element_name);
- +#else
- if (!g_object_class_find_property(klass, "device") ||
- !GST_IS_PROPERTY_PROBE(element) ||
- !(probe = GST_PROPERTY_PROBE(element)) ||
- @@ -155,6 +165,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
- gst_element_set_state(element, GST_STATE_NULL);
- }
- }
- +#endif
- gst_object_unref(element);
-
- return g_list_reverse(ret);
- @@ -168,8 +179,13 @@ get_element_plugins(const gchar **plugin
- ret = g_list_prepend(ret, "Default");
- ret = g_list_prepend(ret, "");
- for (; plugins[0] && plugins[1]; plugins += 2) {
- +#if GST_CHECK_VERSION(1,0,0)
- + if (gst_registry_check_feature_version(gst_registry_get(),
- + plugins[0], 0, 0, 0)) {
- +#else
- if (gst_default_registry_check_feature_version(
- plugins[0], 0, 0, 0)) {
- +#endif
- ret = g_list_prepend(ret, (gpointer)plugins[1]);
- ret = g_list_prepend(ret, (gpointer)plugins[0]);
- }
- @@ -588,7 +604,13 @@ gst_msg_db_to_percent(GstMessage *msg, g
-
- list = gst_structure_get_value(
- gst_message_get_structure(msg), value_name);
- +#if GST_CHECK_VERSION(1,0,0)
- +G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- + value = g_value_array_get_nth(g_value_get_boxed(list), 0);
- +G_GNUC_END_IGNORE_DEPRECATIONS
- +#else
- value = gst_value_list_get_value(list, 0);
- +#endif
- value_db = g_value_get_double(value);
- percent = pow(10, value_db / 20);
- return (percent > 1.0) ? 1.0 : percent;
- @@ -604,7 +626,7 @@ static gboolean
- gst_bus_cb(GstBus *bus, GstMessage *msg, BusCbCtx *ctx)
- {
- if (GST_MESSAGE_TYPE(msg) == GST_MESSAGE_ELEMENT &&
- - gst_structure_has_name(msg->structure, "level")) {
- + gst_structure_has_name(gst_message_get_structure(msg), "level")) {
-
- GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg));
- gchar *name = gst_element_get_name(src);
|