blob: 9926d6abd2940eb5dcb9ad9e633988711ea0d5be [file] [log] [blame]
Benny Prijono313b1e42006-07-04 23:48:51 +00001/* $Id$ */
2/*
3 * Copyright (C) 2003-2006 Benny Prijono <benny@prijono.org>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
20/**
21 * The purpose of this file is to show the typical footprint of
22 * the application when various PJSIP/PJMEDIA components are used.
23 *
24 * This file will not be build as samples, but instead it is build
25 * by get-footprint.py Python script in pjsip-apps/build directory.
26 */
27
28#include <pjsip_ua.h>
29#include <pjsip_simple.h>
30#include <pjsip.h>
31#include <pjmedia.h>
32#include <pjmedia-codec.h>
33#include <pjlib-util.h>
34#include <pjlib.h>
35
36
37/* All flags: */
38#if 0
39#define HAS_PJLIB_STUN
40#define HAS_PJLIB_GETOPT
41#define HAS_PJLIB_XML
42
43#define HAS_PJSIP_CORE
44#define HAS_PJSIP_UDP_TRANSPORT
45#define HAS_PJSIP_TCP_TRANSPORT
46#define HAS_PJSIP_TRANSACTION
47#define HAS_PJSIP_UA_LAYER
48#define HAS_PJMEDIA_SDP
49#define HAS_PJMEDIA_SDP_NEGOTIATOR
50#define HAS_PJSIP_INV_SESSION
51#define HAS_PJSIP_REGC
52#define HAS_PJSIP_EVENT_FRAMEWORK
53#define HAS_PJSIP_CALL_TRANSFER
54#define HAS_PJSIP_PRESENCE
55#define HAS_PJSIP_IS_COMPOSING
56
57#define HAS_PJMEDIA
58#define HAS_PJMEDIA_SND_DEV
59#define HAS_PJMEDIA_SND_PORT
60#define HAS_PJMEDIA_RESAMPLE
61#define HAS_PJMEDIA_SILENCE_DET
62#define HAS_PJMEDIA_PLC
63#define HAS_PJMEDIA_CONFERENCE
64#define HAS_PJMEDIA_MASTER_PORT
65#define HAS_PJMEDIA_RTP
66#define HAS_PJMEDIA_RTCP
67#define HAS_PJMEDIA_JBUF
68#define HAS_PJMEDIA_STREAM
69#define HAS_PJMEDIA_UDP_TRANSPORT
70#define HAS_PJMEDIA_FILE_PLAYER
71#define HAS_PJMEDIA_FILE_CAPTURE
72#define HAS_PJMEDIA_MEM_PLAYER
73#define HAS_PJMEDIA_MEM_CAPTURE
74
75#define HAS_PJMEDIA_G711_CODEC
76#define HAS_PJMEDIA_GSM_CODEC
77#define HAS_PJMEDIA_SPEEX_CODEC
78#endif
79
80
81int dummy_function()
82{
83 pj_caching_pool cp;
84
85 pj_init();
86 pj_caching_pool_init(&cp, NULL, 0);
87 pj_array_erase(NULL, 0, 0, 0);
88 pj_create_unique_string(NULL, NULL);
89 pj_hash_create(NULL, 0);
90 pj_hash_get(NULL, NULL, 0, NULL);
91 pj_hash_set(NULL, NULL, NULL, 0, 0, NULL);
92 pj_ioqueue_create(NULL, 0, NULL);
93 pj_ioqueue_register_sock(NULL, NULL, 0, NULL, NULL, NULL);
94 pj_pool_alloc(NULL, 0);
95 pj_timer_heap_create(NULL, 0, NULL);
96
97#ifdef HAS_PJLIB_STUN
98 pj_stun_get_mapped_addr(&cp.factory, 0, NULL, NULL, 80, NULL, 80, NULL);
99#endif
100
101#ifdef HAS_PJLIB_GETOPT
102 pj_getopt_long(0, NULL, NULL, NULL, NULL);
103#endif
104
105#ifdef HAS_PJLIB_XML
106 pj_xml_parse(NULL, NULL, 100);
107 pj_xml_print(NULL, NULL, 10, PJ_FALSE);
108 pj_xml_clone(NULL, NULL);
109 pj_xml_node_new(NULL, NULL);
110 pj_xml_attr_new(NULL, NULL, NULL);
111 pj_xml_add_node(NULL, NULL);
112 pj_xml_add_attr(NULL, NULL);
113 pj_xml_find_node(NULL, NULL);
114 pj_xml_find_next_node(NULL, NULL, NULL);
115 pj_xml_find_attr(NULL, NULL, NULL);
116 pj_xml_find(NULL, NULL, NULL, NULL);
117#endif
118
119#ifdef HAS_PJSIP_CORE
120 pjsip_endpt_create(NULL, NULL, NULL);
121
122 pjsip_endpt_create_request(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
123 -1, NULL, NULL);
124 pjsip_endpt_create_request_from_hdr(NULL, NULL, NULL, NULL, NULL, NULL,
125 NULL, -1, NULL, NULL);
126 pjsip_endpt_create_response(NULL, NULL, -1, NULL, NULL);
127 pjsip_endpt_create_ack(NULL, NULL, NULL, NULL);
128 pjsip_endpt_create_cancel(NULL, NULL, NULL);
129 pjsip_get_request_addr(NULL, NULL);
130 pjsip_endpt_send_request_stateless(NULL, NULL, NULL, NULL);
131 pjsip_get_response_addr(NULL, NULL, NULL);
132 pjsip_endpt_send_response(NULL, NULL, NULL, NULL, NULL);
133 pjsip_endpt_respond_stateless(NULL, NULL, -1, NULL, NULL, NULL);
134#endif
135
136#ifdef HAS_PJSIP_UDP_TRANSPORT
137 pjsip_udp_transport_start(NULL, NULL, NULL, 1, NULL);
138#endif
139
140#ifdef HAS_PJSIP_TCP_TRANSPORT
141 pjsip_tcp_transport_start(NULL, NULL, 1, NULL);
142#endif
143
144#ifdef HAS_PJSIP_TRANSACTION
145 pjsip_tsx_layer_init_module(NULL);
146
147 pjsip_tsx_layer_destroy();
148 pjsip_tsx_create_uac(NULL, NULL, NULL);
149 pjsip_tsx_create_uas(NULL, NULL, NULL);
150 pjsip_tsx_recv_msg(NULL, NULL);
151 pjsip_tsx_send_msg(NULL, NULL);
152 pjsip_tsx_terminate(NULL, 200);
153
154 pjsip_endpt_send_request(NULL, NULL, -1, NULL, NULL);
155 pjsip_endpt_respond(NULL, NULL, NULL, -1, NULL, NULL, NULL, NULL);
156#endif
157
158#ifdef HAS_PJMEDIA_SDP
159 pjmedia_sdp_parse(NULL, NULL, 1024, NULL);
160 pjmedia_sdp_print(NULL, NULL, 1024);
161 pjmedia_sdp_validate(NULL);
162 pjmedia_sdp_session_clone(NULL, NULL);
163 pjmedia_sdp_session_cmp(NULL, NULL, 0);
164 pjmedia_sdp_attr_to_rtpmap(NULL, NULL, NULL);
165 pjmedia_sdp_attr_get_fmtp(NULL, NULL);
166 pjmedia_sdp_attr_get_rtcp(NULL, NULL);
167 pjmedia_sdp_conn_clone(NULL, NULL);
168 pjmedia_sdp_media_clone(NULL, NULL);
169 pjmedia_sdp_media_find_attr(NULL, NULL, NULL);
170#endif
171
172#ifdef HAS_PJMEDIA_SDP_NEGOTIATOR
173 pjmedia_sdp_neg_create_w_local_offer(NULL, NULL, NULL);
174 pjmedia_sdp_neg_create_w_remote_offer(NULL, NULL, NULL, NULL);
175 pjmedia_sdp_neg_get_state(NULL);
176 pjmedia_sdp_neg_negotiate(NULL, NULL, PJ_FALSE);
177#endif
178
179#ifdef HAS_PJSIP_UA_LAYER
180 pjsip_ua_init_module(NULL, NULL);
181 pjsip_ua_destroy();
182 pjsip_dlg_create_uac(NULL, NULL, NULL, NULL, NULL, NULL);
183 pjsip_dlg_create_uas(NULL, NULL, NULL, NULL);
184 pjsip_dlg_terminate(NULL);
185 pjsip_dlg_set_route_set(NULL, NULL);
186 pjsip_dlg_create_request(NULL, NULL, -1, NULL);
187 pjsip_dlg_send_request(NULL, NULL, -1, NULL);
188 pjsip_dlg_create_response(NULL, NULL, -1, NULL, NULL);
189 pjsip_dlg_modify_response(NULL, NULL, -1, NULL);
190 pjsip_dlg_send_response(NULL, NULL, NULL);
191 pjsip_dlg_respond(NULL, NULL, -1, NULL, NULL, NULL);
192#endif
193
194#ifdef HAS_PJSIP_INV_SESSION
195 pjsip_inv_usage_init(NULL, NULL);
196 pjsip_inv_create_uac(NULL, NULL, 0, NULL);
197 pjsip_inv_verify_request(NULL, NULL, NULL, NULL, NULL, NULL);
198 pjsip_inv_create_uas(NULL, NULL, NULL, 0, NULL);
199 pjsip_inv_terminate(NULL, 200, PJ_FALSE);
200 pjsip_inv_invite(NULL, NULL);
201 pjsip_inv_initial_answer(NULL, NULL, 200, NULL, NULL, NULL);
202 pjsip_inv_answer(NULL, 200, NULL, NULL, NULL);
203 pjsip_inv_end_session(NULL, 200, NULL, NULL);
204 pjsip_inv_reinvite(NULL, NULL, NULL, NULL);
205 pjsip_inv_update(NULL, NULL, NULL, NULL);
206 pjsip_inv_send_msg(NULL, NULL);
207 pjsip_dlg_get_inv_session(NULL);
208 //pjsip_tsx_get_inv_session(NULL);
209 pjsip_inv_state_name(PJSIP_INV_STATE_NULL);
210#endif
211
212#ifdef HAS_PJSIP_REGC
213 //pjsip_regc_get_module();
214 pjsip_regc_create(NULL, NULL, NULL, NULL);
215 pjsip_regc_destroy(NULL);
216 pjsip_regc_get_info(NULL, NULL);
217 pjsip_regc_get_pool(NULL);
218 pjsip_regc_init(NULL, NULL, NULL, NULL, 0, NULL, 600);
219 pjsip_regc_set_credentials(NULL, 1, NULL);
220 pjsip_regc_set_route_set(NULL, NULL);
221 pjsip_regc_register(NULL, PJ_TRUE, NULL);
222 pjsip_regc_unregister(NULL, NULL);
223 pjsip_regc_update_contact(NULL, 10, NULL);
224 pjsip_regc_update_expires(NULL, 600);
225 pjsip_regc_send(NULL, NULL);
226#endif
227
228#ifdef HAS_PJSIP_EVENT_FRAMEWORK
229 pjsip_evsub_init_module(NULL);
230 pjsip_evsub_instance();
231 pjsip_evsub_register_pkg(NULL, NULL, 30, 10, NULL);
232 pjsip_evsub_create_uac(NULL, NULL, NULL, 10, NULL);
233 pjsip_evsub_create_uas(NULL, NULL, NULL, 10, NULL);
234 pjsip_evsub_terminate(NULL, PJ_FALSE);
235 pjsip_evsub_get_state(NULL);
236 pjsip_evsub_get_state_name(NULL);
237 pjsip_evsub_initiate(NULL, NULL, -1, NULL);
238 pjsip_evsub_accept(NULL, NULL, 200, NULL);
239 pjsip_evsub_notify(NULL, PJSIP_EVSUB_STATE_ACTIVE, NULL, NULL, NULL);
240 pjsip_evsub_current_notify(NULL, NULL);
241 pjsip_evsub_send_request(NULL, NULL);
242 pjsip_tsx_get_evsub(NULL);
243 pjsip_evsub_set_mod_data(NULL, 1, NULL);
244 pjsip_evsub_get_mod_data(NULL, 1);
245#endif
246
247#ifdef HAS_PJSIP_CALL_TRANSFER
248 pjsip_xfer_init_module(NULL);
249 pjsip_xfer_create_uac(NULL, NULL, NULL);
250 pjsip_xfer_create_uas(NULL, NULL, NULL, NULL);
251 pjsip_xfer_initiate(NULL, NULL, NULL);
252 pjsip_xfer_accept(NULL, NULL, 200, NULL);
253 pjsip_xfer_notify(NULL, PJSIP_EVSUB_STATE_ACTIVE, 200, NULL, NULL);
254 pjsip_xfer_current_notify(NULL, NULL);
255 pjsip_xfer_send_request(NULL, NULL);
256#endif
257
258#ifdef HAS_PJSIP_PRESENCE
259 pjsip_pres_init_module(NULL, NULL);
260 pjsip_pres_instance();
261 pjsip_pres_create_uac(NULL, NULL, NULL);
262 pjsip_pres_create_uas(NULL, NULL, NULL, NULL);
263 pjsip_pres_terminate(NULL, PJ_FALSE);
264 pjsip_pres_initiate(NULL, 100, NULL);
265 pjsip_pres_accept(NULL, NULL, 200, NULL);
266 pjsip_pres_notify(NULL, PJSIP_EVSUB_STATE_ACTIVE, NULL, NULL, NULL);
267 pjsip_pres_current_notify(NULL, NULL);
268 pjsip_pres_send_request(NULL, NULL);
269 pjsip_pres_get_status(NULL, NULL);
270 pjsip_pres_set_status(NULL, NULL);
271#endif
272
273#ifdef HAS_PJSIP_IS_COMPOSING
274 pjsip_iscomposing_create_xml(NULL, PJ_TRUE, NULL, NULL, 0);
275 pjsip_iscomposing_create_body(NULL, PJ_TRUE, NULL, NULL, 0);
276 pjsip_iscomposing_parse(NULL, NULL, 0, NULL, NULL, NULL, NULL);
277#endif
278
279#ifdef HAS_PJMEDIA
280 pjmedia_endpt_create(NULL, NULL, 1, NULL);
281 pjmedia_endpt_destroy(NULL);
282 pjmedia_endpt_create_sdp(NULL, NULL, 1, NULL, NULL);
283#endif
284
285#ifdef HAS_PJMEDIA_SND_DEV
286 pjmedia_snd_init(NULL);
287 pjmedia_snd_get_dev_count();
288 pjmedia_snd_get_dev_info(0);
289 pjmedia_snd_open(-1, -1, 8000, 1, 80, 16, NULL, NULL, NULL, NULL);
290 pjmedia_snd_open_rec(-1, 8000, 1, 160, 16, NULL, NULL, NULL);
291 pjmedia_snd_open_player(-1, 8000, 1, 160, 16, NULL, NULL, NULL);
292 pjmedia_snd_stream_start(NULL);
293 pjmedia_snd_stream_stop(NULL);
294 pjmedia_snd_stream_close(NULL);
295 pjmedia_snd_deinit();
296#endif
297
298#ifdef HAS_PJMEDIA_SND_PORT
299 pjmedia_snd_port_create(NULL, -1, -1, 8000, 1, 180, 16, 0, NULL);
300 pjmedia_snd_port_create_rec(NULL, -1, 8000, 1, 160, 16, 0, NULL);
301 pjmedia_snd_port_create_player(NULL, -1, 8000, 1, 160, 16, 0, NULL);
302 pjmedia_snd_port_destroy(NULL);
303 pjmedia_snd_port_get_snd_stream(NULL);
304 pjmedia_snd_port_connect(NULL, NULL);
305 pjmedia_snd_port_get_port(NULL);
306 pjmedia_snd_port_disconnect(NULL);
307#endif
308
309#ifdef HAS_PJMEDIA_RESAMPLE
310 pjmedia_resample_create(NULL, PJ_TRUE, PJ_TRUE, 0, 0, 0, NULL);
311 pjmedia_resample_run(NULL, NULL, NULL);
312#endif
313
314#ifdef HAS_PJMEDIA_SILENCE_DET
315 pjmedia_silence_det_create(NULL, 8000, 80, NULL);
316 pjmedia_silence_det_detect(NULL, NULL, 0, NULL);
317 pjmedia_silence_det_apply(NULL, 0);
318#endif
319
320#ifdef HAS_PJMEDIA_PLC
321 pjmedia_plc_create(NULL, 8000, 80, 0, NULL);
322 pjmedia_plc_save(NULL, NULL);
323 pjmedia_plc_generate(NULL, NULL);
324#endif
325
326#ifdef HAS_PJMEDIA_CONFERENCE
327 pjmedia_conf_create(NULL, 10, 8000, 1, 160, 16, 0, NULL);
328 pjmedia_conf_destroy(NULL);
329 pjmedia_conf_get_master_port(NULL);
330 pjmedia_conf_add_port(NULL, NULL, NULL, NULL, NULL);
331 pjmedia_conf_configure_port(NULL, 1, 0, 0);
332 pjmedia_conf_connect_port(NULL, 0, 0, 0);
333 pjmedia_conf_disconnect_port(NULL, 0, 0);
334 pjmedia_conf_remove_port(NULL, 0);
335 pjmedia_conf_enum_ports(NULL, NULL, NULL);
336 pjmedia_conf_get_port_info(NULL, 0, NULL);
337 pjmedia_conf_get_ports_info(NULL, NULL, NULL);
338 pjmedia_conf_get_signal_level(NULL, 0, NULL, NULL);
339 pjmedia_conf_adjust_rx_level(NULL, 0, 0);
340 pjmedia_conf_adjust_tx_level(NULL, 0, 0);
341#endif
342
343#ifdef HAS_PJMEDIA_MASTER_PORT
344 pjmedia_master_port_create(NULL, NULL, NULL, 0, NULL);
345 pjmedia_master_port_start(NULL);
346 pjmedia_master_port_stop(NULL);
347 pjmedia_master_port_set_uport(NULL, NULL);
348 pjmedia_master_port_get_uport(NULL);
349 pjmedia_master_port_set_dport(NULL, NULL);
350 pjmedia_master_port_get_dport(NULL);
351 pjmedia_master_port_destroy(NULL, PJ_FALSE);
352#endif
353
354#ifdef HAS_PJMEDIA_RTP
355 pjmedia_rtp_session_init(NULL, 0, 0);
356 pjmedia_rtp_encode_rtp(NULL, 0, 0, 0, 0, NULL, NULL);
357 pjmedia_rtp_decode_rtp(NULL, NULL, 0, NULL, NULL, NULL);
358 pjmedia_rtp_session_update(NULL, NULL, NULL);
359#endif
360
361#ifdef HAS_PJMEDIA_RTCP
362 pjmedia_rtcp_init(NULL, NULL, 0, 0, 0);
363 pjmedia_rtcp_get_ntp_time(NULL, NULL);
364 pjmedia_rtcp_fini(NULL);
365 pjmedia_rtcp_rx_rtp(NULL, 0, 0, 0);
366 pjmedia_rtcp_tx_rtp(NULL, 0);
367 pjmedia_rtcp_rx_rtcp(NULL, NULL, 0);
368 pjmedia_rtcp_build_rtcp(NULL, NULL, NULL);
369#endif
370
371#ifdef HAS_PJMEDIA_JBUF
372 pjmedia_jbuf_create(NULL, NULL, 0, 0, 0, NULL);
373 pjmedia_jbuf_set_fixed(NULL, 0);
374 pjmedia_jbuf_set_adaptive(NULL, 0, 0, 0);
375 pjmedia_jbuf_destroy(NULL);
376 pjmedia_jbuf_put_frame(NULL, NULL, 0, 0);
377 pjmedia_jbuf_get_frame(NULL, NULL, NULL);
378#endif
379
380#ifdef HAS_PJMEDIA_STREAM
381 pjmedia_stream_create(NULL, NULL, NULL, NULL, NULL, NULL);
382 pjmedia_stream_destroy(NULL);
383 pjmedia_stream_get_port(NULL, NULL);
384 pjmedia_stream_get_transport(NULL);
385 pjmedia_stream_start(NULL);
386 pjmedia_stream_get_stat(NULL, NULL);
387 pjmedia_stream_pause(NULL, PJMEDIA_DIR_ENCODING);
388 pjmedia_stream_resume(NULL, PJMEDIA_DIR_ENCODING);
389 pjmedia_stream_dial_dtmf(NULL, NULL);
390 pjmedia_stream_check_dtmf(NULL);
391 pjmedia_stream_get_dtmf(NULL, NULL, NULL);
392#endif
393
394#ifdef HAS_PJMEDIA_UDP_TRANSPORT
395 pjmedia_transport_udp_create(NULL, NULL, 0, 0, NULL);
396 pjmedia_transport_udp_close(NULL);
397#endif
398
399#ifdef HAS_PJMEDIA_FILE_PLAYER
400 pjmedia_wav_player_port_create(NULL, NULL, 0, 0, 0, NULL);
401 pjmedia_wav_player_port_set_pos(NULL, 0);
402 pjmedia_wav_player_port_get_pos(NULL);
403 pjmedia_wav_player_set_eof_cb(NULL, NULL, NULL);
404#endif
405
406#ifdef HAS_PJMEDIA_FILE_CAPTURE
407 pjmedia_wav_writer_port_create(NULL, NULL, 8000, 1, 80, 16, 0, 0, NULL);
408 pjmedia_wav_writer_port_get_pos(NULL);
409 pjmedia_wav_writer_port_set_cb(NULL, 0, NULL, NULL);
410#endif
411
412#ifdef HAS_PJMEDIA_MEM_PLAYER
413 pjmedia_mem_player_create(NULL, NULL, 1000, 8000, 1, 80, 16, 0, NULL);
414#endif
415
416#ifdef HAS_PJMEDIA_MEM_CAPTURE
417 pjmedia_mem_capture_create(NULL, NULL, 1000, 8000, 1, 80, 16, 0, NULL);
418#endif
419
420#ifdef HAS_PJMEDIA_G711_CODEC
421 pjmedia_codec_g711_init(NULL);
422 pjmedia_codec_g711_deinit();
423#endif
424
425#ifdef HAS_PJMEDIA_GSM_CODEC
426 pjmedia_codec_gsm_init(NULL);
427 pjmedia_codec_gsm_deinit();
428#endif
429
430#ifdef HAS_PJMEDIA_SPEEX_CODEC
431 pjmedia_codec_speex_init(NULL, 0, 0, 0);
432 pjmedia_codec_speex_deinit();
433#endif
434
435 return 0;
436}
437
438
439int main()
440{
441 return dummy_function();
442}
443