summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ruprecht <maiku@pidgin.im>2008-11-06 01:32:58 +0000
committerMichael Ruprecht <maiku@pidgin.im>2008-11-06 01:32:58 +0000
commit789746324123c1a66c5570e25e5554ecb2d7b980 (patch)
tree3980fd52271fa498198a86a53a95a8a17375d314
parentebb6889882cb039c466fdc8f9a1243e6663712b8 (diff)
downloadpidgin-789746324123c1a66c5570e25e5554ecb2d7b980.tar.gz
Add purple_media_manager_get_element.
-rw-r--r--libpurple/mediamanager.c25
-rw-r--r--libpurple/mediamanager.h9
2 files changed, 34 insertions, 0 deletions
diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
index 323ea80afb..fd707ea7cb 100644
--- a/libpurple/mediamanager.c
+++ b/libpurple/mediamanager.c
@@ -199,4 +199,29 @@ purple_media_manager_remove_media(PurpleMediaManager *manager,
g_list_delete_link(manager->priv->medias, list);
}
+GstElement *
+purple_media_manager_get_element(PurpleMediaManager *manager,
+ PurpleMediaSessionType type)
+{
+ GstElement *ret = NULL;
+ GstElement *level = NULL;
+
+ /* TODO: If src, retrieve current src */
+ /* TODO: Send a signal here to allow for overriding the source/sink */
+
+ if (type & PURPLE_MEDIA_SEND_AUDIO)
+ purple_media_audio_init_src(&ret, &level);
+ else if (type & PURPLE_MEDIA_RECV_AUDIO)
+ purple_media_audio_init_recv(&ret, &level);
+ else if (type & PURPLE_MEDIA_SEND_VIDEO)
+ purple_media_video_init_src(&ret);
+ else if (type & PURPLE_MEDIA_RECV_VIDEO)
+ purple_media_video_init_recv(&ret);
+
+ if (ret == NULL)
+ purple_debug_error("media", "Error creating source or sink\n");
+
+ return ret;
+}
+
#endif /* USE_VV */
diff --git a/libpurple/mediamanager.h b/libpurple/mediamanager.h
index 8d93f502f1..36dc821156 100644
--- a/libpurple/mediamanager.h
+++ b/libpurple/mediamanager.h
@@ -123,6 +123,15 @@ void
purple_media_manager_remove_media(PurpleMediaManager *manager,
PurpleMedia *media);
+/**
+ * Returns a GStreamer source or sink for audio or video.
+ *
+ * @param manager The media manager to use to obtain the source/sink.
+ * @param type The type of source/sink to get.
+ */
+GstElement *purple_media_manager_get_element(PurpleMediaManager *manager,
+ PurpleMediaSessionType type);
+
/*}@*/
#ifdef __cplusplus