Changeset 3313


Ignore:
Timestamp:
Sep 20, 2010 6:13:02 AM (14 years ago)
Author:
nanang
Message:

Closed #1129:

  • Added run-time configuration for activating/deactivating stream keep-alive (non-codec-VAD mechanism), also added this config to account settings.
  • Fixed bug wrong session info pointer "si" in pjsua_media_channel_update() when call audio index is not zero.
Location:
pjproject/trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/docs/doxygen.cfg

    r2037 r3313  
    854854                         PJ_HAS_EVENT_OBJ=1 \ 
    855855                         PJ_HAS_TCP=1 \ 
    856                          PJMEDIA_HAS_SRTP=1 
     856                         PJMEDIA_HAS_SRTP=1 \ 
     857                         PJMEDIA_STREAM_ENABLE_KA=1 
    857858 
    858859# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then  
  • pjproject/trunk/pjmedia/include/pjmedia/stream.h

    r3237 r3313  
    128128                                         delay in msec (-1 for default).    */ 
    129129    int                 jb_max;     /**< Jitter buffer max delay in msec.   */ 
     130 
     131#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0 
     132    pj_bool_t           use_ka;     /**< Stream keep-alive and NAT hole punch 
     133                                         (see @ref PJMEDIA_STREAM_ENABLE_KA) 
     134                                         is enabled?                        */ 
     135#endif 
    130136}; 
    131137 
  • pjproject/trunk/pjmedia/src/pjmedia/stream.c

    r3292 r3313  
    198198 
    199199#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0 
     200    pj_bool_t                use_ka;           /**< Stream keep-alive with non- 
     201                                                    codec-VAD mechanism is 
     202                                                    enabled?                */ 
    200203    pj_timestamp             last_frm_ts_sent; /**< Timestamp of last sending 
    201204                                                    packet                  */ 
     
    11241127     * PJMEDIA_STREAM_KA_INTERVAL, send keep-alive packet. 
    11251128     */ 
     1129    if (stream->use_ka) 
    11261130    { 
    11271131        pj_uint32_t dtx_duration; 
     
    19741978    stream->jb_last_frm = PJMEDIA_JB_NORMAL_FRAME; 
    19751979 
     1980#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0 
     1981    stream->use_ka = info->use_ka; 
     1982#endif 
     1983 
    19761984    /* Build random RTCP CNAME. CNAME has user@host format */ 
    19771985    stream->cname.ptr = p = (char*) pj_pool_alloc(pool, 20); 
     
    22852293#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0 
    22862294    /* NAT hole punching by sending KA packet via RTP transport. */ 
    2287     send_keep_alive_packet(stream); 
     2295    if (stream->use_ka) 
     2296        send_keep_alive_packet(stream); 
    22882297#endif 
    22892298 
  • pjproject/trunk/pjsip/docs/doxygen.cfg

    r2037 r3313  
    847847PREDEFINED             = PJ_DECL(x)=x PJ_DEF(x)=x PJ_IDECL(x)=x \ 
    848848                         PJ_IDEF(x)=x PJ_INLINE(x)=x PJ_DECL_DATA(x)=x \ 
    849                          PJMEDIA_HAS_SRTP=1 
     849                         PJMEDIA_HAS_SRTP=1 \ 
     850                         PJMEDIA_STREAM_ENABLE_KA=1 
    850851 
    851852 
  • pjproject/trunk/pjsip/include/pjsua-lib/pjsua.h

    r3305 r3313  
    23182318    unsigned         reg_use_proxy; 
    23192319 
     2320#if defined(PJMEDIA_STREAM_ENABLE_KA) && (PJMEDIA_STREAM_ENABLE_KA != 0) 
     2321    /** 
     2322     * Specify whether stream keep-alive and NAT hole punching with 
     2323     * non-codec-VAD mechanism (see @ref PJMEDIA_STREAM_ENABLE_KA) is enabled 
     2324     * for this account. 
     2325     * 
     2326     * Default: PJ_FALSE (disabled) 
     2327     */ 
     2328    pj_bool_t        use_stream_ka; 
     2329#endif 
     2330 
    23202331} pjsua_acc_config; 
    23212332 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c

    r3305 r3313  
    753753    acc->cfg.srtp_secure_signaling = cfg->srtp_secure_signaling; 
    754754    acc->cfg.srtp_optional_dup_offer = cfg->srtp_optional_dup_offer;     
     755#endif 
     756 
     757#if defined(PJMEDIA_STREAM_ENABLE_KA) && (PJMEDIA_STREAM_ENABLE_KA != 0) 
     758    acc->cfg.use_stream_ka = cfg->use_stream_ka; 
    755759#endif 
    756760 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c

    r3305 r3313  
    186186    cfg->reg_use_proxy = PJSUA_REG_USE_OUTBOUND_PROXY | 
    187187                         PJSUA_REG_USE_ACC_PROXY; 
     188#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0 
     189    cfg->use_stream_ka = (PJMEDIA_STREAM_ENABLE_KA != 0); 
     190#endif 
    188191} 
    189192 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r3219 r3313  
    15461546    /* Reset session info with only one media stream */ 
    15471547    sess_info.stream_cnt = 1; 
    1548     if (si != &sess_info.stream_info[0]) 
     1548    if (si != &sess_info.stream_info[0]) { 
    15491549        pj_memcpy(&sess_info.stream_info[0], si, sizeof(pjmedia_stream_info)); 
     1550        si = &sess_info.stream_info[0]; 
     1551    } 
    15501552 
    15511553    /* Check if no media is active */ 
     
    16381640        si->rtp_seq = call->rtp_tx_seq; 
    16391641        si->rtp_seq_ts_set = call->rtp_tx_seq_ts_set; 
     1642 
     1643#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0 
     1644        /* Enable/disable stream keep-alive and NAT hole punch. */ 
     1645        si->use_ka = pjsua_var.acc[call->acc_id].cfg.use_stream_ka; 
     1646#endif 
    16401647 
    16411648        /* Create session based on session info. */ 
Note: See TracChangeset for help on using the changeset viewer.