diff options
author | Liong Sauw Ming <ming@teluu.com> | 2011-10-24 09:28:13 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2011-10-24 09:28:13 +0000 |
commit | 2068f13bc42cf3a47374aa2765f82724a5782028 (patch) | |
tree | 29fbeaa152ab51e59b650c0d7cd83a38111e1ecc /pjsip-apps/src/pjsua/pjsua_app.c | |
parent | 1c72a42676e7aa0c2ae0734549050f738f3bdf02 (diff) |
Re #1395: Backport of PJSIP 1.x branch into PJSIP 2.0 trunk
* Backport of r3557:r3832
TODO: ticket #1268 (Option for automatic/manual sending of RTCP SDES/BYE for the stream) for video stream.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3841 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps/src/pjsua/pjsua_app.c')
-rw-r--r-- | pjsip-apps/src/pjsua/pjsua_app.c | 88 |
1 files changed, 37 insertions, 51 deletions
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c index 25cd8879..1f8e4cc9 100644 --- a/pjsip-apps/src/pjsua/pjsua_app.c +++ b/pjsip-apps/src/pjsua/pjsua_app.c @@ -148,9 +148,6 @@ static char some_buf[SOME_BUF_SIZE]; #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); @@ -911,8 +908,8 @@ static pj_status_t parse_args(int argc, char *argv[], break; case OPT_100REL: /** 100rel */ - cur_acc->require_100rel = PJ_TRUE; - cfg->cfg.require_100rel = PJ_TRUE; + cur_acc->require_100rel = PJSUA_100REL_MANDATORY; + cfg->cfg.require_100rel = PJSUA_100REL_MANDATORY; break; case OPT_TIMER: /** session timer */ @@ -3221,6 +3218,35 @@ static void on_call_media_event(pjsua_call_id call_id, #endif } +#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. */ @@ -5210,6 +5236,9 @@ pj_status_t app_init(int argc, char *argv[]) app_config.cfg.cb.on_ice_transport_error = &on_ice_transport_error; app_config.cfg.cb.on_snd_dev_operation = &on_snd_dev_operation; app_config.cfg.cb.on_call_media_event = &on_call_media_event; +#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 */ @@ -5489,6 +5518,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].rtp_cfg = app_config.rtp_cfg; + 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; @@ -5521,17 +5553,12 @@ 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(); #if DISABLED_FOR_TICKET_1185 else status = pjsua_media_transports_create(&app_config.rtp_cfg); #endif -#endif if (status != PJ_SUCCESS) goto on_error; @@ -5752,47 +5779,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]; |