media.h

Go to the documentation of this file.
00001 
00006 /* purple
00007  *
00008  * Purple is the legal property of its developers, whose names are too numerous
00009  * to list here.  Please refer to the COPYRIGHT file distributed with this
00010  * source distribution.
00011  *
00012  * This program is free software; you can redistribute it and/or modify
00013  * it under the terms of the GNU General Public License as published by
00014  * the Free Software Foundation; either version 2 of the License, or
00015  * (at your option) any later version.
00016  *
00017  * This program is distributed in the hope that it will be useful,
00018  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  * GNU General Public License for more details.
00021  *
00022  * You should have received a copy of the GNU General Public License
00023  * along with this program; if not, write to the Free Software
00024  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
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  /* _PURPLE_MEDIA_H_ */