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 {