From 2df60064afb5cb53076764d39badfd64939833b1 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Tue, 4 Jul 2006 23:48:51 +0000 Subject: Added script, source file, and makefile to calculate PJSIP/PJMEDIA footprint git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@585 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip-apps/src/samples/footprint.c | 443 +++++++++++++++++++++++++++++++++++++ 1 file changed, 443 insertions(+) create mode 100644 pjsip-apps/src/samples/footprint.c (limited to 'pjsip-apps/src/samples/footprint.c') diff --git a/pjsip-apps/src/samples/footprint.c b/pjsip-apps/src/samples/footprint.c new file mode 100644 index 00000000..9926d6ab --- /dev/null +++ b/pjsip-apps/src/samples/footprint.c @@ -0,0 +1,443 @@ +/* $Id$ */ +/* + * Copyright (C) 2003-2006 Benny Prijono + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/** + * The purpose of this file is to show the typical footprint of + * the application when various PJSIP/PJMEDIA components are used. + * + * This file will not be build as samples, but instead it is build + * by get-footprint.py Python script in pjsip-apps/build directory. + */ + +#include +#include +#include +#include +#include +#include +#include + + +/* All flags: */ +#if 0 +#define HAS_PJLIB_STUN +#define HAS_PJLIB_GETOPT +#define HAS_PJLIB_XML + +#define HAS_PJSIP_CORE +#define HAS_PJSIP_UDP_TRANSPORT +#define HAS_PJSIP_TCP_TRANSPORT +#define HAS_PJSIP_TRANSACTION +#define HAS_PJSIP_UA_LAYER +#define HAS_PJMEDIA_SDP +#define HAS_PJMEDIA_SDP_NEGOTIATOR +#define HAS_PJSIP_INV_SESSION +#define HAS_PJSIP_REGC +#define HAS_PJSIP_EVENT_FRAMEWORK +#define HAS_PJSIP_CALL_TRANSFER +#define HAS_PJSIP_PRESENCE +#define HAS_PJSIP_IS_COMPOSING + +#define HAS_PJMEDIA +#define HAS_PJMEDIA_SND_DEV +#define HAS_PJMEDIA_SND_PORT +#define HAS_PJMEDIA_RESAMPLE +#define HAS_PJMEDIA_SILENCE_DET +#define HAS_PJMEDIA_PLC +#define HAS_PJMEDIA_CONFERENCE +#define HAS_PJMEDIA_MASTER_PORT +#define HAS_PJMEDIA_RTP +#define HAS_PJMEDIA_RTCP +#define HAS_PJMEDIA_JBUF +#define HAS_PJMEDIA_STREAM +#define HAS_PJMEDIA_UDP_TRANSPORT +#define HAS_PJMEDIA_FILE_PLAYER +#define HAS_PJMEDIA_FILE_CAPTURE +#define HAS_PJMEDIA_MEM_PLAYER +#define HAS_PJMEDIA_MEM_CAPTURE + +#define HAS_PJMEDIA_G711_CODEC +#define HAS_PJMEDIA_GSM_CODEC +#define HAS_PJMEDIA_SPEEX_CODEC +#endif + + +int dummy_function() +{ + pj_caching_pool cp; + + pj_init(); + pj_caching_pool_init(&cp, NULL, 0); + pj_array_erase(NULL, 0, 0, 0); + pj_create_unique_string(NULL, NULL); + pj_hash_create(NULL, 0); + pj_hash_get(NULL, NULL, 0, NULL); + pj_hash_set(NULL, NULL, NULL, 0, 0, NULL); + pj_ioqueue_create(NULL, 0, NULL); + pj_ioqueue_register_sock(NULL, NULL, 0, NULL, NULL, NULL); + pj_pool_alloc(NULL, 0); + pj_timer_heap_create(NULL, 0, NULL); + +#ifdef HAS_PJLIB_STUN + pj_stun_get_mapped_addr(&cp.factory, 0, NULL, NULL, 80, NULL, 80, NULL); +#endif + +#ifdef HAS_PJLIB_GETOPT + pj_getopt_long(0, NULL, NULL, NULL, NULL); +#endif + +#ifdef HAS_PJLIB_XML + pj_xml_parse(NULL, NULL, 100); + pj_xml_print(NULL, NULL, 10, PJ_FALSE); + pj_xml_clone(NULL, NULL); + pj_xml_node_new(NULL, NULL); + pj_xml_attr_new(NULL, NULL, NULL); + pj_xml_add_node(NULL, NULL); + pj_xml_add_attr(NULL, NULL); + pj_xml_find_node(NULL, NULL); + pj_xml_find_next_node(NULL, NULL, NULL); + pj_xml_find_attr(NULL, NULL, NULL); + pj_xml_find(NULL, NULL, NULL, NULL); +#endif + +#ifdef HAS_PJSIP_CORE + pjsip_endpt_create(NULL, NULL, NULL); + + pjsip_endpt_create_request(NULL, NULL, NULL, NULL, NULL, NULL, NULL, + -1, NULL, NULL); + pjsip_endpt_create_request_from_hdr(NULL, NULL, NULL, NULL, NULL, NULL, + NULL, -1, NULL, NULL); + pjsip_endpt_create_response(NULL, NULL, -1, NULL, NULL); + pjsip_endpt_create_ack(NULL, NULL, NULL, NULL); + pjsip_endpt_create_cancel(NULL, NULL, NULL); + pjsip_get_request_addr(NULL, NULL); + pjsip_endpt_send_request_stateless(NULL, NULL, NULL, NULL); + pjsip_get_response_addr(NULL, NULL, NULL); + pjsip_endpt_send_response(NULL, NULL, NULL, NULL, NULL); + pjsip_endpt_respond_stateless(NULL, NULL, -1, NULL, NULL, NULL); +#endif + +#ifdef HAS_PJSIP_UDP_TRANSPORT + pjsip_udp_transport_start(NULL, NULL, NULL, 1, NULL); +#endif + +#ifdef HAS_PJSIP_TCP_TRANSPORT + pjsip_tcp_transport_start(NULL, NULL, 1, NULL); +#endif + +#ifdef HAS_PJSIP_TRANSACTION + pjsip_tsx_layer_init_module(NULL); + + pjsip_tsx_layer_destroy(); + pjsip_tsx_create_uac(NULL, NULL, NULL); + pjsip_tsx_create_uas(NULL, NULL, NULL); + pjsip_tsx_recv_msg(NULL, NULL); + pjsip_tsx_send_msg(NULL, NULL); + pjsip_tsx_terminate(NULL, 200); + + pjsip_endpt_send_request(NULL, NULL, -1, NULL, NULL); + pjsip_endpt_respond(NULL, NULL, NULL, -1, NULL, NULL, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_SDP + pjmedia_sdp_parse(NULL, NULL, 1024, NULL); + pjmedia_sdp_print(NULL, NULL, 1024); + pjmedia_sdp_validate(NULL); + pjmedia_sdp_session_clone(NULL, NULL); + pjmedia_sdp_session_cmp(NULL, NULL, 0); + pjmedia_sdp_attr_to_rtpmap(NULL, NULL, NULL); + pjmedia_sdp_attr_get_fmtp(NULL, NULL); + pjmedia_sdp_attr_get_rtcp(NULL, NULL); + pjmedia_sdp_conn_clone(NULL, NULL); + pjmedia_sdp_media_clone(NULL, NULL); + pjmedia_sdp_media_find_attr(NULL, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_SDP_NEGOTIATOR + pjmedia_sdp_neg_create_w_local_offer(NULL, NULL, NULL); + pjmedia_sdp_neg_create_w_remote_offer(NULL, NULL, NULL, NULL); + pjmedia_sdp_neg_get_state(NULL); + pjmedia_sdp_neg_negotiate(NULL, NULL, PJ_FALSE); +#endif + +#ifdef HAS_PJSIP_UA_LAYER + pjsip_ua_init_module(NULL, NULL); + pjsip_ua_destroy(); + pjsip_dlg_create_uac(NULL, NULL, NULL, NULL, NULL, NULL); + pjsip_dlg_create_uas(NULL, NULL, NULL, NULL); + pjsip_dlg_terminate(NULL); + pjsip_dlg_set_route_set(NULL, NULL); + pjsip_dlg_create_request(NULL, NULL, -1, NULL); + pjsip_dlg_send_request(NULL, NULL, -1, NULL); + pjsip_dlg_create_response(NULL, NULL, -1, NULL, NULL); + pjsip_dlg_modify_response(NULL, NULL, -1, NULL); + pjsip_dlg_send_response(NULL, NULL, NULL); + pjsip_dlg_respond(NULL, NULL, -1, NULL, NULL, NULL); +#endif + +#ifdef HAS_PJSIP_INV_SESSION + pjsip_inv_usage_init(NULL, NULL); + pjsip_inv_create_uac(NULL, NULL, 0, NULL); + pjsip_inv_verify_request(NULL, NULL, NULL, NULL, NULL, NULL); + pjsip_inv_create_uas(NULL, NULL, NULL, 0, NULL); + pjsip_inv_terminate(NULL, 200, PJ_FALSE); + pjsip_inv_invite(NULL, NULL); + pjsip_inv_initial_answer(NULL, NULL, 200, NULL, NULL, NULL); + pjsip_inv_answer(NULL, 200, NULL, NULL, NULL); + pjsip_inv_end_session(NULL, 200, NULL, NULL); + pjsip_inv_reinvite(NULL, NULL, NULL, NULL); + pjsip_inv_update(NULL, NULL, NULL, NULL); + pjsip_inv_send_msg(NULL, NULL); + pjsip_dlg_get_inv_session(NULL); + //pjsip_tsx_get_inv_session(NULL); + pjsip_inv_state_name(PJSIP_INV_STATE_NULL); +#endif + +#ifdef HAS_PJSIP_REGC + //pjsip_regc_get_module(); + pjsip_regc_create(NULL, NULL, NULL, NULL); + pjsip_regc_destroy(NULL); + pjsip_regc_get_info(NULL, NULL); + pjsip_regc_get_pool(NULL); + pjsip_regc_init(NULL, NULL, NULL, NULL, 0, NULL, 600); + pjsip_regc_set_credentials(NULL, 1, NULL); + pjsip_regc_set_route_set(NULL, NULL); + pjsip_regc_register(NULL, PJ_TRUE, NULL); + pjsip_regc_unregister(NULL, NULL); + pjsip_regc_update_contact(NULL, 10, NULL); + pjsip_regc_update_expires(NULL, 600); + pjsip_regc_send(NULL, NULL); +#endif + +#ifdef HAS_PJSIP_EVENT_FRAMEWORK + pjsip_evsub_init_module(NULL); + pjsip_evsub_instance(); + pjsip_evsub_register_pkg(NULL, NULL, 30, 10, NULL); + pjsip_evsub_create_uac(NULL, NULL, NULL, 10, NULL); + pjsip_evsub_create_uas(NULL, NULL, NULL, 10, NULL); + pjsip_evsub_terminate(NULL, PJ_FALSE); + pjsip_evsub_get_state(NULL); + pjsip_evsub_get_state_name(NULL); + pjsip_evsub_initiate(NULL, NULL, -1, NULL); + pjsip_evsub_accept(NULL, NULL, 200, NULL); + pjsip_evsub_notify(NULL, PJSIP_EVSUB_STATE_ACTIVE, NULL, NULL, NULL); + pjsip_evsub_current_notify(NULL, NULL); + pjsip_evsub_send_request(NULL, NULL); + pjsip_tsx_get_evsub(NULL); + pjsip_evsub_set_mod_data(NULL, 1, NULL); + pjsip_evsub_get_mod_data(NULL, 1); +#endif + +#ifdef HAS_PJSIP_CALL_TRANSFER + pjsip_xfer_init_module(NULL); + pjsip_xfer_create_uac(NULL, NULL, NULL); + pjsip_xfer_create_uas(NULL, NULL, NULL, NULL); + pjsip_xfer_initiate(NULL, NULL, NULL); + pjsip_xfer_accept(NULL, NULL, 200, NULL); + pjsip_xfer_notify(NULL, PJSIP_EVSUB_STATE_ACTIVE, 200, NULL, NULL); + pjsip_xfer_current_notify(NULL, NULL); + pjsip_xfer_send_request(NULL, NULL); +#endif + +#ifdef HAS_PJSIP_PRESENCE + pjsip_pres_init_module(NULL, NULL); + pjsip_pres_instance(); + pjsip_pres_create_uac(NULL, NULL, NULL); + pjsip_pres_create_uas(NULL, NULL, NULL, NULL); + pjsip_pres_terminate(NULL, PJ_FALSE); + pjsip_pres_initiate(NULL, 100, NULL); + pjsip_pres_accept(NULL, NULL, 200, NULL); + pjsip_pres_notify(NULL, PJSIP_EVSUB_STATE_ACTIVE, NULL, NULL, NULL); + pjsip_pres_current_notify(NULL, NULL); + pjsip_pres_send_request(NULL, NULL); + pjsip_pres_get_status(NULL, NULL); + pjsip_pres_set_status(NULL, NULL); +#endif + +#ifdef HAS_PJSIP_IS_COMPOSING + pjsip_iscomposing_create_xml(NULL, PJ_TRUE, NULL, NULL, 0); + pjsip_iscomposing_create_body(NULL, PJ_TRUE, NULL, NULL, 0); + pjsip_iscomposing_parse(NULL, NULL, 0, NULL, NULL, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA + pjmedia_endpt_create(NULL, NULL, 1, NULL); + pjmedia_endpt_destroy(NULL); + pjmedia_endpt_create_sdp(NULL, NULL, 1, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_SND_DEV + pjmedia_snd_init(NULL); + pjmedia_snd_get_dev_count(); + pjmedia_snd_get_dev_info(0); + pjmedia_snd_open(-1, -1, 8000, 1, 80, 16, NULL, NULL, NULL, NULL); + pjmedia_snd_open_rec(-1, 8000, 1, 160, 16, NULL, NULL, NULL); + pjmedia_snd_open_player(-1, 8000, 1, 160, 16, NULL, NULL, NULL); + pjmedia_snd_stream_start(NULL); + pjmedia_snd_stream_stop(NULL); + pjmedia_snd_stream_close(NULL); + pjmedia_snd_deinit(); +#endif + +#ifdef HAS_PJMEDIA_SND_PORT + pjmedia_snd_port_create(NULL, -1, -1, 8000, 1, 180, 16, 0, NULL); + pjmedia_snd_port_create_rec(NULL, -1, 8000, 1, 160, 16, 0, NULL); + pjmedia_snd_port_create_player(NULL, -1, 8000, 1, 160, 16, 0, NULL); + pjmedia_snd_port_destroy(NULL); + pjmedia_snd_port_get_snd_stream(NULL); + pjmedia_snd_port_connect(NULL, NULL); + pjmedia_snd_port_get_port(NULL); + pjmedia_snd_port_disconnect(NULL); +#endif + +#ifdef HAS_PJMEDIA_RESAMPLE + pjmedia_resample_create(NULL, PJ_TRUE, PJ_TRUE, 0, 0, 0, NULL); + pjmedia_resample_run(NULL, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_SILENCE_DET + pjmedia_silence_det_create(NULL, 8000, 80, NULL); + pjmedia_silence_det_detect(NULL, NULL, 0, NULL); + pjmedia_silence_det_apply(NULL, 0); +#endif + +#ifdef HAS_PJMEDIA_PLC + pjmedia_plc_create(NULL, 8000, 80, 0, NULL); + pjmedia_plc_save(NULL, NULL); + pjmedia_plc_generate(NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_CONFERENCE + pjmedia_conf_create(NULL, 10, 8000, 1, 160, 16, 0, NULL); + pjmedia_conf_destroy(NULL); + pjmedia_conf_get_master_port(NULL); + pjmedia_conf_add_port(NULL, NULL, NULL, NULL, NULL); + pjmedia_conf_configure_port(NULL, 1, 0, 0); + pjmedia_conf_connect_port(NULL, 0, 0, 0); + pjmedia_conf_disconnect_port(NULL, 0, 0); + pjmedia_conf_remove_port(NULL, 0); + pjmedia_conf_enum_ports(NULL, NULL, NULL); + pjmedia_conf_get_port_info(NULL, 0, NULL); + pjmedia_conf_get_ports_info(NULL, NULL, NULL); + pjmedia_conf_get_signal_level(NULL, 0, NULL, NULL); + pjmedia_conf_adjust_rx_level(NULL, 0, 0); + pjmedia_conf_adjust_tx_level(NULL, 0, 0); +#endif + +#ifdef HAS_PJMEDIA_MASTER_PORT + pjmedia_master_port_create(NULL, NULL, NULL, 0, NULL); + pjmedia_master_port_start(NULL); + pjmedia_master_port_stop(NULL); + pjmedia_master_port_set_uport(NULL, NULL); + pjmedia_master_port_get_uport(NULL); + pjmedia_master_port_set_dport(NULL, NULL); + pjmedia_master_port_get_dport(NULL); + pjmedia_master_port_destroy(NULL, PJ_FALSE); +#endif + +#ifdef HAS_PJMEDIA_RTP + pjmedia_rtp_session_init(NULL, 0, 0); + pjmedia_rtp_encode_rtp(NULL, 0, 0, 0, 0, NULL, NULL); + pjmedia_rtp_decode_rtp(NULL, NULL, 0, NULL, NULL, NULL); + pjmedia_rtp_session_update(NULL, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_RTCP + pjmedia_rtcp_init(NULL, NULL, 0, 0, 0); + pjmedia_rtcp_get_ntp_time(NULL, NULL); + pjmedia_rtcp_fini(NULL); + pjmedia_rtcp_rx_rtp(NULL, 0, 0, 0); + pjmedia_rtcp_tx_rtp(NULL, 0); + pjmedia_rtcp_rx_rtcp(NULL, NULL, 0); + pjmedia_rtcp_build_rtcp(NULL, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_JBUF + pjmedia_jbuf_create(NULL, NULL, 0, 0, 0, NULL); + pjmedia_jbuf_set_fixed(NULL, 0); + pjmedia_jbuf_set_adaptive(NULL, 0, 0, 0); + pjmedia_jbuf_destroy(NULL); + pjmedia_jbuf_put_frame(NULL, NULL, 0, 0); + pjmedia_jbuf_get_frame(NULL, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_STREAM + pjmedia_stream_create(NULL, NULL, NULL, NULL, NULL, NULL); + pjmedia_stream_destroy(NULL); + pjmedia_stream_get_port(NULL, NULL); + pjmedia_stream_get_transport(NULL); + pjmedia_stream_start(NULL); + pjmedia_stream_get_stat(NULL, NULL); + pjmedia_stream_pause(NULL, PJMEDIA_DIR_ENCODING); + pjmedia_stream_resume(NULL, PJMEDIA_DIR_ENCODING); + pjmedia_stream_dial_dtmf(NULL, NULL); + pjmedia_stream_check_dtmf(NULL); + pjmedia_stream_get_dtmf(NULL, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_UDP_TRANSPORT + pjmedia_transport_udp_create(NULL, NULL, 0, 0, NULL); + pjmedia_transport_udp_close(NULL); +#endif + +#ifdef HAS_PJMEDIA_FILE_PLAYER + pjmedia_wav_player_port_create(NULL, NULL, 0, 0, 0, NULL); + pjmedia_wav_player_port_set_pos(NULL, 0); + pjmedia_wav_player_port_get_pos(NULL); + pjmedia_wav_player_set_eof_cb(NULL, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_FILE_CAPTURE + pjmedia_wav_writer_port_create(NULL, NULL, 8000, 1, 80, 16, 0, 0, NULL); + pjmedia_wav_writer_port_get_pos(NULL); + pjmedia_wav_writer_port_set_cb(NULL, 0, NULL, NULL); +#endif + +#ifdef HAS_PJMEDIA_MEM_PLAYER + pjmedia_mem_player_create(NULL, NULL, 1000, 8000, 1, 80, 16, 0, NULL); +#endif + +#ifdef HAS_PJMEDIA_MEM_CAPTURE + pjmedia_mem_capture_create(NULL, NULL, 1000, 8000, 1, 80, 16, 0, NULL); +#endif + +#ifdef HAS_PJMEDIA_G711_CODEC + pjmedia_codec_g711_init(NULL); + pjmedia_codec_g711_deinit(); +#endif + +#ifdef HAS_PJMEDIA_GSM_CODEC + pjmedia_codec_gsm_init(NULL); + pjmedia_codec_gsm_deinit(); +#endif + +#ifdef HAS_PJMEDIA_SPEEX_CODEC + pjmedia_codec_speex_init(NULL, 0, 0, 0); + pjmedia_codec_speex_deinit(); +#endif + + return 0; +} + + +int main() +{ + return dummy_function(); +} + -- cgit v1.2.3