Mercurial > pidgin
comparison libpurple/mediamanager.h @ 26349:1ae3af12095a
Move GStreamer related media functions into its own header.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Mon, 23 Mar 2009 02:59:18 +0000 |
parents | 75a02ffb0139 |
children | 064657db29c4 |
comparison
equal
deleted
inserted
replaced
26348:d7393eebf1f4 | 26349:1ae3af12095a |
---|---|
48 typedef struct _PurpleMediaManager PurpleMediaManager; | 48 typedef struct _PurpleMediaManager PurpleMediaManager; |
49 /** @copydoc _PurpleMediaManagerClass */ | 49 /** @copydoc _PurpleMediaManagerClass */ |
50 typedef struct _PurpleMediaManagerClass PurpleMediaManagerClass; | 50 typedef struct _PurpleMediaManagerClass PurpleMediaManagerClass; |
51 /** @copydoc _PurpleMediaManagerPrivate */ | 51 /** @copydoc _PurpleMediaManagerPrivate */ |
52 typedef struct _PurpleMediaManagerPrivate PurpleMediaManagerPrivate; | 52 typedef struct _PurpleMediaManagerPrivate PurpleMediaManagerPrivate; |
53 /** @copydoc _PurpleMediaElementInfo */ | |
54 typedef struct _PurpleMediaElementInfo PurpleMediaElementInfo; | |
55 | 53 |
56 /** The media manager class. */ | 54 /** The media manager class. */ |
57 struct _PurpleMediaManagerClass | 55 struct _PurpleMediaManagerClass |
58 { | 56 { |
59 GObjectClass parent_class; /**< The parent class. */ | 57 GObjectClass parent_class; /**< The parent class. */ |
62 /** The media manager's data. */ | 60 /** The media manager's data. */ |
63 struct _PurpleMediaManager | 61 struct _PurpleMediaManager |
64 { | 62 { |
65 GObject parent; /**< The parent of this manager. */ | 63 GObject parent; /**< The parent of this manager. */ |
66 PurpleMediaManagerPrivate *priv; /**< Private data for the manager. */ | 64 PurpleMediaManagerPrivate *priv; /**< Private data for the manager. */ |
67 }; | |
68 | |
69 typedef enum { | |
70 PURPLE_MEDIA_ELEMENT_AUDIO = 1, /** supports audio */ | |
71 PURPLE_MEDIA_ELEMENT_VIDEO = 1 << 1, /** supports video */ | |
72 PURPLE_MEDIA_ELEMENT_AUDIO_VIDEO = PURPLE_MEDIA_ELEMENT_AUDIO | |
73 | PURPLE_MEDIA_ELEMENT_VIDEO, /** supports audio and video */ | |
74 | |
75 PURPLE_MEDIA_ELEMENT_NO_SRCS = 0, /** has no src pads */ | |
76 PURPLE_MEDIA_ELEMENT_ONE_SRC = 1 << 2, /** has one src pad */ | |
77 PURPLE_MEDIA_ELEMENT_MULTI_SRC = 1 << 3, /** has multiple src pads */ | |
78 PURPLE_MEDIA_ELEMENT_REQUEST_SRC = 1 << 4, /** src pads must be requested */ | |
79 | |
80 PURPLE_MEDIA_ELEMENT_NO_SINKS = 0, /** has no sink pads */ | |
81 PURPLE_MEDIA_ELEMENT_ONE_SINK = 1 << 5, /** has one sink pad */ | |
82 PURPLE_MEDIA_ELEMENT_MULTI_SINK = 1 << 6, /** has multiple sink pads */ | |
83 PURPLE_MEDIA_ELEMENT_REQUEST_SINK = 1 << 7, /** sink pads must be requested */ | |
84 | |
85 PURPLE_MEDIA_ELEMENT_UNIQUE = 1 << 8, /** This element is unique and | |
86 only one instance of it should | |
87 be created at a time */ | |
88 | |
89 PURPLE_MEDIA_ELEMENT_SRC = 1 << 9, /** can be set as an active src */ | |
90 PURPLE_MEDIA_ELEMENT_SINK = 1 << 10, /** can be set as an active sink */ | |
91 } PurpleMediaElementType; | |
92 | |
93 struct _PurpleMediaElementInfo | |
94 { | |
95 const gchar *id; | |
96 PurpleMediaElementType type; | |
97 GstElement *(*create)(void); | |
98 }; | 65 }; |
99 | 66 |
100 #ifdef __cplusplus | 67 #ifdef __cplusplus |
101 extern "C" { | 68 extern "C" { |
102 #endif | 69 #endif |
117 * Gets the "global" media manager object. It's created if it doesn't already exist. | 84 * Gets the "global" media manager object. It's created if it doesn't already exist. |
118 * | 85 * |
119 * @return The "global" instance of the media manager object. | 86 * @return The "global" instance of the media manager object. |
120 */ | 87 */ |
121 PurpleMediaManager *purple_media_manager_get(void); | 88 PurpleMediaManager *purple_media_manager_get(void); |
122 | |
123 /** | |
124 * Gets the pipeline from the media manager. | |
125 * | |
126 * @param manager The media manager to get the pipeline from. | |
127 * | |
128 * @return The pipeline. | |
129 */ | |
130 GstElement * | |
131 purple_media_manager_get_pipeline(PurpleMediaManager *manager); | |
132 | 89 |
133 /** | 90 /** |
134 * Creates a media session. | 91 * Creates a media session. |
135 * | 92 * |
136 * @param manager The media manager to create the session under. | 93 * @param manager The media manager to create the session under. |
175 void | 132 void |
176 purple_media_manager_remove_media(PurpleMediaManager *manager, | 133 purple_media_manager_remove_media(PurpleMediaManager *manager, |
177 PurpleMedia *media); | 134 PurpleMedia *media); |
178 | 135 |
179 /** | 136 /** |
180 * Returns a GStreamer source or sink for audio or video. | |
181 * | |
182 * @param manager The media manager to use to obtain the source/sink. | |
183 * @param type The type of source/sink to get. | |
184 */ | |
185 GstElement *purple_media_manager_get_element(PurpleMediaManager *manager, | |
186 PurpleMediaSessionType type); | |
187 | |
188 PurpleMediaElementInfo *purple_media_manager_get_element_info( | |
189 PurpleMediaManager *manager, const gchar *name); | |
190 gboolean purple_media_manager_register_element(PurpleMediaManager *manager, | |
191 PurpleMediaElementInfo *info); | |
192 gboolean purple_media_manager_unregister_element(PurpleMediaManager *manager, | |
193 const gchar *name); | |
194 gboolean purple_media_manager_set_active_element(PurpleMediaManager *manager, | |
195 PurpleMediaElementInfo *info); | |
196 PurpleMediaElementInfo *purple_media_manager_get_active_element( | |
197 PurpleMediaManager *manager, PurpleMediaElementType type); | |
198 /** | |
199 * This shouldn't be called outside of mediamanager.c and media.c | 137 * This shouldn't be called outside of mediamanager.c and media.c |
200 */ | 138 */ |
201 gboolean purple_media_manager_create_output_window( | 139 gboolean purple_media_manager_create_output_window( |
202 PurpleMediaManager *manager, PurpleMedia *media, | 140 PurpleMediaManager *manager, PurpleMedia *media, |
203 const gchar *session_id, const gchar *participant); | 141 const gchar *session_id, const gchar *participant); |