media-gst.h
Go to the documentation of this file.00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _PURPLE_MEDIA_GST_H_
00028 #define _PURPLE_MEDIA_GST_H_
00029
00030 #include "media.h"
00031 #include "mediamanager.h"
00032
00033 #include <gst/gst.h>
00034
00035 G_BEGIN_DECLS
00036
00037 #define PURPLE_TYPE_MEDIA_ELEMENT_TYPE (purple_media_element_type_get_type())
00038 #define PURPLE_TYPE_MEDIA_ELEMENT_INFO (purple_media_element_info_get_type())
00039 #define PURPLE_MEDIA_ELEMENT_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
00040 #define PURPLE_MEDIA_ELEMENT_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
00041 #define PURPLE_IS_MEDIA_ELEMENT_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO))
00042 #define PURPLE_IS_MEDIA_ELEMENT_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_ELEMENT_INFO))
00043 #define PURPLE_MEDIA_ELEMENT_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
00044
00046 typedef struct _PurpleMediaElementInfo PurpleMediaElementInfo;
00047 typedef struct _PurpleMediaElementInfoClass PurpleMediaElementInfoClass;
00048 typedef GstElement *(*PurpleMediaElementCreateCallback)(PurpleMedia *media,
00049 const gchar *session_id, const gchar *participant);
00050
00051 typedef enum {
00052 PURPLE_MEDIA_ELEMENT_NONE = 0,
00053 PURPLE_MEDIA_ELEMENT_AUDIO = 1,
00054 PURPLE_MEDIA_ELEMENT_VIDEO = 1 << 1,
00055 PURPLE_MEDIA_ELEMENT_AUDIO_VIDEO = PURPLE_MEDIA_ELEMENT_AUDIO
00056 | PURPLE_MEDIA_ELEMENT_VIDEO,
00058 PURPLE_MEDIA_ELEMENT_NO_SRCS = 0,
00059 PURPLE_MEDIA_ELEMENT_ONE_SRC = 1 << 2,
00060 PURPLE_MEDIA_ELEMENT_MULTI_SRC = 1 << 3,
00061 PURPLE_MEDIA_ELEMENT_REQUEST_SRC = 1 << 4,
00063 PURPLE_MEDIA_ELEMENT_NO_SINKS = 0,
00064 PURPLE_MEDIA_ELEMENT_ONE_SINK = 1 << 5,
00065 PURPLE_MEDIA_ELEMENT_MULTI_SINK = 1 << 6,
00066 PURPLE_MEDIA_ELEMENT_REQUEST_SINK = 1 << 7,
00068 PURPLE_MEDIA_ELEMENT_UNIQUE = 1 << 8,
00072 PURPLE_MEDIA_ELEMENT_SRC = 1 << 9,
00073 PURPLE_MEDIA_ELEMENT_SINK = 1 << 10,
00074 } PurpleMediaElementType;
00075
00076 #ifdef __cplusplus
00077 extern "C" {
00078 #endif
00079
00087 GType purple_media_element_type_get_type(void);
00088
00096 GType purple_media_element_info_get_type(void);
00097
00108 GstElement *purple_media_get_src(PurpleMedia *media, const gchar *sess_id);
00109
00121 GstElement *purple_media_get_tee(PurpleMedia *media,
00122 const gchar *session_id, const gchar *participant);
00123
00124
00134 GstElement *purple_media_manager_get_pipeline(PurpleMediaManager *manager);
00135
00147 GstElement *purple_media_manager_get_element(PurpleMediaManager *manager,
00148 PurpleMediaSessionType type, PurpleMedia *media,
00149 const gchar *session_id, const gchar *participant);
00150
00151 PurpleMediaElementInfo *purple_media_manager_get_element_info(
00152 PurpleMediaManager *manager, const gchar *name);
00153 gboolean purple_media_manager_register_element(PurpleMediaManager *manager,
00154 PurpleMediaElementInfo *info);
00155 gboolean purple_media_manager_unregister_element(PurpleMediaManager *manager,
00156 const gchar *name);
00157 gboolean purple_media_manager_set_active_element(PurpleMediaManager *manager,
00158 PurpleMediaElementInfo *info);
00159 PurpleMediaElementInfo *purple_media_manager_get_active_element(
00160 PurpleMediaManager *manager, PurpleMediaElementType type);
00161
00162 gchar *purple_media_element_info_get_id(PurpleMediaElementInfo *info);
00163 gchar *purple_media_element_info_get_name(PurpleMediaElementInfo *info);
00164 PurpleMediaElementType purple_media_element_info_get_element_type(
00165 PurpleMediaElementInfo *info);
00166 GstElement *purple_media_element_info_call_create(
00167 PurpleMediaElementInfo *info, PurpleMedia *media,
00168 const gchar *session_id, const gchar *participant);
00169
00170 #ifdef __cplusplus
00171 }
00172 #endif
00173
00174 G_END_DECLS
00175
00176 #endif