Mercurial > pidgin.yaz
diff libpurple/mediamanager.c @ 31814:55e30c0eca22
Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
committer: John Bailey <rekkanoryo@rekkanoryo.org>
author | jakub.adam@ktknet.cz |
---|---|
date | Sat, 08 Jan 2011 03:21:44 +0000 |
parents | 0485aed45f5b |
children | 17a4b32f4d46 |
line wrap: on
line diff
--- a/libpurple/mediamanager.c Sat Jan 08 03:10:40 2011 +0000 +++ b/libpurple/mediamanager.c Sat Jan 08 03:21:44 2011 +0000 @@ -420,7 +420,30 @@ #ifdef USE_GSTREAMER -static GstCaps * +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); + + manager->priv->video_caps = caps; + + if (manager->priv->pipeline && manager->priv->video_src) { + gchar *id = purple_media_element_info_get_id(manager->priv->video_src); + GstElement *src = gst_bin_get_by_name(GST_BIN(manager->priv->pipeline), id); + + if (src) { + GstElement *capsfilter = gst_bin_get_by_name(GST_BIN(src), "prpl_video_caps"); + g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL); + } + + g_free(id); + } +#endif +} + +GstCaps * purple_media_manager_get_video_caps(PurpleMediaManager *manager) { #ifdef USE_VV