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_H_
00028 #define _PURPLE_MEDIA_H_
00029
00030 #include "media/candidate.h"
00031 #include "media/codec.h"
00032 #include "media/enum-types.h"
00033
00034 #include <glib.h>
00035 #include <glib-object.h>
00036
00037 G_BEGIN_DECLS
00038
00039 #define PURPLE_TYPE_MEDIA (purple_media_get_type())
00040 #define PURPLE_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA, PurpleMedia))
00041 #define PURPLE_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA, PurpleMediaClass))
00042 #define PURPLE_IS_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA))
00043 #define PURPLE_IS_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA))
00044 #define PURPLE_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA, PurpleMediaClass))
00045
00047 typedef struct _PurpleMedia PurpleMedia;
00048
00049 #include "signals.h"
00050 #include "util.h"
00051
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055
00063 GType purple_media_get_type(void);
00064
00074 GList *purple_media_get_session_ids(PurpleMedia *media);
00075
00085 PurpleAccount *purple_media_get_account(PurpleMedia *media);
00086
00096 gpointer purple_media_get_prpl_data(PurpleMedia *media);
00097
00106 void purple_media_set_prpl_data(PurpleMedia *media, gpointer prpl_data);
00107
00117 void purple_media_error(PurpleMedia *media, const gchar *error, ...);
00118
00128 void purple_media_end(PurpleMedia *media, const gchar *session_id,
00129 const gchar *participant);
00130
00142 void purple_media_stream_info(PurpleMedia *media, PurpleMediaInfoType type,
00143 const gchar *session_id, const gchar *participant,
00144 gboolean local);
00145
00164 void purple_media_set_params(PurpleMedia *media,
00165 guint num_params, GParameter *params);
00166
00178 const gchar **purple_media_get_available_params(PurpleMedia *media);
00179
00190 gboolean purple_media_param_is_supported(PurpleMedia *media, const gchar *param);
00191
00211 gboolean purple_media_add_stream(PurpleMedia *media, const gchar *sess_id,
00212 const gchar *who, PurpleMediaSessionType type,
00213 gboolean initiator, const gchar *transmitter,
00214 guint num_params, GParameter *params);
00215
00226 PurpleMediaSessionType purple_media_get_session_type(PurpleMedia *media, const gchar *sess_id);
00227
00237 struct _PurpleMediaManager *purple_media_get_manager(PurpleMedia *media);
00238
00249 GList *purple_media_get_codecs(PurpleMedia *media, const gchar *sess_id);
00250
00261 void purple_media_add_remote_candidates(PurpleMedia *media,
00262 const gchar *sess_id,
00263 const gchar *participant,
00264 GList *remote_candidates);
00265
00275 GList *purple_media_get_local_candidates(PurpleMedia *media,
00276 const gchar *sess_id,
00277 const gchar *participant);
00278
00291 GList *purple_media_get_active_local_candidates(PurpleMedia *media,
00292 const gchar *sess_id, const gchar *participant);
00293
00306 GList *purple_media_get_active_remote_candidates(PurpleMedia *media,
00307 const gchar *sess_id, const gchar *participant);
00308
00321 gboolean purple_media_set_remote_codecs(PurpleMedia *media, const gchar *sess_id,
00322 const gchar *participant, GList *codecs);
00323
00335 gboolean purple_media_candidates_prepared(PurpleMedia *media,
00336 const gchar *session_id, const gchar *participant);
00337
00349 gboolean purple_media_set_send_codec(PurpleMedia *media, const gchar *sess_id, PurpleMediaCodec *codec);
00350
00364 gboolean purple_media_set_encryption_parameters(PurpleMedia *media,
00365 const gchar *sess_id, const gchar *cipher,
00366 const gchar *auth, const gchar *key, gsize key_len);
00367
00383 gboolean purple_media_set_decryption_parameters(PurpleMedia *media,
00384 const gchar *sess_id, const gchar *participant,
00385 const gchar *cipher, const gchar *auth,
00386 const gchar *key, gsize key_len);
00387
00398 gboolean purple_media_codecs_ready(PurpleMedia *media, const gchar *sess_id);
00399
00412 gboolean purple_media_set_send_rtcp_mux(PurpleMedia *media,
00413 const gchar *sess_id, const gchar *participant, gboolean send_rtcp_mux);
00414
00426 gboolean purple_media_is_initiator(PurpleMedia *media,
00427 const gchar *sess_id, const gchar *participant);
00428
00440 gboolean purple_media_accepted(PurpleMedia *media, const gchar *sess_id,
00441 const gchar *participant);
00442
00452 void purple_media_set_input_volume(PurpleMedia *media, const gchar *session_id, double level);
00453
00464 void purple_media_set_output_volume(PurpleMedia *media, const gchar *session_id,
00465 const gchar *participant, double level);
00466
00479 gulong purple_media_set_output_window(PurpleMedia *media,
00480 const gchar *session_id, const gchar *participant,
00481 gulong window_id);
00482
00490 void purple_media_remove_output_windows(PurpleMedia *media);
00491
00504 gboolean purple_media_send_dtmf(PurpleMedia *media, const gchar *session_id,
00505 gchar dtmf, guint8 volume, guint16 duration);
00506
00507 #ifdef __cplusplus
00508 }
00509 #endif
00510
00511 G_END_DECLS
00512
00513 #endif