diff options
author | Benny Prijono <bennylp@teluu.com> | 2011-10-09 10:58:38 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2011-10-09 10:58:38 +0000 |
commit | ccd701371c5d44869c3f66b1426d335a143b75ff (patch) | |
tree | a7ca244da3b098f69e771af679ddbdf19504df0b /pjsip-apps/src/pjsua | |
parent | a1a6b84641a8f18d82106298b664e4654b1d0fab (diff) |
Fixed #1383: Update the transport adapter sample in pjsua
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@3804 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps/src/pjsua')
-rw-r--r-- | pjsip-apps/src/pjsua/pjsua_app.c | 85 |
1 files changed, 36 insertions, 49 deletions
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c index 1745ed8f..81e6d57f 100644 --- a/pjsip-apps/src/pjsua/pjsua_app.c +++ b/pjsip-apps/src/pjsua/pjsua_app.c @@ -141,9 +141,6 @@ static char some_buf[1024 * 3]; #ifdef STEREO_DEMO static void stereo_demo(); #endif -#ifdef TRANSPORT_ADAPTER_SAMPLE -static pj_status_t transport_adapter_sample(void); -#endif static pj_status_t create_ipv6_media_transports(void); pj_status_t app_destroy(void); @@ -3051,6 +3048,35 @@ static void on_ice_transport_error(int index, pj_ice_strans_op op, "ICE keep alive failure for transport %d", index)); } +#ifdef TRANSPORT_ADAPTER_SAMPLE +/* + * This callback is called when media transport needs to be created. + */ +static pjmedia_transport* on_create_media_transport(pjsua_call_id call_id, + unsigned media_idx, + pjmedia_transport *base_tp, + unsigned flags) +{ + pjmedia_transport *adapter; + pj_status_t status; + + /* Create the adapter */ + status = pjmedia_tp_adapter_create(pjsua_get_pjmedia_endpt(), + NULL, base_tp, + (flags & PJSUA_MED_TP_CLOSE_MEMBER), + &adapter); + if (status != PJ_SUCCESS) { + PJ_PERROR(1,(THIS_FILE, status, "Error creating adapter")); + return NULL; + } + + PJ_LOG(3,(THIS_FILE, "Media transport is created for call %d media %d", + call_id, media_idx)); + + return adapter; +} +#endif + /* * Print buddy list. */ @@ -4651,6 +4677,9 @@ pj_status_t app_init(int argc, char *argv[]) app_config.cfg.cb.on_mwi_info = &on_mwi_info; app_config.cfg.cb.on_transport_state = &on_transport_state; app_config.cfg.cb.on_ice_transport_error = &on_ice_transport_error; +#ifdef TRANSPORT_ADAPTER_SAMPLE + app_config.cfg.cb.on_create_media_transport = &on_create_media_transport; +#endif app_config.log_cfg.cb = log_cb; /* Set sound device latency */ @@ -4929,6 +4958,9 @@ pj_status_t app_init(int argc, char *argv[]) /* Add accounts */ for (i=0; i<app_config.acc_cnt; ++i) { + app_config.acc_cfg[i].reg_retry_interval = 300; + app_config.acc_cfg[i].reg_first_retry_interval = 60; + status = pjsua_acc_add(&app_config.acc_cfg[i], PJ_TRUE, NULL); if (status != PJ_SUCCESS) goto on_error; @@ -4954,15 +4986,11 @@ pj_status_t app_init(int argc, char *argv[]) } /* Add RTP transports */ -#ifdef TRANSPORT_ADAPTER_SAMPLE - status = transport_adapter_sample(); - -#else if (app_config.ipv6) status = create_ipv6_media_transports(); else status = pjsua_media_transports_create(&app_config.rtp_cfg); -#endif + if (status != PJ_SUCCESS) goto on_error; @@ -5171,47 +5199,6 @@ static void stereo_demo() } #endif -#ifdef TRANSPORT_ADAPTER_SAMPLE -static pj_status_t create_transport_adapter(pjmedia_endpt *med_endpt, int port, - pjmedia_transport **p_tp) -{ - pjmedia_transport *udp; - pj_status_t status; - - /* Create the UDP media transport */ - status = pjmedia_transport_udp_create(med_endpt, NULL, port, 0, &udp); - if (status != PJ_SUCCESS) - return status; - - /* Create the adapter */ - status = pjmedia_tp_adapter_create(med_endpt, NULL, udp, p_tp); - if (status != PJ_SUCCESS) { - pjmedia_transport_close(udp); - return status; - } - - return PJ_SUCCESS; -} - -static pj_status_t transport_adapter_sample(void) -{ - pjsua_media_transport tp[PJSUA_MAX_CALLS]; - pj_status_t status; - int port = 7000; - unsigned i; - - for (i=0; i<app_config.cfg.max_calls; ++i) { - status = create_transport_adapter(pjsua_get_pjmedia_endpt(), - port + i*10, - &tp[i].transport); - if (status != PJ_SUCCESS) - return status; - } - - return pjsua_media_transports_attach(tp, i, PJ_TRUE); -} -#endif - static pj_status_t create_ipv6_media_transports(void) { pjsua_media_transport tp[PJSUA_MAX_CALLS]; |