Ignore:
Timestamp:
Apr 14, 2008 1:48:39 AM (16 years ago)
Author:
bennylp
Message:

More ticket #485: huge changeset to integrate TURN with ICE and PJSUA-LIB/pjsua. Still experimental

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/ice-turn07/pjsip/src/pjsua-lib/pjsua_media.c

    r1898 r1926  
    625625    unsigned i; 
    626626    pj_sockaddr_in addr; 
     627    pj_ice_strans_cfg ice_cfg; 
    627628    pj_status_t status; 
    628629 
     
    635636 
    636637    pj_sockaddr_in_init(&addr, 0, (pj_uint16_t)cfg->port); 
     638 
     639    /* Init ICE config */ 
     640    pj_bzero(&ice_cfg, sizeof(ice_cfg)); 
     641 
     642    /* Duplicate STUN config */ 
     643    pj_memcpy(&ice_cfg.stun_cfg, &pjsua_var.stun_cfg, sizeof(pj_stun_config)); 
     644 
     645    /* Set STUN server, if any */ 
     646    if (pj_sockaddr_has_addr(&pjsua_var.stun_srv)) 
     647        pj_sockaddr_cp(&ice_cfg.stun_srv, &pjsua_var.stun_srv); 
     648 
     649    if (pjsua_var.ua_cfg.turn_host.slen) { 
     650        /* Set TURN server. 
     651         * TODO: DNS SRV 
     652         */ 
     653        status = pj_sockaddr_in_init(&ice_cfg.turn_srv.ipv4,  
     654                                     &pjsua_var.ua_cfg.turn_host, 
     655                                     pjsua_var.ua_cfg.turn_port); 
     656        if (status != PJ_SUCCESS) { 
     657            pjsua_perror(THIS_FILE, "Error resolving TURN server", status); 
     658            return status; 
     659        } 
     660 
     661        /* Copy TURN credential */ 
     662        pj_memcpy(&ice_cfg.turn_cred, &pjsua_var.ua_cfg.turn_cred, 
     663                  sizeof(pjsua_var.ua_cfg.turn_cred)); 
     664 
     665        /* TURN connection type. */ 
     666        if (pjsua_var.ua_cfg.turn_tcp) 
     667            ice_cfg.turn_conn_type = PJ_TURN_TP_TCP; 
     668        else 
     669            ice_cfg.turn_conn_type = PJ_TURN_TP_UDP; 
     670    } 
    637671 
    638672    /* Create each media transport */ 
     
    642676        int next_port; 
    643677        char name[32]; 
    644 #if PJMEDIA_ADVERTISE_RTCP 
    645         enum { COMP_CNT=2 }; 
     678        unsigned options, comp_cnt; 
     679 
     680#if PJMEDIA_ADVERTISE_RTCP==0 
     681        comp_cnt = 1; 
    646682#else 
    647         enum { COMP_CNT=1 }; 
     683        if (pjsua_var.media_cfg.ice_no_rtcp) 
     684            comp_cnt = 1; 
     685        else 
     686            comp_cnt = 2; 
    648687#endif 
     688 
     689        options = pjsua_var.media_cfg.ice_options; 
    649690 
    650691        pj_bzero(&ice_cb, sizeof(pjmedia_ice_cb)); 
     
    653694        pj_ansi_snprintf(name, sizeof(name), "icetp%02d", i); 
    654695                          
    655         status = pjmedia_ice_create(pjsua_var.med_endpt, name, COMP_CNT, 
    656                                     &pjsua_var.stun_cfg, &ice_cb, 
     696        status = pjmedia_ice_create(pjsua_var.med_endpt, name, comp_cnt, 
     697                                    &ice_cfg, &ice_cb, 
    657698                                    &pjsua_var.calls[i].med_tp); 
    658699        if (status != PJ_SUCCESS) { 
     
    670711                                        pjsua_var.media_cfg.rx_drop_pct); 
    671712 
    672         status = pjmedia_ice_start_init(pjsua_var.calls[i].med_tp, 0, &addr, 
    673                                         &pjsua_var.stun_srv.ipv4, NULL); 
     713        status = pjmedia_ice_start_init(pjsua_var.calls[i].med_tp, options,  
     714                                        &addr); 
    674715        if (status != PJ_SUCCESS) { 
    675716            pjsua_perror(THIS_FILE, "Error starting ICE transport", 
Note: See TracChangeset for help on using the changeset viewer.