00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef SDP_H
00033 #define SDP_H
00034
00035 #include "../msg_parser.h"
00036
00037 typedef struct sdp_payload_attr {
00038 struct sdp_payload_attr *next;
00039 int payload_num;
00040 str rtp_payload;
00041 str rtp_enc;
00042 str rtp_clock;
00043 str rtp_params;
00044 str fmtp_string;
00045 } sdp_payload_attr_t;
00046
00047 typedef struct sdp_stream_cell {
00048 struct sdp_stream_cell *next;
00049
00050 int pf;
00051 str ip_addr;
00052 int stream_num;
00053 int is_rtp;
00054 int is_on_hold;
00055
00056 str media;
00057 str port;
00058 str transport;
00059 str sendrecv_mode;
00060 str ptime;
00061 str payloads;
00062 int payloads_num;
00063
00064 str bw_type;
00067 str bw_width;
00068
00069
00070 str rtcp_port;
00071 str path;
00072 str max_size;
00073 str accept_types;
00074 str accept_wrapped_types;
00075 struct sdp_payload_attr **p_payload_attr;
00076 struct sdp_payload_attr *payload_attr;
00077 } sdp_stream_cell_t;
00078
00079 typedef struct sdp_session_cell {
00080 struct sdp_session_cell *next;
00081 int session_num;
00082 str cnt_disp;
00083
00084 int pf;
00085 str ip_addr;
00086
00087 int o_pf;
00088 str o_ip_addr;
00089
00090 str bw_type;
00093 str bw_width;
00094 int streams_num;
00095 struct sdp_stream_cell* streams;
00096 } sdp_session_cell_t;
00097
00101 typedef struct sdp_info {
00102 msg_body_type_t type;
00103 free_msg_body_f free;
00104 str text;
00105 int sessions_num;
00106 int streams_num;
00107 str raw_sdp;
00108 struct sdp_session_cell *sessions;
00109 } sdp_info_t;
00110
00111
00112
00113
00114
00115 int parse_sdp(struct sip_msg* _m);
00116
00120 int get_sdp_session_num(struct sip_msg* _m);
00124 int get_sdp_stream_num(struct sip_msg* _m);
00128 sdp_session_cell_t* get_sdp_session(struct sip_msg* _m, int session_num);
00132 sdp_session_cell_t* get_sdp_session_sdp(struct sdp_info* sdp, int session_num);
00133
00137 sdp_stream_cell_t* get_sdp_stream(struct sip_msg* _m, int session_num, int stream_num);
00141 sdp_stream_cell_t* get_sdp_stream_sdp(struct sdp_info* sdp, int session_num, int stream_num);
00142
00146 sdp_payload_attr_t* get_sdp_payload4payload(sdp_stream_cell_t *stream, str *rtp_payload);
00147
00151 sdp_payload_attr_t* get_sdp_payload4index(sdp_stream_cell_t *stream, int index);
00152
00158 void free_sdp(sdp_info_t** _sdp);
00159
00160
00166 void print_sdp(sdp_info_t* sdp, int log_level);
00172 void print_sdp_session(sdp_session_cell_t* sdp_session, int log_level);
00178 void print_sdp_stream(sdp_stream_cell_t *stream, int log_level);
00179
00180
00181 #endif