Mercurial > pidgin
comparison libpurple/media.c @ 26339:b2e290e76998
Remove purple_media_get_sink and the sink variables in the media structures.
The concept of a single sink per stream is no longer relevant.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Sun, 22 Mar 2009 21:52:20 +0000 |
parents | 754be87047dc |
children | 5e605a489d53 |
comparison
equal
deleted
inserted
replaced
26338:754be87047dc | 26339:b2e290e76998 |
---|---|
54 GstElement *tee; | 54 GstElement *tee; |
55 FsSession *session; | 55 FsSession *session; |
56 | 56 |
57 PurpleMediaSessionType type; | 57 PurpleMediaSessionType type; |
58 | 58 |
59 GstElement *sink; | |
60 gulong window_id; | 59 gulong window_id; |
61 }; | 60 }; |
62 | 61 |
63 struct _PurpleMediaStream | 62 struct _PurpleMediaStream |
64 { | 63 { |
65 PurpleMediaSession *session; | 64 PurpleMediaSession *session; |
66 gchar *participant; | 65 gchar *participant; |
67 FsStream *stream; | 66 FsStream *stream; |
68 GstElement *sink; | |
69 GstElement *src; | 67 GstElement *src; |
70 GstElement *tee; | 68 GstElement *tee; |
71 | 69 |
72 GList *local_candidates; | 70 GList *local_candidates; |
73 GList *remote_candidates; | 71 GList *remote_candidates; |
1161 { | 1159 { |
1162 PurpleMediaSession *session; | 1160 PurpleMediaSession *session; |
1163 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); | 1161 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
1164 session = purple_media_get_session(media, sess_id); | 1162 session = purple_media_get_session(media, sess_id); |
1165 return (session != NULL) ? session->src : NULL; | 1163 return (session != NULL) ? session->src : NULL; |
1166 } | |
1167 | |
1168 GstElement * | |
1169 purple_media_get_sink(PurpleMedia *media, const gchar *sess_id, const gchar *participant) | |
1170 { | |
1171 PurpleMediaStream *stream; | |
1172 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); | |
1173 stream = purple_media_get_stream(media, sess_id, participant); | |
1174 return (stream != NULL) ? stream->sink : NULL; | |
1175 } | 1164 } |
1176 | 1165 |
1177 static PurpleMediaSession * | 1166 static PurpleMediaSession * |
1178 purple_media_session_from_fs_stream(PurpleMedia *media, FsStream *stream) | 1167 purple_media_session_from_fs_stream(PurpleMedia *media, FsStream *stream) |
1179 { | 1168 { |
1750 */ | 1739 */ |
1751 stream->src = gst_element_factory_make( | 1740 stream->src = gst_element_factory_make( |
1752 "liveadder", NULL); | 1741 "liveadder", NULL); |
1753 sink = purple_media_manager_get_element(priv->manager, | 1742 sink = purple_media_manager_get_element(priv->manager, |
1754 PURPLE_MEDIA_RECV_AUDIO); | 1743 PURPLE_MEDIA_RECV_AUDIO); |
1755 stream->sink = sink; | |
1756 } else if (codec->media_type == FS_MEDIA_TYPE_VIDEO) { | 1744 } else if (codec->media_type == FS_MEDIA_TYPE_VIDEO) { |
1757 stream->src = gst_element_factory_make( | 1745 stream->src = gst_element_factory_make( |
1758 "fsfunnel", NULL); | 1746 "fsfunnel", NULL); |
1759 sink = gst_element_factory_make( | 1747 sink = gst_element_factory_make( |
1760 "fakesink", NULL); | 1748 "fakesink", NULL); |
1770 } | 1758 } |
1771 | 1759 |
1772 sinkpad = gst_element_get_request_pad(stream->src, "sink%d"); | 1760 sinkpad = gst_element_get_request_pad(stream->src, "sink%d"); |
1773 gst_pad_link(srcpad, sinkpad); | 1761 gst_pad_link(srcpad, sinkpad); |
1774 gst_object_unref(sinkpad); | 1762 gst_object_unref(sinkpad); |
1775 | |
1776 if (codec->media_type == FS_MEDIA_TYPE_VIDEO && | |
1777 stream->sink != NULL) { | |
1778 gst_bin_add(GST_BIN(priv->confbin), stream->sink); | |
1779 gst_element_set_state(stream->sink, GST_STATE_PLAYING); | |
1780 gst_element_link(stream->tee, stream->sink); | |
1781 } | |
1782 | 1763 |
1783 stream->connected_cb_id = purple_timeout_add(0, | 1764 stream->connected_cb_id = purple_timeout_add(0, |
1784 (GSourceFunc)purple_media_connected_cb, stream); | 1765 (GSourceFunc)purple_media_connected_cb, stream); |
1785 } | 1766 } |
1786 | 1767 |