diff options
author | Michael Ruprecht <maiku@pidgin.im> | 2008-11-06 01:32:58 +0000 |
---|---|---|
committer | Michael Ruprecht <maiku@pidgin.im> | 2008-11-06 01:32:58 +0000 |
commit | 789746324123c1a66c5570e25e5554ecb2d7b980 (patch) | |
tree | 3980fd52271fa498198a86a53a95a8a17375d314 | |
parent | ebb6889882cb039c466fdc8f9a1243e6663712b8 (diff) | |
download | pidgin-789746324123c1a66c5570e25e5554ecb2d7b980.tar.gz |
Add purple_media_manager_get_element.
-rw-r--r-- | libpurple/mediamanager.c | 25 | ||||
-rw-r--r-- | libpurple/mediamanager.h | 9 |
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 |