summaryrefslogtreecommitdiff
path: root/libpurple/media-gst.h
diff options
context:
space:
mode:
authorMichael Ruprecht <maiku@pidgin.im>2009-04-02 00:11:49 +0000
committerMichael Ruprecht <maiku@pidgin.im>2009-04-02 00:11:49 +0000
commitb34097b33d032bf9e70f87f959f5db6d892dff52 (patch)
tree267ef9386c054a518991f63aeb18c5f0a151d9ee /libpurple/media-gst.h
parent450d32b8ebedf8cd73a5053ab0848f39e8e05b4a (diff)
downloadpidgin-b34097b33d032bf9e70f87f959f5db6d892dff52.tar.gz
Hide and gobjectify PurpleMediaElementInfo.
Diffstat (limited to 'libpurple/media-gst.h')
-rw-r--r--libpurple/media-gst.h42
1 files changed, 34 insertions, 8 deletions
diff --git a/libpurple/media-gst.h b/libpurple/media-gst.h
index 0847ff1f8e..9f641d52ee 100644
--- a/libpurple/media-gst.h
+++ b/libpurple/media-gst.h
@@ -34,10 +34,22 @@
G_BEGIN_DECLS
+#define PURPLE_TYPE_MEDIA_ELEMENT_TYPE (purple_media_element_type_get_type())
+#define PURPLE_TYPE_MEDIA_ELEMENT_INFO (purple_media_element_info_get_type())
+#define PURPLE_MEDIA_ELEMENT_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
+#define PURPLE_MEDIA_ELEMENT_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
+#define PURPLE_IS_MEDIA_ELEMENT_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO))
+#define PURPLE_IS_MEDIA_ELEMENT_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_ELEMENT_INFO))
+#define PURPLE_MEDIA_ELEMENT_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
+
/** @copydoc _PurpleMediaElementInfo */
typedef struct _PurpleMediaElementInfo PurpleMediaElementInfo;
+typedef struct _PurpleMediaElementInfoClass PurpleMediaElementInfoClass;
+typedef GstElement *(*PurpleMediaElementCreateCallback)(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant);
typedef enum {
+ PURPLE_MEDIA_ELEMENT_NONE = 0, /** empty element */
PURPLE_MEDIA_ELEMENT_AUDIO = 1, /** supports audio */
PURPLE_MEDIA_ELEMENT_VIDEO = 1 << 1, /** supports video */
PURPLE_MEDIA_ELEMENT_AUDIO_VIDEO = PURPLE_MEDIA_ELEMENT_AUDIO
@@ -61,19 +73,25 @@ typedef enum {
PURPLE_MEDIA_ELEMENT_SINK = 1 << 10, /** can be set as an active sink */
} PurpleMediaElementType;
-struct _PurpleMediaElementInfo
-{
- const gchar *id;
- PurpleMediaElementType type;
- GstElement *(*create)(PurpleMedia *media,
- const gchar *session_id, const gchar *participant);
-};
-
#ifdef __cplusplus
extern "C" {
#endif
/**
+ * Gets the element type's GType.
+ *
+ * @return The element type's GType.
+ */
+GType purple_media_element_type_get_type(void);
+
+/**
+ * Gets the element info's GType.
+ *
+ * @return The element info's GType.
+ */
+GType purple_media_element_info_get_type(void);
+
+/**
* Gets the source from a session
*
* @param media The media object the session is in.
@@ -126,6 +144,14 @@ gboolean purple_media_manager_set_active_element(PurpleMediaManager *manager,
PurpleMediaElementInfo *purple_media_manager_get_active_element(
PurpleMediaManager *manager, PurpleMediaElementType type);
+gchar *purple_media_element_info_get_id(PurpleMediaElementInfo *info);
+gchar *purple_media_element_info_get_name(PurpleMediaElementInfo *info);
+PurpleMediaElementType purple_media_element_info_get_element_type(
+ PurpleMediaElementInfo *info);
+GstElement *purple_media_element_info_call_create(
+ PurpleMediaElementInfo *info, PurpleMedia *media,
+ const gchar *session_id, const gchar *participant);
+
#ifdef __cplusplus
}
#endif