00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _SDP_H_
00022 #define _SDP_H_
00023
00024 #ifdef ENABLE_MPATROL
00025 #include <mpatrol.h>
00026 #endif
00027
00028 #include <osipparser2/osip_list.h>
00029
00030
00044 #ifdef __cplusplus
00045 extern "C"
00046 {
00047 #endif
00048
00053 typedef struct sdp_bandwidth sdp_bandwidth_t;
00054
00059 struct sdp_bandwidth
00060 {
00061 char *b_bwtype;
00062 char *b_bandwidth;
00063 };
00064
00069 int sdp_bandwidth_init (sdp_bandwidth_t ** elem);
00074 void sdp_bandwidth_free (sdp_bandwidth_t * elem);
00075
00080 typedef struct sdp_time_descr sdp_time_descr_t;
00081
00086 struct sdp_time_descr
00087 {
00088 char *t_start_time;
00089 char *t_stop_time;
00090 osip_list_t *r_repeats;
00091 };
00092
00097 int sdp_time_descr_init (sdp_time_descr_t ** elem);
00102 void sdp_time_descr_free (sdp_time_descr_t * elem);
00103
00108 typedef struct sdp_key sdp_key_t;
00109
00114 struct sdp_key
00115 {
00116 char *k_keytype;
00117 char *k_keydata;
00118 };
00119
00124 int sdp_key_init (sdp_key_t ** elem);
00129 void sdp_key_free (sdp_key_t * elem);
00130
00135 typedef struct sdp_attribute sdp_attribute_t;
00136
00141 struct sdp_attribute
00142 {
00143 char *a_att_field;
00144 char *a_att_value;
00145 };
00146
00151 int sdp_attribute_init (sdp_attribute_t ** elem);
00156 void sdp_attribute_free (sdp_attribute_t * elem);
00157
00158
00163 typedef struct sdp_connection sdp_connection_t;
00164
00169 struct sdp_connection
00170 {
00171 char *c_nettype;
00172 char *c_addrtype;
00173 char *c_addr;
00174 char *c_addr_multicast_ttl;
00175 char *c_addr_multicast_int;
00176 };
00177
00182 int sdp_connection_init (sdp_connection_t ** elem);
00187 void sdp_connection_free (sdp_connection_t * elem);
00188
00193 typedef struct sdp_media sdp_media_t;
00194
00199 struct sdp_media
00200 {
00201 char *m_media;
00202 char *m_port;
00203 char *m_number_of_port;
00204 char *m_proto;
00205 osip_list_t *m_payloads;
00207 char *i_info;
00208 osip_list_t *c_connections;
00209 osip_list_t *b_bandwidths;
00210 osip_list_t *a_attributes;
00211 sdp_key_t *k_key;
00212 };
00213
00218 int sdp_media_init (sdp_media_t ** elem);
00223 void sdp_media_free (sdp_media_t * elem);
00224
00229 typedef struct sdp_message sdp_message_t;
00230
00235 struct sdp_message
00236 {
00237 char *v_version;
00238 char *o_username;
00239 char *o_sess_id;
00240 char *o_sess_version;
00241 char *o_nettype;
00242 char *o_addrtype;
00243 char *o_addr;
00244 char *s_name;
00245 char *i_info;
00246 char *u_uri;
00247 osip_list_t *e_emails;
00248 osip_list_t *p_phones;
00249 sdp_connection_t *c_connection;
00250 osip_list_t *b_bandwidths;
00251 osip_list_t *t_descrs;
00252 char *z_adjustments;
00253 sdp_key_t *k_key;
00254 osip_list_t *a_attributes;
00255 osip_list_t *m_medias;
00256 };
00257
00258
00259
00264 int sdp_message_init (sdp_message_t ** sdp);
00270 int sdp_message_parse (sdp_message_t * sdp, const char *buf);
00276 int sdp_message_to_str (sdp_message_t * sdp, char **dest);
00281 void sdp_message_free (sdp_message_t * sdp);
00287 int sdp_message_clone (sdp_message_t * sdp, sdp_message_t ** dest);
00288
00294 int sdp_message_v_version_set (sdp_message_t * sdp, char *value);
00299 char *sdp_message_v_version_get (sdp_message_t * sdp);
00310 int sdp_message_o_origin_set (sdp_message_t * sdp, char *username,
00311 char *sess_id, char *sess_version,
00312 char *nettype, char *addrtype, char *addr);
00317 char *sdp_message_o_username_get (sdp_message_t * sdp);
00322 char *sdp_message_o_sess_id_get (sdp_message_t * sdp);
00327 char *sdp_message_o_sess_version_get (sdp_message_t * sdp);
00332 char *sdp_message_o_nettype_get (sdp_message_t * sdp);
00337 char *sdp_message_o_addrtype_get (sdp_message_t * sdp);
00342 char *sdp_message_o_addr_get (sdp_message_t * sdp);
00348 int sdp_message_s_name_set (sdp_message_t * sdp, char *value);
00353 char *sdp_message_s_name_get (sdp_message_t * sdp);
00360 int sdp_message_i_info_set (sdp_message_t * sdp, int pos_media,
00361 char *value);
00367 char *sdp_message_i_info_get (sdp_message_t * sdp, int pos_media);
00373 int sdp_message_u_uri_set (sdp_message_t * sdp, char *value);
00378 char *sdp_message_u_uri_get (sdp_message_t * sdp);
00384 int sdp_message_e_email_add (sdp_message_t * sdp, char *value);
00389 #define sdp_e_email_get sdp_message_e_email_get
00390
00395 char *sdp_message_e_email_get (sdp_message_t * sdp, int pos);
00401 int sdp_message_p_phone_add (sdp_message_t * sdp, char *value);
00407 char *sdp_message_p_phone_get (sdp_message_t * sdp, int pos);
00418 int sdp_message_c_connection_add (sdp_message_t * sdp, int pos_media,
00419 char *nettype, char *addrtype,
00420 char *addr, char *addr_multicast_ttl,
00421 char *addr_multicast_int);
00422 #ifndef DOXYGEN
00423
00424 sdp_connection_t *sdp_message_connection_get (sdp_message_t * sdp,
00425 int pos_media, int pos);
00426 #endif
00427
00433 char *sdp_message_c_nettype_get (sdp_message_t * sdp, int pos_media,
00434 int pos);
00441 char *sdp_message_c_addrtype_get (sdp_message_t * sdp, int pos_media,
00442 int pos);
00449 char *sdp_message_c_addr_get (sdp_message_t * sdp, int pos_media, int pos);
00456 char *sdp_message_c_addr_multicast_ttl_get (sdp_message_t * sdp,
00457 int pos_media, int pos);
00464 char *sdp_message_c_addr_multicast_int_get (sdp_message_t * sdp,
00465 int pos_media, int pos);
00473 int sdp_message_b_bandwidth_add (sdp_message_t * sdp, int pos_media,
00474 char *bwtype, char *bandwidth);
00481 sdp_bandwidth_t *sdp_message_bandwidth_get (sdp_message_t * sdp,
00482 int pos_media, int pos);
00489 char *sdp_message_b_bwtype_get (sdp_message_t * sdp, int pos_media,
00490 int pos);
00497 char *sdp_message_b_bandwidth_get (sdp_message_t * sdp, int pos_media,
00498 int pos);
00505 int sdp_message_t_time_descr_add (sdp_message_t * sdp, char *start,
00506 char *stop);
00512 char *sdp_message_t_start_time_get (sdp_message_t * sdp, int pos_td);
00518 char *sdp_message_t_stop_time_get (sdp_message_t * sdp, int pos_td);
00525 int sdp_message_r_repeat_add (sdp_message_t * sdp, int pos_time_descr,
00526 char *value);
00533 char *sdp_message_r_repeat_get (sdp_message_t * sdp, int pos_time_descr,
00534 int pos_repeat);
00540 int sdp_message_z_adjustments_set (sdp_message_t * sdp, char *value);
00545 char *sdp_message_z_adjustments_get (sdp_message_t * sdp);
00553 int sdp_message_k_key_set (sdp_message_t * sdp, int pos_media,
00554 char *keytype, char *keydata);
00560 char *sdp_message_k_keytype_get (sdp_message_t * sdp, int pos_media);
00566 char *sdp_message_k_keydata_get (sdp_message_t * sdp, int pos_media);
00574 int sdp_message_a_attribute_add (sdp_message_t * sdp, int pos_media,
00575 char *att_field, char *att_value);
00582 int sdp_message_a_attribute_del (sdp_message_t * sdp, int pos_media,
00583 char *att_field);
00591 int sdp_message_a_attribute_del_at_index (sdp_message_t * sdp, int pos_media,
00592 char *att_field, int pos_attr);
00599 sdp_attribute_t *sdp_message_attribute_get (sdp_message_t * sdp,
00600 int pos_media, int pos);
00607 char *sdp_message_a_att_field_get (sdp_message_t * sdp, int pos_media,
00608 int pos);
00615 char *sdp_message_a_att_value_get (sdp_message_t * sdp, int pos_media,
00616 int pos);
00622 int sdp_message_endof_media (sdp_message_t * sdp, int pos);
00631 int sdp_message_m_media_add (sdp_message_t * sdp, char *media,
00632 char *port, char *number_of_port, char *proto);
00638 char *sdp_message_m_media_get (sdp_message_t * sdp, int pos_media);
00644 char *sdp_message_m_port_get (sdp_message_t * sdp, int pos_media);
00651 int sdp_message_m_port_set (sdp_message_t * sdp, int pos_media, char *port);
00657 char *sdp_message_m_number_of_port_get (sdp_message_t * sdp, int pos_media);
00663 char *sdp_message_m_proto_get (sdp_message_t * sdp, int pos_media);
00670 int sdp_message_m_payload_add (sdp_message_t * sdp, int pos_media,
00671 char *payload);
00678 char *sdp_message_m_payload_get (sdp_message_t * sdp, int pos_media,
00679 int pos);
00686 int sdp_message_m_payload_del (sdp_message_t * sdp, int pos_media,
00687 int pos);
00688
00689
00693 #ifdef __cplusplus
00694 }
00695 #endif
00696
00697
00698 #endif