Mercurial > pidgin.yaz
comparison libpurple/media.c @ 25686:3bf9748fdef0
Preliminary video embedded in the conversation window. It's still kind of buggy.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Tue, 10 Jun 2008 05:18:29 +0000 |
parents | b5a00ddb7077 |
children | ddbea813862e |
comparison
equal
deleted
inserted
replaced
25685:c2231cf3be71 | 25686:3bf9748fdef0 |
---|---|
674 } | 674 } |
675 | 675 |
676 void | 676 void |
677 purple_media_video_init_src(GstElement **sendbin) | 677 purple_media_video_init_src(GstElement **sendbin) |
678 { | 678 { |
679 GstElement *src; | 679 GstElement *src, *tee, *queue, *local_sink; |
680 GstPad *pad; | 680 GstPad *pad; |
681 GstPad *ghost; | 681 GstPad *ghost; |
682 const gchar *video_plugin = purple_prefs_get_string("/purple/media/video/plugin"); | 682 const gchar *video_plugin = purple_prefs_get_string("/purple/media/video/plugin"); |
683 const gchar *video_device = purple_prefs_get_string("/purple/media/video/device"); | 683 const gchar *video_device = purple_prefs_get_string("/purple/media/video/device"); |
684 | 684 |
685 purple_debug_info("media", "purple_media_video_init_src\n"); | 685 purple_debug_info("media", "purple_media_video_init_src\n"); |
686 | 686 |
687 *sendbin = gst_bin_new("purplesendvideobin"); | 687 *sendbin = gst_bin_new("purplesendvideobin"); |
688 src = gst_element_factory_make(video_plugin, "videosrc"); | 688 src = gst_element_factory_make(video_plugin, "purplevideosource"); |
689 gst_bin_add(GST_BIN(*sendbin), src); | 689 gst_bin_add(GST_BIN(*sendbin), src); |
690 | |
691 tee = gst_element_factory_make("tee", NULL); | |
692 gst_bin_add(GST_BIN(*sendbin), tee); | |
693 gst_element_link(src, tee); | |
694 | |
695 queue = gst_element_factory_make("queue", NULL); | |
696 gst_bin_add(GST_BIN(*sendbin), queue); | |
697 gst_element_link(tee, queue); | |
690 | 698 |
691 if (!strcmp(video_plugin, "videotestsrc")) { | 699 if (!strcmp(video_plugin, "videotestsrc")) { |
692 /* unless is-live is set to true it doesn't throttle videotestsrc */ | 700 /* unless is-live is set to true it doesn't throttle videotestsrc */ |
693 g_object_set (G_OBJECT(src), "is-live", TRUE, NULL); | 701 g_object_set (G_OBJECT(src), "is-live", TRUE, NULL); |
694 } | 702 } |
695 pad = gst_element_get_pad(src, "src"); | 703 |
704 pad = gst_element_get_pad(queue, "src"); | |
696 ghost = gst_ghost_pad_new("ghostsrc", pad); | 705 ghost = gst_ghost_pad_new("ghostsrc", pad); |
697 gst_element_add_pad(*sendbin, ghost); | 706 gst_element_add_pad(*sendbin, ghost); |
707 | |
708 queue = gst_element_factory_make("queue", NULL); | |
709 gst_bin_add(GST_BIN(*sendbin), queue); | |
710 gst_element_link(tee, queue); | |
711 | |
712 local_sink = gst_element_factory_make("autovideosink", "purplelocalvideosink"); | |
713 gst_bin_add(GST_BIN(*sendbin), local_sink); | |
714 gst_element_link(queue, local_sink); | |
698 | 715 |
699 /* set current video device on "src"... */ | 716 /* set current video device on "src"... */ |
700 if (video_device) { | 717 if (video_device) { |
701 GList *devices = purple_media_get_devices(src); | 718 GList *devices = purple_media_get_devices(src); |
702 GList *dev = devices; | 719 GList *dev = devices; |