Mon, 25 Jul 2016 09:27:01 +0200
media: clear USE_GSTREAMER macro from V&V source files
USE_VV implies USE_GSTREAMER and so the occurrences of the latter macro
in voice & video sources can be simply replaced with USE_VV (merging any
so created overlapping conditional blocks).
Code meant to be active when USE_VV=1 and USE_GSTREAMER=0 is
inaccessible and can be removed.
--- a/finch/gntmedia.c Thu Jul 07 23:39:50 2016 -0500 +++ b/finch/gntmedia.c Mon Jul 25 09:27:01 2016 +0200 @@ -408,47 +408,6 @@ return PURPLE_CMD_RET_OK; } -#ifndef USE_GSTREAMER - -static GstElement * -create_default_audio_src(PurpleMediaElementInfo *info, PurpleMedia *media, - const gchar *session_id, const gchar *participant) -{ - GstElement *src; - src = gst_element_factory_make("gconfaudiosrc", NULL); - if (src == NULL) - src = gst_element_factory_make("autoaudiosrc", NULL); - if (src == NULL) - src = gst_element_factory_make("alsasrc", NULL); - if (src == NULL) - src = gst_element_factory_make("osssrc", NULL); - if (src == NULL) - src = gst_element_factory_make("dshowaudiosrc", NULL); - if (src == NULL) { - purple_debug_error("gntmedia", "Unable to find a suitable " - "element for the default audio source.\n"); - return NULL; - } - gst_element_set_name(src, "finchdefaultaudiosrc"); - return src; -} - -static GstElement * -create_default_audio_sink(PurpleMediaElementInfo *info, PurpleMedia *media, - const gchar *session_id, const gchar *participant) -{ - GstElement *sink; - sink = gst_element_factory_make("gconfaudiosink", NULL); - if (sink == NULL) - sink = gst_element_factory_make("autoaudiosink",NULL); - if (sink == NULL) { - purple_debug_error("gntmedia", "Unable to find a suitable " - "element for the default audio sink.\n"); - return NULL; - } - return sink; -} -#endif /* USE_GSTREAMER */ #endif /* USE_VV */ void finch_media_manager_init(void) @@ -457,7 +416,6 @@ PurpleMediaManager *manager = purple_media_manager_get(); PurpleMediaElementInfo *audio_src; PurpleMediaElementInfo *audio_sink; -#ifdef USE_GSTREAMER const char *pref; pref = purple_prefs_get_string( @@ -481,23 +439,6 @@ audio_sink = purple_media_manager_get_element_info(manager, pref); } -#else - audio_src = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO, - "id", "finchdefaultaudiosrc", - "name", "Finch Default Audio Source", - "type", PURPLE_MEDIA_ELEMENT_AUDIO - | PURPLE_MEDIA_ELEMENT_SRC - | PURPLE_MEDIA_ELEMENT_ONE_SRC - | PURPLE_MEDIA_ELEMENT_UNIQUE, - "create-cb", create_default_audio_src, NULL); - audio_sink = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO, - "id", "finchdefaultaudiosink", - "name", "Finch Default Audio Sink", - "type", PURPLE_MEDIA_ELEMENT_AUDIO - | PURPLE_MEDIA_ELEMENT_SINK - | PURPLE_MEDIA_ELEMENT_ONE_SINK, - "create-cb", create_default_audio_sink, NULL); -#endif /* USE_GSTREAMER */ g_signal_connect(G_OBJECT(manager), "init-media", G_CALLBACK(finch_new_media), NULL); purple_cmd_register("call", "", PURPLE_CMD_P_DEFAULT,
--- a/libpurple/media.c Thu Jul 07 23:39:50 2016 -0500 +++ b/libpurple/media.c Mon Jul 25 09:27:01 2016 +0200 @@ -27,13 +27,10 @@ #include "debug.h" -#ifdef USE_GSTREAMER +#ifdef USE_VV #include "media/backend-fs2.h" #include "marshallers.h" #include "media-gst.h" -#endif - -#ifdef USE_VV /** @copydoc _PurpleMediaSession */ typedef struct _PurpleMediaSession PurpleMediaSession; @@ -562,11 +559,10 @@ #endif } -#ifdef USE_GSTREAMER +#ifdef USE_VV GstElement * purple_media_get_src(PurpleMedia *media, const gchar *sess_id) { -#ifdef USE_VV g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); if (PURPLE_IS_MEDIA_BACKEND_FS2(media->priv->backend)) @@ -575,11 +571,8 @@ media->priv->backend), sess_id); g_return_val_if_reached(NULL); -#else - return NULL; -#endif } -#endif /* USE_GSTREAMER */ +#endif /* USE_VV */ PurpleAccount * purple_media_get_account(PurpleMedia *media) @@ -1451,12 +1444,11 @@ #endif } -#ifdef USE_GSTREAMER +#ifdef USE_VV GstElement * purple_media_get_tee(PurpleMedia *media, const gchar *session_id, const gchar *participant) { -#ifdef USE_VV g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); if (PURPLE_IS_MEDIA_BACKEND_FS2(media->priv->backend)) @@ -1465,11 +1457,8 @@ media->priv->backend), session_id, participant); g_return_val_if_reached(NULL); -#else - return NULL; -#endif } -#endif /* USE_GSTREAMER */ +#endif /* USE_VV */ gboolean purple_media_send_dtmf(PurpleMedia *media, const gchar *session_id,
--- a/libpurple/media/backend-fs2.c Thu Jul 07 23:39:50 2016 -0500 +++ b/libpurple/media/backend-fs2.c Mon Jul 25 09:27:01 2016 +0200 @@ -2568,7 +2568,6 @@ } #endif /* USE_VV */ -#ifdef USE_GSTREAMER GstElement * purple_media_backend_fs2_get_src(PurpleMediaBackendFs2 *self, const gchar *sess_id) @@ -2658,7 +2657,6 @@ } #endif /* USE_VV */ } -#endif /* USE_GSTREAMER */ #ifdef USE_VV static gboolean
--- a/libpurple/media/backend-fs2.h Thu Jul 07 23:39:50 2016 -0500 +++ b/libpurple/media/backend-fs2.h Mon Jul 25 09:27:01 2016 +0200 @@ -58,7 +58,6 @@ */ GType purple_media_backend_fs2_get_type(void); -#ifdef USE_GSTREAMER /* * Temporary function in order to be able to test while * integrating with PurpleMedia @@ -75,7 +74,6 @@ void purple_media_backend_fs2_set_output_volume(PurpleMediaBackendFs2 *self, const gchar *sess_id, const gchar *who, double level); /* end tmp */ -#endif /* USE_GSTREAMER */ G_END_DECLS
--- a/libpurple/mediamanager.c Thu Jul 07 23:39:50 2016 -0500 +++ b/libpurple/mediamanager.c Mon Jul 25 09:27:01 2016 +0200 @@ -26,12 +26,9 @@ #include "media.h" #include "mediamanager.h" -#ifdef USE_GSTREAMER +#ifdef USE_VV #include "marshallers.h" #include "media-gst.h" -#endif - -#ifdef USE_VV #include <media/backend-fs2.h> #include <farstream/fs-element-added-notifier.h> @@ -72,11 +69,9 @@ PurpleMediaElementInfo *audio_src; PurpleMediaElementInfo *audio_sink; -#ifdef USE_GSTREAMER #if GST_CHECK_VERSION(1, 4, 0) GstDeviceMonitor *device_monitor; #endif /* GST_CHECK_VERSION(1, 4, 0) */ -#endif /* USE_GSTREAMER */ #ifdef HAVE_MEDIA_APPLICATION /* Application data streams */ @@ -119,10 +114,8 @@ #ifdef HAVE_MEDIA_APPLICATION static void free_appdata_info_locked (PurpleMediaAppDataInfo *info); #endif -#ifdef USE_GSTREAMER static void purple_media_manager_init_device_monitor(PurpleMediaManager *manager); static void purple_media_manager_register_static_elements(PurpleMediaManager *manager); -#endif static GObjectClass *parent_class = NULL; @@ -213,9 +206,7 @@ static void purple_media_manager_init (PurpleMediaManager *media) { -#ifdef USE_GSTREAMER GError *error; -#endif /* USE_GSTREAMER */ media->priv = PURPLE_MEDIA_MANAGER_GET_PRIVATE(media); media->priv->medias = NULL; @@ -226,7 +217,6 @@ media->priv->appdata_info = NULL; g_mutex_init (&media->priv->appdata_mutex); #endif -#ifdef USE_GSTREAMER if (gst_init_check(NULL, NULL, &error)) { purple_media_manager_register_static_elements(media); purple_media_manager_init_device_monitor(media); @@ -238,7 +228,6 @@ g_error_free(error); } } -#endif /* USE_GSTREAMER */ purple_prefs_add_none("/purple/media"); purple_prefs_add_none("/purple/media/audio"); @@ -272,14 +261,12 @@ (GDestroyNotify) free_appdata_info_locked); g_mutex_clear (&priv->appdata_mutex); #endif -#ifdef USE_GSTREAMER #if GST_CHECK_VERSION(1, 4, 0) if (priv->device_monitor) { gst_device_monitor_stop(priv->device_monitor); g_object_unref(priv->device_monitor); } #endif /* GST_CHECK_VERSION(1, 4, 0) */ -#endif /* USE_GSTREAMER */ parent_class->finalize(media); } @@ -332,11 +319,10 @@ } #endif -#ifdef USE_GSTREAMER +#ifdef USE_VV GstElement * purple_media_manager_get_pipeline(PurpleMediaManager *manager) { -#ifdef USE_VV g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL); if (manager->priv->pipeline == NULL) { @@ -392,11 +378,8 @@ } return manager->priv->pipeline; -#else - return NULL; -#endif } -#endif /* USE_GSTREAMER */ +#endif /* USE_VV */ static PurpleMedia * create_media(PurpleMediaManager *manager, @@ -713,14 +696,9 @@ gst_bin_remove(GST_BIN(GST_ELEMENT_PARENT(element)), element); } -#endif - -#ifdef USE_GSTREAMER - void purple_media_manager_set_video_caps(PurpleMediaManager *manager, GstCaps *caps) { -#ifdef USE_VV if (manager->priv->video_caps) gst_caps_unref(manager->priv->video_caps); @@ -741,21 +719,17 @@ g_free(id); } -#endif } GstCaps * purple_media_manager_get_video_caps(PurpleMediaManager *manager) { -#ifdef USE_VV if (manager->priv->video_caps == NULL) manager->priv->video_caps = gst_caps_from_string("video/x-raw," "width=[250,352], height=[200,288], framerate=[1/1,20/1]"); return manager->priv->video_caps; -#else - return NULL; -#endif } +#endif /* USE_VV */ #ifdef HAVE_MEDIA_APPLICATION /* @@ -1093,7 +1067,7 @@ g_mutex_unlock (&manager->priv->appdata_mutex); return appsink; } -#endif +#endif /* HAVE_MEDIA_APPLICATION */ #ifdef USE_VV static PurpleMediaElementInfo * @@ -1135,14 +1109,12 @@ return info; } -#endif /* USE_VV */ GstElement * purple_media_manager_get_element(PurpleMediaManager *manager, PurpleMediaSessionType type, PurpleMedia *media, const gchar *session_id, const gchar *participant) { -#ifdef USE_VV GstElement *ret = NULL; PurpleMediaElementInfo *info = NULL; PurpleMediaElementType element_type; @@ -1246,16 +1218,12 @@ purple_debug_error("media", "Error creating source or sink\n"); return ret; -#else - return NULL; -#endif } PurpleMediaElementInfo * purple_media_manager_get_element_info(PurpleMediaManager *manager, const gchar *id) { -#ifdef USE_VV GList *iter; g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL); @@ -1272,7 +1240,6 @@ } g_free(element_id); } -#endif return NULL; } @@ -1305,7 +1272,6 @@ purple_media_manager_register_element(PurpleMediaManager *manager, PurpleMediaElementInfo *info) { -#ifdef USE_VV PurpleMediaElementInfo *info2; gchar *id; GQuark detail; @@ -1333,16 +1299,12 @@ } return TRUE; -#else - return FALSE; -#endif } gboolean purple_media_manager_unregister_element(PurpleMediaManager *manager, const gchar *id) { -#ifdef USE_VV PurpleMediaElementInfo *info; GQuark detail; @@ -1377,16 +1339,12 @@ } return TRUE; -#else - return FALSE; -#endif } gboolean purple_media_manager_set_active_element(PurpleMediaManager *manager, PurpleMediaElementInfo *info) { -#ifdef USE_VV PurpleMediaElementInfo *info2; PurpleMediaElementType type; gboolean ret = FALSE; @@ -1428,16 +1386,12 @@ } return ret; -#else - return FALSE; -#endif } PurpleMediaElementInfo * purple_media_manager_get_active_element(PurpleMediaManager *manager, PurpleMediaElementType type) { -#ifdef USE_VV g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL); if (type & PURPLE_MEDIA_ELEMENT_SRC) { @@ -1456,13 +1410,10 @@ return get_recv_application_element_info (); } -#endif return NULL; } -#endif /* USE_GSTREAMER */ - -#ifdef USE_VV + static void window_id_cb(GstBus *bus, GstMessage *msg, PurpleMediaOutputWindow *ow) { @@ -1930,7 +1881,7 @@ #endif } -#ifdef USE_GSTREAMER +#ifdef USE_VV static void videosink_disable_last_sample(GstElement *sink) @@ -2426,6 +2377,7 @@ } return type; } +#endif /* USE_VV */ /* * PurpleMediaElementInfo @@ -2585,18 +2537,10 @@ G_DEFINE_TYPE(PurpleMediaElementInfo, purple_media_element_info, G_TYPE_OBJECT); -#else -GType -purple_media_element_info_get_type() -{ - return G_TYPE_NONE; -} -#endif gchar * purple_media_element_info_get_id(PurpleMediaElementInfo *info) { -#ifdef USE_VV gchar *id; #if GLIB_CHECK_VERSION(2, 37, 3) @@ -2607,36 +2551,25 @@ g_return_val_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(info), NULL); g_object_get(info, "id", &id, NULL); return id; -#else - return NULL; -#endif } gchar * purple_media_element_info_get_name(PurpleMediaElementInfo *info) { -#ifdef USE_VV gchar *name; g_return_val_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(info), NULL); g_object_get(info, "name", &name, NULL); return name; -#else - return NULL; -#endif } PurpleMediaElementType purple_media_element_info_get_element_type(PurpleMediaElementInfo *info) { -#ifdef USE_VV PurpleMediaElementType type; g_return_val_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(info), PURPLE_MEDIA_ELEMENT_NONE); g_object_get(info, "type", &type, NULL); return type; -#else - return PURPLE_MEDIA_ELEMENT_NONE; -#endif } GstElement * @@ -2644,16 +2577,11 @@ PurpleMedia *media, const gchar *session_id, const gchar *participant) { -#ifdef USE_VV PurpleMediaElementCreateCallback create; g_return_val_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(info), NULL); g_object_get(info, "create-cb", &create, NULL); if (create) return create(info, media, session_id, participant); -#endif return NULL; } - - -#endif /* USE_GSTREAMER */ - +#endif /* USE_VV */
--- a/pidgin/gtkmedia.c Thu Jul 07 23:39:50 2016 -0500 +++ b/pidgin/gtkmedia.c Mon Jul 25 09:27:01 2016 +0200 @@ -1193,248 +1193,6 @@ return TRUE; } - -#ifndef USE_GSTREAMER - -static void -videosink_disable_last_sample(GstElement *sink) -{ - GObjectClass *klass = G_OBJECT_GET_CLASS(sink); - - if (g_object_class_find_property(klass, "enable-last-sample")) { - g_object_set(sink, "enable-last-sample", FALSE, NULL); - } -} - -static void -autovideosink_child_added_cb (GstChildProxy *child_proxy, GObject *object, - gchar *name, gpointer user_data) -{ - videosink_disable_last_sample(GST_ELEMENT(object)); -} - -static GstElement * -create_vv_element(const gchar *plugin, const gchar *device) -{ - GstElement *element, *source; - - g_return_val_if_fail(plugin != NULL, NULL); - g_return_val_if_fail(plugin[0] != '\0', NULL); - - if (device != NULL && device[0] == '\0') - device = NULL; - - if (g_strcmp0(plugin, "videodisabledsrc") == 0) { - element = gst_element_factory_make("videotestsrc", NULL); - g_object_set(G_OBJECT(element), "is-live", TRUE, NULL); - if (g_strcmp0(device, "snow") == 0) { - /* GST_VIDEO_TEST_SRC_SNOW */ - g_object_set(G_OBJECT(element), "pattern", 1, NULL); - } else { - /* GST_VIDEO_TEST_SRC_BLACK */ - g_object_set(G_OBJECT(element), "pattern", 2, NULL); - } - return element; - } - - if (g_strcmp0(plugin, "ksvideosrc") == 0) { - GstElement *ksv_bin, *ksv_src, *ksv_filter; - GstPad *ksv_pad, *ksv_ghost; - - ksv_bin = gst_bin_new("ksvideofilteredsrc"); - ksv_src = gst_element_factory_make("ksvideosrc", NULL); - ksv_filter = gst_element_factory_make("ffmpegcolorspace", NULL); - - gst_bin_add_many(GST_BIN(ksv_bin), ksv_src, ksv_filter, NULL); - - gst_element_link(ksv_src, ksv_filter); - - ksv_pad = gst_element_get_static_pad(ksv_filter, "src"); - ksv_ghost = gst_ghost_pad_new("src", ksv_pad); - gst_object_unref(ksv_pad); - gst_element_add_pad(ksv_bin, ksv_ghost); - - element = ksv_bin; - source = ksv_src; - } - else - element = source = gst_element_factory_make(plugin, NULL); - - if (element == NULL) - return NULL; - - if (device != NULL) { - GObjectClass *klass = G_OBJECT_GET_CLASS(source); - if (g_object_class_find_property(klass, "device")) - g_object_set(G_OBJECT(source), "device", device, NULL); - else if (g_object_class_find_property(klass, "device-index")) - g_object_set(G_OBJECT(source), "device-index", - g_ascii_strtoull(device, NULL, 10), NULL); - else - purple_debug_warning("gtkmedia", "No possibility to " - "set device\n"); - } - - if (g_strcmp0(plugin, "autovideosink") == 0) { - g_signal_connect(source, "child-added", - G_CALLBACK(autovideosink_child_added_cb), NULL); - } else { - videosink_disable_last_sample(source); - } - - if (g_strcmp0(plugin, "videotestsrc") == 0) - g_object_set(G_OBJECT(element), "is-live", TRUE, NULL); - - return element; -} - -static GstElement * -create_configured_vv_element(const gchar *type, const gchar *dir) -{ - gchar *tmp; - const gchar *plugin, *device; - - tmp = g_strdup_printf(PIDGIN_PREFS_ROOT "/vvconfig/%s/%s/plugin", - type, dir); - plugin = purple_prefs_get_string(tmp); - g_free(tmp); - - tmp = g_strdup_printf(PIDGIN_PREFS_ROOT "/vvconfig/%s/%s/device", - type, dir); - device = purple_prefs_get_string(tmp); - g_free(tmp); - - if (plugin == NULL || plugin[0] == '\0') - return NULL; - - return create_vv_element(plugin, device); -} - -static GstElement * -create_default_video_src(PurpleMediaElementInfo *info, PurpleMedia *media, - const gchar *session_id, const gchar *participant) -{ - GstElement *sendbin, *src; - GstPad *pad; - GstPad *ghost; - - src = create_configured_vv_element("video", "src"); - -#ifdef _WIN32 - if (src == NULL) - src = create_vv_element("ksvideosrc", NULL); - if (src == NULL) - src = create_vv_element("dshowvideosrc", NULL); - if (src == NULL) - src = create_vv_element("autovideosrc", NULL); -#elif defined(__APPLE__) - if (src == NULL) - src = create_vv_element("osxvideosrc", NULL); - if (src == NULL) - src = create_vv_element("autovideosrc", NULL); -#else - if (src == NULL) - src = create_vv_element("gconfvideosrc", NULL); - if (src == NULL) - src = create_vv_element("autovideosrc", NULL); - if (src == NULL) - src = create_vv_element("v4l2src", NULL); - if (src == NULL) - src = create_vv_element("v4lsrc", NULL); -#endif - if (src == NULL) - src = create_vv_element("videotestsrc", NULL); - if (src == NULL) { - purple_debug_error("gtkmedia", "Unable to find a suitable " - "element for the default video source.\n"); - return NULL; - } - - sendbin = gst_bin_new("pidgindefaultvideosrc"); - - gst_bin_add(GST_BIN(sendbin), src); - - pad = gst_element_get_static_pad(src, "src"); - ghost = gst_ghost_pad_new("ghostsrc", pad); - gst_object_unref(pad); - gst_element_add_pad(sendbin, ghost); - - return sendbin; -} - -static GstElement * -create_default_video_sink(PurpleMediaElementInfo *info, PurpleMedia *media, - const gchar *session_id, const gchar *participant) -{ - GstElement *sink; - - sink = create_configured_vv_element("video", "sink"); - - if (sink == NULL) - sink = create_vv_element("directdrawsink", NULL); - if (sink == NULL) - sink = create_vv_element("gconfvideosink", NULL); - if (sink == NULL) - sink = create_vv_element("autovideosink", NULL); - if (sink == NULL) - purple_debug_error("gtkmedia", "Unable to find a suitable " - "element for the default video sink.\n"); - return sink; -} - -static GstElement * -create_default_audio_src(PurpleMediaElementInfo *info, PurpleMedia *media, - const gchar *session_id, const gchar *participant) -{ - GstElement *src; - - src = create_configured_vv_element("audio", "src"); - - if (src == NULL) - src = create_vv_element("directsoundsrc", NULL); - if (src == NULL) - src = create_vv_element("gconfaudiosrc", NULL); - if (src == NULL) - src = create_vv_element("autoaudiosrc", NULL); - if (src == NULL) - src = create_vv_element("alsasrc", NULL); - if (src == NULL) - src = create_vv_element("osssrc", NULL); - if (src == NULL) - src = create_vv_element("dshowaudiosrc", NULL); - if (src == NULL) - src = create_vv_element("osxaudiosrc", NULL); - if (src == NULL) { - purple_debug_error("gtkmedia", "Unable to find a suitable " - "element for the default audio source.\n"); - return NULL; - } - gst_element_set_name(src, "pidgindefaultaudiosrc"); - return src; -} - -static GstElement * -create_default_audio_sink(PurpleMediaElementInfo *info, PurpleMedia *media, - const gchar *session_id, const gchar *participant) -{ - GstElement *sink; - - sink = create_configured_vv_element("audio", "sink"); - - if (sink == NULL) - sink = create_vv_element("directsoundsink", NULL); - if (sink == NULL) - sink = create_vv_element("gconfaudiosink", NULL); - if (sink == NULL) - sink = create_vv_element("autoaudiosink",NULL); - if (sink == NULL) { - purple_debug_error("gtkmedia", "Unable to find a suitable " - "element for the default audio sink.\n"); - return NULL; - } - return sink; -} -#endif /* USE_GSTREAMER */ #endif /* USE_VV */ void @@ -1446,7 +1204,6 @@ PurpleMediaElementInfo *video_sink; PurpleMediaElementInfo *audio_src; PurpleMediaElementInfo *audio_sink; -#ifdef USE_GSTREAMER const char *pref; pref = purple_prefs_get_string( @@ -1492,38 +1249,6 @@ audio_sink = purple_media_manager_get_element_info(manager, pref); } -#else - video_src = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO, - "id", "pidgindefaultvideosrc", - "name", "Pidgin Default Video Source", - "type", PURPLE_MEDIA_ELEMENT_VIDEO - | PURPLE_MEDIA_ELEMENT_SRC - | PURPLE_MEDIA_ELEMENT_ONE_SRC - | PURPLE_MEDIA_ELEMENT_UNIQUE, - "create-cb", create_default_video_src, NULL); - video_sink = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO, - "id", "pidgindefaultvideosink", - "name", "Pidgin Default Video Sink", - "type", PURPLE_MEDIA_ELEMENT_VIDEO - | PURPLE_MEDIA_ELEMENT_SINK - | PURPLE_MEDIA_ELEMENT_ONE_SINK, - "create-cb", create_default_video_sink, NULL); - audio_src = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO, - "id", "pidgindefaultaudiosrc", - "name", "Pidgin Default Audio Source", - "type", PURPLE_MEDIA_ELEMENT_AUDIO - | PURPLE_MEDIA_ELEMENT_SRC - | PURPLE_MEDIA_ELEMENT_ONE_SRC - | PURPLE_MEDIA_ELEMENT_UNIQUE, - "create-cb", create_default_audio_src, NULL); - audio_sink = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO, - "id", "pidgindefaultaudiosink", - "name", "Pidgin Default Audio Sink", - "type", PURPLE_MEDIA_ELEMENT_AUDIO - | PURPLE_MEDIA_ELEMENT_SINK - | PURPLE_MEDIA_ELEMENT_ONE_SINK, - "create-cb", create_default_audio_sink, NULL); -#endif /* USE_GSTREAMER */ g_signal_connect(G_OBJECT(manager), "init-media", G_CALLBACK(pidgin_media_new_cb), NULL);