Ignore:
Timestamp:
Oct 24, 2011 9:28:13 AM (13 years ago)
Author:
ming
Message:

Re #1395: Backport of PJSIP 1.x branch into PJSIP 2.0 trunk

TODO: ticket #1268 (Option for automatic/manual sending of RTCP SDES/BYE for the stream) for video stream.

Location:
pjproject/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk

  • pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app.c

    r3825 r3841  
    148148#ifdef STEREO_DEMO 
    149149static void stereo_demo(); 
    150 #endif 
    151 #ifdef TRANSPORT_ADAPTER_SAMPLE 
    152 static pj_status_t transport_adapter_sample(void); 
    153150#endif 
    154151static pj_status_t create_ipv6_media_transports(void); 
     
    912909 
    913910        case OPT_100REL: /** 100rel */ 
    914             cur_acc->require_100rel = PJ_TRUE; 
    915             cfg->cfg.require_100rel = PJ_TRUE; 
     911            cur_acc->require_100rel = PJSUA_100REL_MANDATORY; 
     912            cfg->cfg.require_100rel = PJSUA_100REL_MANDATORY; 
    916913            break; 
    917914 
     
    32213218#endif 
    32223219} 
     3220 
     3221#ifdef TRANSPORT_ADAPTER_SAMPLE 
     3222/* 
     3223 * This callback is called when media transport needs to be created. 
     3224 */ 
     3225static pjmedia_transport* on_create_media_transport(pjsua_call_id call_id, 
     3226                                                    unsigned media_idx, 
     3227                                                    pjmedia_transport *base_tp, 
     3228                                                    unsigned flags) 
     3229{ 
     3230    pjmedia_transport *adapter; 
     3231    pj_status_t status; 
     3232 
     3233    /* Create the adapter */ 
     3234    status = pjmedia_tp_adapter_create(pjsua_get_pjmedia_endpt(), 
     3235                                       NULL, base_tp, 
     3236                                       (flags & PJSUA_MED_TP_CLOSE_MEMBER), 
     3237                                       &adapter); 
     3238    if (status != PJ_SUCCESS) { 
     3239        PJ_PERROR(1,(THIS_FILE, status, "Error creating adapter")); 
     3240        return NULL; 
     3241    } 
     3242 
     3243    PJ_LOG(3,(THIS_FILE, "Media transport is created for call %d media %d", 
     3244              call_id, media_idx)); 
     3245 
     3246    return adapter; 
     3247} 
     3248#endif 
    32233249 
    32243250/* 
     
    52115237    app_config.cfg.cb.on_snd_dev_operation = &on_snd_dev_operation; 
    52125238    app_config.cfg.cb.on_call_media_event = &on_call_media_event; 
     5239#ifdef TRANSPORT_ADAPTER_SAMPLE 
     5240    app_config.cfg.cb.on_create_media_transport = &on_create_media_transport; 
     5241#endif 
    52135242    app_config.log_cfg.cb = log_cb; 
    52145243 
     
    54905519    for (i=0; i<app_config.acc_cnt; ++i) { 
    54915520        app_config.acc_cfg[i].rtp_cfg = app_config.rtp_cfg; 
     5521        app_config.acc_cfg[i].reg_retry_interval = 300; 
     5522        app_config.acc_cfg[i].reg_first_retry_interval = 60; 
     5523 
    54925524        status = pjsua_acc_add(&app_config.acc_cfg[i], PJ_TRUE, NULL); 
    54935525        if (status != PJ_SUCCESS) 
     
    55225554 
    55235555    /* Add RTP transports */ 
    5524 #ifdef TRANSPORT_ADAPTER_SAMPLE 
    5525     status = transport_adapter_sample(); 
    5526  
    5527 #else 
    55285556    if (app_config.ipv6) 
    55295557        status = create_ipv6_media_transports(); 
     
    55325560        status = pjsua_media_transports_create(&app_config.rtp_cfg); 
    55335561  #endif 
    5534 #endif 
    55355562    if (status != PJ_SUCCESS) 
    55365563        goto on_error; 
     
    57535780#endif 
    57545781 
    5755 #ifdef TRANSPORT_ADAPTER_SAMPLE 
    5756 static pj_status_t create_transport_adapter(pjmedia_endpt *med_endpt, int port, 
    5757                                             pjmedia_transport **p_tp) 
    5758 { 
    5759     pjmedia_transport *udp; 
    5760     pj_status_t status; 
    5761  
    5762     /* Create the UDP media transport */ 
    5763     status = pjmedia_transport_udp_create(med_endpt, NULL, port, 0, &udp); 
    5764     if (status != PJ_SUCCESS) 
    5765         return status; 
    5766  
    5767     /* Create the adapter */ 
    5768     status = pjmedia_tp_adapter_create(med_endpt, NULL, udp, p_tp); 
    5769     if (status != PJ_SUCCESS) { 
    5770         pjmedia_transport_close(udp); 
    5771         return status; 
    5772     } 
    5773  
    5774     return PJ_SUCCESS; 
    5775 } 
    5776  
    5777 static pj_status_t transport_adapter_sample(void) 
    5778 { 
    5779     pjsua_media_transport tp[PJSUA_MAX_CALLS]; 
    5780     pj_status_t status; 
    5781     int port = 7000; 
    5782     unsigned i; 
    5783  
    5784     for (i=0; i<app_config.cfg.max_calls; ++i) { 
    5785         status = create_transport_adapter(pjsua_get_pjmedia_endpt(),  
    5786                                           port + i*10, 
    5787                                           &tp[i].transport); 
    5788         if (status != PJ_SUCCESS) 
    5789             return status; 
    5790     } 
    5791  
    5792     return pjsua_media_transports_attach(tp, i, PJ_TRUE); 
    5793 } 
    5794 #endif 
    5795  
    57965782static pj_status_t create_ipv6_media_transports(void) 
    57975783{ 
Note: See TracChangeset for help on using the changeset viewer.