Mercurial > pidgin.yaz
diff libpurple/media-gst.h @ 26484:081a819bc710
Hide and gobjectify PurpleMediaElementInfo.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Thu, 02 Apr 2009 00:11:49 +0000 |
parents | 462e5c27dbd7 |
children | 9eb8c8ec0a75 |
line wrap: on
line diff
--- a/libpurple/media-gst.h Wed Apr 01 23:43:38 2009 +0000 +++ b/libpurple/media-gst.h Thu Apr 02 00:11:49 2009 +0000 @@ -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 @@ 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 @@ 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