comparison libpurple/media.h @ 25671:12a16471f94e

Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Fri, 06 Jun 2008 07:43:03 +0000
parents cbe97caec684
children bfaad8393463
comparison
equal deleted inserted replaced
25670:42e17cc5b6d2 25671:12a16471f94e
46 #define PURPLE_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA, PurpleMediaClass)) 46 #define PURPLE_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA, PurpleMediaClass))
47 47
48 typedef struct _PurpleMedia PurpleMedia; 48 typedef struct _PurpleMedia PurpleMedia;
49 typedef struct _PurpleMediaClass PurpleMediaClass; 49 typedef struct _PurpleMediaClass PurpleMediaClass;
50 typedef struct _PurpleMediaPrivate PurpleMediaPrivate; 50 typedef struct _PurpleMediaPrivate PurpleMediaPrivate;
51 typedef struct _PurpleMediaSession PurpleMediaSession;
51 52
52 typedef enum { 53 typedef enum {
53 PURPLE_MEDIA_RECV_AUDIO = 1 << 0, 54 PURPLE_MEDIA_RECV_AUDIO = 1 << 0,
54 PURPLE_MEDIA_SEND_AUDIO = 1 << 1, 55 PURPLE_MEDIA_SEND_AUDIO = 1 << 1,
55 PURPLE_MEDIA_RECV_VIDEO = 1 << 2, 56 PURPLE_MEDIA_RECV_VIDEO = 1 << 2,
69 PurpleMediaPrivate *priv; 70 PurpleMediaPrivate *priv;
70 }; 71 };
71 72
72 GType purple_media_get_type(void); 73 GType purple_media_get_type(void);
73 74
75 GList *purple_media_get_session_names(PurpleMedia *media);
76
74 void purple_media_get_elements(PurpleMedia *media, GstElement **audio_src, GstElement **audio_sink, 77 void purple_media_get_elements(PurpleMedia *media, GstElement **audio_src, GstElement **audio_sink,
75 GstElement **video_src, GstElement **video_sink); 78 GstElement **video_src, GstElement **video_sink);
76 79
77 void purple_media_set_audio_src(PurpleMedia *media, GstElement *video_src); 80 void purple_media_set_src(PurpleMedia *media, const gchar *sess_id, GstElement *src);
78 void purple_media_set_audio_sink(PurpleMedia *media, GstElement *video_src); 81 void purple_media_set_sink(PurpleMedia *media, const gchar *sess_id, GstElement *src);
79 void purple_media_set_video_src(PurpleMedia *media, GstElement *video_src);
80 void purple_media_set_video_sink(PurpleMedia *media, GstElement *video_src);
81 82
82 GstElement *purple_media_get_audio_src(PurpleMedia *media); 83 GstElement *purple_media_get_src(PurpleMedia *media, const gchar *sess_id);
83 GstElement *purple_media_get_audio_sink(PurpleMedia *media); 84 GstElement *purple_media_get_sink(PurpleMedia *media, const gchar *sess_id);
84 GstElement *purple_media_get_video_src(PurpleMedia *media);
85 GstElement *purple_media_get_video_sink(PurpleMedia *media);
86 85
87 GstElement *purple_media_get_audio_pipeline(PurpleMedia *media); 86 GstElement *purple_media_get_pipeline(PurpleMedia *media);
88 87
89 PurpleConnection *purple_media_get_connection(PurpleMedia *media); 88 PurpleConnection *purple_media_get_connection(PurpleMedia *media);
90 const char *purple_media_get_screenname(PurpleMedia *media); 89 const char *purple_media_get_screenname(PurpleMedia *media);
91 void purple_media_ready(PurpleMedia *media); 90 void purple_media_ready(PurpleMedia *media);
92 void purple_media_wait(PurpleMedia *media); 91 void purple_media_wait(PurpleMedia *media);
109 void purple_media_audio_init_src(GstElement **sendbin, 108 void purple_media_audio_init_src(GstElement **sendbin,
110 GstElement **sendlevel); 109 GstElement **sendlevel);
111 void purple_media_video_init_src(GstElement **sendbin); 110 void purple_media_video_init_src(GstElement **sendbin);
112 111
113 void purple_media_audio_init_recv(GstElement **recvbin, GstElement **recvlevel); 112 void purple_media_audio_init_recv(GstElement **recvbin, GstElement **recvlevel);
113 void purple_media_video_init_recv(GstElement **sendbin);
114 114
115 gboolean purple_media_add_stream(PurpleMedia *media, const gchar *who, 115 gboolean purple_media_add_stream(PurpleMedia *media, const gchar *sess_id, const gchar *who,
116 PurpleMediaStreamType type, const gchar *transmitter); 116 PurpleMediaStreamType type, const gchar *transmitter);
117 void purple_media_remove_stream(PurpleMedia *media, const gchar *who, PurpleMediaStreamType type); 117 void purple_media_remove_stream(PurpleMedia *media, const gchar *sess_id, const gchar *who);
118 118
119 GList *purple_media_get_local_audio_candidates(PurpleMedia *media); 119 PurpleMediaStreamType purple_media_get_session_type(PurpleMedia *media, const gchar *sess_id);
120 GList *purple_media_get_negotiated_audio_codecs(PurpleMedia *media);
121 120
122 GList *purple_media_get_local_audio_codecs(PurpleMedia *media); 121 GList *purple_media_get_negotiated_codecs(PurpleMedia *media, const gchar *sess_id);
123 void purple_media_add_remote_audio_candidates(PurpleMedia *media, const gchar *name, 122
124 GList *remote_candidates); 123 GList *purple_media_get_local_codecs(PurpleMedia *media, const gchar *sess_id);
125 FsCandidate *purple_media_get_local_candidate(PurpleMedia *media); 124 void purple_media_add_remote_candidates(PurpleMedia *media, const gchar *sess_id,
126 FsCandidate *purple_media_get_remote_candidate(PurpleMedia *media); 125 const gchar *name, GList *remote_candidates);
127 void purple_media_set_remote_audio_codecs(PurpleMedia *media, const gchar *name, GList *codecs); 126 GList *purple_media_get_local_candidates(PurpleMedia *media, const gchar *sess_id, const gchar *name);
127 FsCandidate *purple_media_get_local_candidate(PurpleMedia *media, const gchar *sess_id, const gchar *name);
128 FsCandidate *purple_media_get_remote_candidate(PurpleMedia *media, const gchar *sess_id, const gchar *name);
129 void purple_media_set_remote_codecs(PurpleMedia *media, const gchar *sess_id, const gchar *name, GList *codecs);
128 130
129 G_END_DECLS 131 G_END_DECLS
130 132
131 #endif /* USE_VV */ 133 #endif /* USE_VV */
132 134