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);