Mercurial > pidgin
comparison libpurple/media.c @ 24951:94224a5563db
Prepare vv GUI earlier and create sinks when src-pad-added is triggered.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Thu, 06 Nov 2008 02:21:16 +0000 |
parents | 78c3e991782a |
children | a5f1804fcb4b |
comparison
equal
deleted
inserted
replaced
24950:431c59a6959d | 24951:94224a5563db |
---|---|
915 gst_object_unref(pad); | 915 gst_object_unref(pad); |
916 gst_element_add_pad(*sendbin, ghost); | 916 gst_element_add_pad(*sendbin, ghost); |
917 | 917 |
918 queue = gst_element_factory_make("queue", "purplelocalvideoqueue"); | 918 queue = gst_element_factory_make("queue", "purplelocalvideoqueue"); |
919 gst_bin_add(GST_BIN(*sendbin), queue); | 919 gst_bin_add(GST_BIN(*sendbin), queue); |
920 /* The queue is linked later, when the local video is ready to be shown */ | 920 gst_element_link(tee, queue); |
921 | 921 |
922 local_sink = gst_element_factory_make("autovideosink", "purplelocalvideosink"); | 922 local_sink = gst_element_factory_make("autovideosink", "purplelocalvideosink"); |
923 gst_bin_add(GST_BIN(*sendbin), local_sink); | 923 gst_bin_add(GST_BIN(*sendbin), local_sink); |
924 gst_element_link(queue, local_sink); | 924 gst_element_link(queue, local_sink); |
925 | 925 |
1032 | 1032 |
1033 static void | 1033 static void |
1034 purple_media_src_pad_added_cb(FsStream *stream, GstPad *srcpad, | 1034 purple_media_src_pad_added_cb(FsStream *stream, GstPad *srcpad, |
1035 FsCodec *codec, PurpleMediaSession *session) | 1035 FsCodec *codec, PurpleMediaSession *session) |
1036 { | 1036 { |
1037 GstPad *sinkpad = gst_element_get_static_pad(session->sink, "ghostsink"); | 1037 PurpleMediaSessionType type = purple_media_from_fs(codec->media_type, FS_DIRECTION_RECV); |
1038 GstPad *sinkpad = NULL; | |
1039 session->sink = purple_media_manager_get_element(purple_media_manager_get(), type); | |
1040 | |
1041 gst_bin_add(GST_BIN(purple_media_get_pipeline(session->media)), | |
1042 session->sink); | |
1043 sinkpad = gst_element_get_static_pad(session->sink, "ghostsink"); | |
1038 purple_debug_info("media", "connecting new src pad: %s\n", | 1044 purple_debug_info("media", "connecting new src pad: %s\n", |
1039 gst_pad_link(srcpad, sinkpad) == GST_PAD_LINK_OK ? "success" : "failure"); | 1045 gst_pad_link(srcpad, sinkpad) == GST_PAD_LINK_OK ? "success" : "failure"); |
1046 gst_element_set_state(session->sink, GST_STATE_PLAYING); | |
1040 } | 1047 } |
1041 | 1048 |
1042 static gchar * | 1049 static gchar * |
1043 purple_media_get_stun_pref_ip() | 1050 purple_media_get_stun_pref_ip() |
1044 { | 1051 { |