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 PURPLE_MEDIA_ELEMENT_APPLICATION = 1 << 11,
00075 } PurpleMediaElementType;
00076
00077 #ifdef __cplusplus
00078 extern "C" {
00079 #endif
00080
00088 GType purple_media_element_type_get_type(void);
00089
00097 GType purple_media_element_info_get_type(void);
00098
00109 GstElement *purple_media_get_src(PurpleMedia *media, const gchar *sess_id);
00110
00122 GstElement *purple_media_get_tee(PurpleMedia *media,
00123 const gchar *session_id, const gchar *participant);
00124
00125
00135 GstElement *purple_media_manager_get_pipeline(PurpleMediaManager *manager);
00136
00148 GstElement *purple_media_manager_get_element(PurpleMediaManager *manager,
00149 PurpleMediaSessionType type, PurpleMedia *media,
00150 const gchar *session_id, const gchar *participant);
00151
00152 PurpleMediaElementInfo *purple_media_manager_get_element_info(
00153 PurpleMediaManager *manager, const gchar *name);
00154 gboolean purple_media_manager_register_element(PurpleMediaManager *manager,
00155 PurpleMediaElementInfo *info);
00156 gboolean purple_media_manager_unregister_element(PurpleMediaManager *manager,
00157 const gchar *name);
00158 gboolean purple_media_manager_set_active_element(PurpleMediaManager *manager,
00159 PurpleMediaElementInfo *info);
00160 PurpleMediaElementInfo *purple_media_manager_get_active_element(
00161 PurpleMediaManager *manager, PurpleMediaElementType type);
00162
00174 void purple_media_manager_set_video_caps(PurpleMediaManager *manager,
00175 GstCaps *caps);
00176
00186 GstCaps *purple_media_manager_get_video_caps(PurpleMediaManager *manager);
00187
00188 gchar *purple_media_element_info_get_id(PurpleMediaElementInfo *info);
00189 gchar *purple_media_element_info_get_name(PurpleMediaElementInfo *info);
00190 PurpleMediaElementType purple_media_element_info_get_element_type(
00191 PurpleMediaElementInfo *info);
00192 GstElement *purple_media_element_info_call_create(
00193 PurpleMediaElementInfo *info, PurpleMedia *media,
00194 const gchar *session_id, const gchar *participant);
00195
00196 #ifdef __cplusplus
00197 }
00198 #endif
00199
00200 G_END_DECLS
00201
00202 #endif