Bug 1890689 apply drift correction to input rate instead of output rate r=pehrsons
[gecko.git] / third_party / sipcc / sdp_private.h
blob8ce871938e90dbb429bf5ce3be0ab2ba54ea0dc7
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef _SIPCC_SDP_PRIVATE_H_
6 #define _SIPCC_SDP_PRIVATE_H_
9 #include "sipcc_sdp.h"
11 extern const sdp_attrarray_t sdp_attr[];
12 extern const sdp_namearray_t sdp_media[];
13 extern const sdp_namearray_t sdp_nettype[];
14 extern const sdp_namearray_t sdp_addrtype[];
15 extern const sdp_namearray_t sdp_transport[];
16 extern const sdp_namearray_t sdp_encrypt[];
17 extern const sdp_namearray_t sdp_payload[];
18 extern const sdp_namearray_t sdp_t38_rate[];
19 extern const sdp_namearray_t sdp_t38_udpec[];
20 extern const sdp_namearray_t sdp_qos_strength[];
21 extern const sdp_namearray_t sdp_qos_direction[];
22 extern const sdp_namearray_t sdp_qos_status_type[];
23 extern const sdp_namearray_t sdp_curr_type[];
24 extern const sdp_namearray_t sdp_des_type[];
25 extern const sdp_namearray_t sdp_conf_type[];
26 extern const sdp_namearray_t sdp_mediadir_role[];
27 extern const sdp_namearray_t sdp_fmtp_codec_param[];
28 extern const sdp_namearray_t sdp_fmtp_codec_param_val[];
29 extern const sdp_namearray_t sdp_silencesupp_pref[];
30 extern const sdp_namearray_t sdp_silencesupp_siduse[];
31 extern const sdp_namearray_t sdp_srtp_context_crypto_suite[];
32 extern const sdp_namearray_t sdp_bw_modifier_val[];
33 extern const sdp_namearray_t sdp_group_attr_val[];
34 extern const sdp_namearray_t sdp_ssrc_group_attr_val[];
35 extern const sdp_namearray_t sdp_src_filter_mode_val[];
36 extern const sdp_namearray_t sdp_rtcp_unicast_mode_val[];
37 extern const sdp_namearray_t sdp_rtcp_fb_type_val[];
38 extern const sdp_namearray_t sdp_rtcp_fb_nack_type_val[];
39 extern const sdp_namearray_t sdp_rtcp_fb_ack_type_val[];
40 extern const sdp_namearray_t sdp_rtcp_fb_ccm_type_val[];
41 extern const sdp_namearray_t sdp_setup_type_val[];
42 extern const sdp_namearray_t sdp_connection_type_val[];
45 extern const sdp_srtp_crypto_suite_list sdp_srtp_crypto_suite_array[];
46 /* Function Prototypes */
48 /* sdp_access.c */
49 extern sdp_mca_t *sdp_find_media_level(sdp_t *sdp_p, uint16_t level);
50 extern sdp_bw_data_t* sdp_find_bw_line (sdp_t *sdp_ptr, uint16_t level, uint16_t inst_num);
52 /* sdp_attr.c */
53 extern sdp_result_e
54 sdp_build_attr_fmtp_params (sdp_t *sdp_p, sdp_fmtp_t *attr_p, flex_string *fs);
56 extern sdp_result_e sdp_parse_attribute(sdp_t *sdp_p, uint16_t level,
57 const char *ptr);
58 extern sdp_result_e sdp_parse_attr_simple_string(sdp_t *sdp_p,
59 sdp_attr_t *attr_p, const char *ptr);
60 extern sdp_result_e sdp_build_attr_simple_string(sdp_t *sdp_p,
61 sdp_attr_t *attr_p, flex_string *fs);
62 extern sdp_result_e sdp_parse_attr_simple_u32(sdp_t *sdp_p,
63 sdp_attr_t *attr_p, const char *ptr);
64 extern sdp_result_e sdp_build_attr_simple_u32(sdp_t *sdp_p,
65 sdp_attr_t *attr_p, flex_string *fs);
66 extern sdp_result_e sdp_parse_attr_simple_bool(sdp_t *sdp_p,
67 sdp_attr_t *attr_p, const char *ptr);
68 extern sdp_result_e sdp_build_attr_simple_bool(sdp_t *sdp_p,
69 sdp_attr_t *attr_p, flex_string *fs);
70 extern sdp_result_e sdp_parse_attr_maxprate(sdp_t *sdp_p, sdp_attr_t *attr_p,
71 const char *ptr);
72 extern sdp_result_e sdp_parse_attr_fmtp(sdp_t *sdp_p, sdp_attr_t *attr_p,
73 const char *ptr);
74 extern sdp_result_e sdp_build_attr_fmtp(sdp_t *sdp_p, sdp_attr_t *attr_p,
75 flex_string *fs);
76 extern sdp_result_e sdp_parse_attr_sctpmap(sdp_t *sdp_p, sdp_attr_t *attr_p,
77 const char *ptr);
78 extern sdp_result_e sdp_build_attr_sctpmap(sdp_t *sdp_p, sdp_attr_t *attr_p,
79 flex_string *fs);
80 extern sdp_result_e sdp_parse_attr_msid(sdp_t *sdp_p, sdp_attr_t *attr_p,
81 const char *ptr);
82 extern sdp_result_e sdp_build_attr_msid(sdp_t *sdp_p, sdp_attr_t *attr_p,
83 flex_string *fs);
84 extern sdp_result_e sdp_parse_attr_msid_semantic(sdp_t *sdp_p,
85 sdp_attr_t *attr_p,
86 const char *ptr);
87 extern sdp_result_e sdp_build_attr_msid_semantic(sdp_t *sdp_p,
88 sdp_attr_t *attr_p,
89 flex_string *fs);
90 extern sdp_result_e sdp_parse_attr_ssrc(sdp_t *sdp_p, sdp_attr_t *attr_p,
91 const char *ptr);
92 extern sdp_result_e sdp_build_attr_ssrc(sdp_t *sdp_p, sdp_attr_t *attr_p,
93 flex_string *fs);
94 extern sdp_result_e sdp_parse_attr_ssrc_group(sdp_t *sdp_p, sdp_attr_t *attr_p,
95 const char *ptr);
96 extern sdp_result_e sdp_build_attr_ssrc_group(sdp_t *sdp_p, sdp_attr_t *attr_p,
97 flex_string *fs);
98 extern sdp_result_e sdp_parse_attr_direction(sdp_t *sdp_p, sdp_attr_t *attr_p,
99 const char *ptr);
100 extern sdp_result_e sdp_build_attr_direction(sdp_t *sdp_p, sdp_attr_t *attr_p,
101 flex_string *fs);
102 extern sdp_result_e sdp_parse_attr_qos(sdp_t *sdp_p, sdp_attr_t *attr_p,
103 const char *ptr);
104 extern sdp_result_e sdp_build_attr_qos(sdp_t *sdp_p, sdp_attr_t *attr_p,
105 flex_string *fs);
106 extern sdp_result_e sdp_parse_attr_curr(sdp_t *sdp_p, sdp_attr_t *attr_p,
107 const char *ptr);
108 extern sdp_result_e sdp_build_attr_curr (sdp_t *sdp_p, sdp_attr_t *attr_p,
109 flex_string *fs);
110 extern sdp_result_e sdp_parse_attr_des(sdp_t *sdp_p, sdp_attr_t *attr_p,
111 const char *ptr);
112 extern sdp_result_e sdp_build_attr_des (sdp_t *sdp_p, sdp_attr_t *attr_p,
113 flex_string *fs);
114 extern sdp_result_e sdp_parse_attr_conf(sdp_t *sdp_p, sdp_attr_t *attr_p,
115 const char *ptr);
116 extern sdp_result_e sdp_build_attr_conf (sdp_t *sdp_p, sdp_attr_t *attr_p,
117 flex_string *fs);
118 extern sdp_result_e sdp_parse_attr_transport_map(sdp_t *sdp_p,
119 sdp_attr_t *attr_p, const char *ptr);
120 extern sdp_result_e sdp_build_attr_transport_map(sdp_t *sdp_p,
121 sdp_attr_t *attr_p, flex_string *fs);
122 extern sdp_result_e sdp_parse_attr_subnet(sdp_t *sdp_p, sdp_attr_t *attr_p,
123 const char *ptr);
124 extern sdp_result_e sdp_build_attr_subnet(sdp_t *sdp_p, sdp_attr_t *attr_p,
125 flex_string *fs);
126 extern sdp_result_e sdp_parse_attr_t38_ratemgmt(sdp_t *sdp_p,
127 sdp_attr_t *attr_p, const char *ptr);
128 extern sdp_result_e sdp_build_attr_t38_ratemgmt(sdp_t *sdp_p,
129 sdp_attr_t *attr_p, flex_string *fs);
130 extern sdp_result_e sdp_parse_attr_t38_udpec(sdp_t *sdp_p, sdp_attr_t *attr_p,
131 const char *ptr);
132 extern sdp_result_e sdp_build_attr_t38_udpec(sdp_t *sdp_p, sdp_attr_t *attr_p,
133 flex_string *fs);
134 extern sdp_result_e sdp_parse_attr_cap(sdp_t *sdp_p, sdp_attr_t *attr_p,
135 const char *ptr);
136 extern sdp_result_e sdp_build_attr_cap(sdp_t *sdp_p, sdp_attr_t *attr_p,
137 flex_string *fs);
138 extern sdp_result_e sdp_parse_attr_cpar(sdp_t *sdp_p, sdp_attr_t *attr_p,
139 const char *ptr);
140 extern sdp_result_e sdp_build_attr_cpar(sdp_t *sdp_p, sdp_attr_t *attr_p,
141 flex_string *fs);
142 extern sdp_result_e sdp_parse_attr_pc_codec(sdp_t *sdp_p, sdp_attr_t *attr_p,
143 const char *ptr);
144 extern sdp_result_e sdp_build_attr_pc_codec(sdp_t *sdp_p, sdp_attr_t *attr_p,
145 flex_string *fs);
146 extern sdp_result_e sdp_parse_attr_xcap(sdp_t *sdp_p, sdp_attr_t *attr_p,
147 const char *ptr);
148 extern sdp_result_e sdp_build_attr_xcap(sdp_t *sdp_p, sdp_attr_t *attr_p,
149 flex_string *fs);
150 extern sdp_result_e sdp_parse_attr_xcpar(sdp_t *sdp_p, sdp_attr_t *attr_p,
151 const char *ptr);
152 extern sdp_result_e sdp_build_attr_xcpar(sdp_t *sdp_p, sdp_attr_t *attr_p,
153 flex_string *fs);
154 extern sdp_result_e sdp_parse_attr_rtcp(sdp_t *sdp_p, sdp_attr_t *attr_p,
155 const char *ptr);
156 extern sdp_result_e sdp_build_attr_rtcp(sdp_t *sdp_p, sdp_attr_t *attr_p,
157 flex_string *fs);
158 extern sdp_result_e sdp_parse_attr_rtr(sdp_t *sdp_p, sdp_attr_t *attr_p,
159 const char *ptr);
160 extern sdp_result_e sdp_build_attr_rtr(sdp_t *sdp_p, sdp_attr_t *attr_p,
161 flex_string *fs);
162 extern sdp_result_e sdp_parse_attr_comediadir(sdp_t *sdp_p, sdp_attr_t *attr_p,
163 const char *ptr);
164 extern sdp_result_e sdp_build_attr_comediadir(sdp_t *sdp_p, sdp_attr_t *attr_p,
165 flex_string *fs);
166 extern sdp_result_e sdp_parse_attr_silencesupp(sdp_t *sdp_p,
167 sdp_attr_t *attr_p,
168 const char *ptr);
169 extern sdp_result_e sdp_build_attr_silencesupp(sdp_t *sdp_p,
170 sdp_attr_t *attr_p,
171 flex_string *fs);
172 extern sdp_result_e sdp_parse_attr_srtpcontext(sdp_t *sdp_p,
173 sdp_attr_t *attr_p,
174 const char *ptr);
175 extern sdp_result_e sdp_build_attr_srtpcontext(sdp_t *sdp_p,
176 sdp_attr_t *attr_p,
177 flex_string *fs);
178 extern sdp_result_e sdp_parse_attr_rtcp_fb(sdp_t *sdp_p,
179 sdp_attr_t *attr_p,
180 const char *ptr);
181 extern sdp_result_e sdp_build_attr_rtcp_fb(sdp_t *sdp_p,
182 sdp_attr_t *attr_p,
183 flex_string *fs);
184 extern sdp_result_e sdp_parse_attr_setup(sdp_t *sdp_p,
185 sdp_attr_t *attr_p,
186 const char *ptr);
187 extern sdp_result_e sdp_build_attr_setup(sdp_t *sdp_p,
188 sdp_attr_t *attr_p,
189 flex_string *fs);
190 extern sdp_result_e sdp_parse_attr_connection(sdp_t *sdp_p,
191 sdp_attr_t *attr_p,
192 const char *ptr);
193 extern sdp_result_e sdp_build_attr_connection(sdp_t *sdp_p,
194 sdp_attr_t *attr_p,
195 flex_string *fs);
196 extern sdp_result_e sdp_parse_attr_extmap(sdp_t *sdp_p,
197 sdp_attr_t *attr_p,
198 const char *ptr);
199 extern sdp_result_e sdp_build_attr_extmap(sdp_t *sdp_p,
200 sdp_attr_t *attr_p,
201 flex_string *fs);
202 extern sdp_result_e sdp_parse_attr_mptime(
203 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
204 extern sdp_result_e sdp_build_attr_mptime(
205 sdp_t *sdp_p, sdp_attr_t *attr_p, flex_string *fs);
206 extern sdp_result_e sdp_parse_attr_x_sidin(
207 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
208 extern sdp_result_e sdp_build_attr_x_sidin(
209 sdp_t *sdp_p, sdp_attr_t *attr_p, flex_string *fs);
211 extern sdp_result_e sdp_parse_attr_x_sidout(
212 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
213 extern sdp_result_e sdp_build_attr_x_sidout(
214 sdp_t *sdp_p, sdp_attr_t *attr_p, flex_string *fs);
216 extern sdp_result_e sdp_parse_attr_x_confid(
217 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
218 extern sdp_result_e sdp_build_attr_x_confid(
219 sdp_t *sdp_p, sdp_attr_t *attr_p, flex_string *fs);
221 extern sdp_result_e sdp_parse_attr_group(
222 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
223 extern sdp_result_e sdp_build_attr_group(
224 sdp_t *sdp_p, sdp_attr_t *attr_p, flex_string *fs);
226 extern sdp_result_e sdp_parse_attr_source_filter(
227 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
228 extern sdp_result_e sdp_build_source_filter(
229 sdp_t *sdp_p, sdp_attr_t *attr_p, flex_string *fs);
231 extern sdp_result_e sdp_parse_attr_rtcp_unicast(
232 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
233 extern sdp_result_e sdp_build_attr_rtcp_unicast(
234 sdp_t *sdp_p, sdp_attr_t *attr_p, flex_string *fs);
236 extern sdp_result_e sdp_build_attr_ice_attr (
237 sdp_t *sdp_p, sdp_attr_t *attr_p, flex_string *fs);
238 extern sdp_result_e sdp_parse_attr_ice_attr (
239 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
241 extern sdp_result_e sdp_build_attr_simple_flag (
242 sdp_t *sdp_p, sdp_attr_t *attr_p, flex_string *fs);
243 extern sdp_result_e sdp_parse_attr_simple_flag (
244 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
246 extern sdp_result_e sdp_parse_attr_complete_line (
247 sdp_t *sdp_p, sdp_attr_t *attr_p, const char *ptr);
248 extern sdp_result_e sdp_parse_attr_long_line(sdp_t *sdp_p,
249 sdp_attr_t *attr_p, const char *ptr);
250 extern sdp_result_e sdp_build_attr_long_line(sdp_t *sdp_p,
251 sdp_attr_t *attr_p, flex_string *fs);
253 /* sdp_attr_access.c */
254 extern void sdp_free_attr(sdp_attr_t *attr_p);
255 extern sdp_result_e sdp_find_attr_list(sdp_t *sdp_p, uint16_t level, uint8_t cap_num,
256 sdp_attr_t **attr_p, char *fname);
257 extern sdp_attr_t *sdp_find_attr(sdp_t *sdp_p, uint16_t level, uint8_t cap_num,
258 sdp_attr_e attr_type, uint16_t inst_num);
259 extern sdp_attr_t *sdp_find_capability(sdp_t *sdp_p, uint16_t level, uint8_t cap_num);
261 /* sdp_main.c */
262 extern const char *sdp_get_attr_name(sdp_attr_e attr_type);
263 extern const char *sdp_get_media_name(sdp_media_e media_type);
264 extern const char *sdp_get_network_name(sdp_nettype_e network_type);
265 extern const char *sdp_get_address_name(sdp_addrtype_e addr_type);
266 extern const char *sdp_get_transport_name(sdp_transport_e transport_type);
267 extern const char *sdp_get_encrypt_name(sdp_encrypt_type_e encrypt_type);
268 extern const char *sdp_get_payload_name(sdp_payload_e payload);
269 extern const char *sdp_get_t38_ratemgmt_name(sdp_t38_ratemgmt_e rate);
270 extern const char *sdp_get_t38_udpec_name(sdp_t38_udpec_e udpec);
271 extern const char *sdp_get_qos_strength_name(sdp_qos_strength_e strength);
272 extern const char *sdp_get_qos_direction_name(sdp_qos_dir_e direction);
273 extern const char *sdp_get_qos_status_type_name(sdp_qos_status_types_e status_type);
274 extern const char *sdp_get_curr_type_name(sdp_curr_type_e curr_type);
275 extern const char *sdp_get_des_type_name(sdp_des_type_e des_type);
276 extern const char *sdp_get_conf_type_name(sdp_conf_type_e conf_type);
277 extern const char *sdp_get_mediadir_role_name (sdp_mediadir_role_e role);
278 extern const char *sdp_get_silencesupp_pref_name(sdp_silencesupp_pref_e pref);
279 extern const char *sdp_get_silencesupp_siduse_name(sdp_silencesupp_siduse_e
280 siduse);
282 extern const char *sdp_get_group_attr_name(sdp_group_attr_e group_attr);
283 extern const char *sdp_get_ssrc_group_attr_name(sdp_ssrc_group_attr_e group_attr);
284 extern const char *sdp_get_src_filter_mode_name(sdp_src_filter_mode_e type);
285 extern const char *sdp_get_rtcp_unicast_mode_name(sdp_rtcp_unicast_mode_e type);
287 /* sdp_tokens.c */
288 extern sdp_result_e sdp_parse_version(sdp_t *sdp_p, uint16_t token,
289 const char *ptr);
290 extern sdp_result_e sdp_build_version(sdp_t *sdp_p, uint16_t token, flex_string *fs);
291 extern sdp_result_e sdp_parse_owner(sdp_t *sdp_p, uint16_t token,
292 const char *ptr);
293 extern sdp_result_e sdp_build_owner(sdp_t *sdp_p, uint16_t token, flex_string *fs);
294 extern sdp_result_e sdp_parse_sessname(sdp_t *sdp_p, uint16_t token,
295 const char *ptr);
296 extern sdp_result_e sdp_build_sessname(sdp_t *sdp_p, uint16_t token, flex_string *fs);
297 extern sdp_result_e sdp_parse_sessinfo(sdp_t *sdp_p, uint16_t token,
298 const char *ptr);
299 extern sdp_result_e sdp_build_sessinfo(sdp_t *sdp_p, uint16_t token, flex_string *fs);
300 extern sdp_result_e sdp_parse_uri(sdp_t *sdp_p, uint16_t token, const char *ptr);
301 extern sdp_result_e sdp_build_uri(sdp_t *sdp_p, uint16_t token, flex_string *fs);
302 extern sdp_result_e sdp_parse_email(sdp_t *sdp_p, uint16_t token, const char *ptr);
303 extern sdp_result_e sdp_build_email(sdp_t *sdp_p, uint16_t token, flex_string *fs);
304 extern sdp_result_e sdp_parse_phonenum(sdp_t *sdp_p, uint16_t token,
305 const char *ptr);
306 extern sdp_result_e sdp_build_phonenum(sdp_t *sdp_p, uint16_t token, flex_string *fs);
307 extern sdp_result_e sdp_parse_connection(sdp_t *sdp_p, uint16_t token,
308 const char *ptr);
309 extern sdp_result_e sdp_build_connection(sdp_t *sdp_p, uint16_t token, flex_string *fs);
310 extern sdp_result_e sdp_parse_bandwidth(sdp_t *sdp_p, uint16_t token,
311 const char *ptr);
312 extern sdp_result_e sdp_build_bandwidth(sdp_t *sdp_p, uint16_t token, flex_string *fs);
313 extern sdp_result_e sdp_parse_timespec(sdp_t *sdp_p, uint16_t token,
314 const char *ptr);
315 extern sdp_result_e sdp_build_timespec(sdp_t *sdp_p, uint16_t token, flex_string *fs);
316 extern sdp_result_e sdp_parse_repeat_time(sdp_t *sdp_p, uint16_t token,
317 const char *ptr);
318 extern sdp_result_e sdp_build_repeat_time(sdp_t *sdp_p, uint16_t token, flex_string *fs);
319 extern sdp_result_e sdp_parse_timezone_adj(sdp_t *sdp_p, uint16_t token,
320 const char *ptr);
321 extern sdp_result_e sdp_build_timezone_adj(sdp_t *sdp_p, uint16_t token, flex_string *fs);
322 extern sdp_result_e sdp_parse_encryption(sdp_t *sdp_p, uint16_t token,
323 const char *ptr);
324 extern sdp_result_e sdp_build_encryption(sdp_t *sdp_p, uint16_t token, flex_string *fs);
325 extern sdp_result_e sdp_parse_media(sdp_t *sdp_p, uint16_t token, const char *ptr);
326 extern sdp_result_e sdp_build_media(sdp_t *sdp_p, uint16_t token, flex_string *fs);
327 extern sdp_result_e sdp_parse_attribute(sdp_t *sdp_p, uint16_t token,
328 const char *ptr);
329 extern sdp_result_e sdp_build_attribute(sdp_t *sdp_p, uint16_t token, flex_string *fs);
331 extern void sdp_parse_payload_types(sdp_t *sdp_p, sdp_mca_t *mca_p,
332 const char *ptr);
333 extern sdp_result_e
334 sdp_parse_attr_sdescriptions(sdp_t *sdp_p, sdp_attr_t *attr_p,
335 const char *ptr);
337 extern sdp_result_e
338 sdp_build_attr_sdescriptions(sdp_t *sdp_p, sdp_attr_t *attr_p,
339 flex_string *fs);
342 /* sdp_utils.c */
343 extern sdp_mca_t *sdp_alloc_mca(uint32_t line);
344 extern tinybool sdp_validate_maxprate(const char *string_parm);
345 extern char *sdp_findchar(const char *ptr, char *char_list);
346 extern const char *sdp_getnextstrtok(const char *str, char *tokenstr, unsigned tokenstr_len,
347 const char *delim, sdp_result_e *result);
348 extern uint32_t sdp_getnextnumtok(const char *str, const char **str_end,
349 const char *delim, sdp_result_e *result);
350 extern uint32_t sdp_getnextnumtok_or_null(const char *str, const char **str_end,
351 const char *delim, tinybool *null_ind,
352 sdp_result_e *result);
354 extern
355 tinybool verify_sdescriptions_mki(char *buf, char *mkiVal, uint16_t *mkiLen);
357 extern
358 tinybool verify_sdescriptions_lifetime(char *buf);
360 /* sdp_services_xxx.c */
361 extern void sdp_dump_buffer(char *_ptr, int _size_bytes);
363 tinybool sdp_checkrange(sdp_t *sdp, char *num, ulong* lval);
365 #endif /* _SDP_PRIVATE_H_ */