Ignore:
Timestamp:
Oct 25, 2009 9:02:07 AM (15 years ago)
Author:
bennylp
Message:

Initial commit for ticket #950: QoS support:

  • implementation:
    • PJLIB (sock_qos*.*)
  • added QoS support in:
    • SIP UDP transport,
    • SIP TCP transport,
    • media UDP transport (done in pjsua-lib),
    • pjnath ICE stream transport,
    • pjnath STUN socket,
    • pjnath TURN client
  • added QoS options in pjsua-lib:
    • QoS fields in pjsua_transport_config
  • added "--set-qos" parameter in pjsua

Notes:

  • QoS in TLS transport is not yet implemented, waiting for #957
  • build ok on VS6, VS2005 (multiple targets), Carbide, and Mingw
  • no run-time testing yet
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r2945 r2966  
    385385    for (i=0; i<RTP_RETRY; ++i, next_rtp_port += 2) { 
    386386 
    387         /* Create and bind RTP socket. */ 
     387        /* Create RTP socket. */ 
    388388        status = pj_sock_socket(pj_AF_INET(), pj_SOCK_DGRAM(), 0, &sock[0]); 
    389389        if (status != PJ_SUCCESS) { 
     
    392392        } 
    393393 
     394        /* Apply QoS to RTP socket, if specified */ 
     395        status = pj_sock_apply_qos2(sock[0], cfg->qos_type,  
     396                                    &cfg->qos_params,  
     397                                    2, THIS_FILE, "RTP socket"); 
     398 
     399        /* Bind RTP socket */ 
    394400        status=pj_sock_bind_in(sock[0], pj_ntohl(bound_addr.sin_addr.s_addr),  
    395401                               next_rtp_port); 
     
    400406        } 
    401407 
    402         /* Create and bind RTCP socket. */ 
     408        /* Create RTCP socket. */ 
    403409        status = pj_sock_socket(pj_AF_INET(), pj_SOCK_DGRAM(), 0, &sock[1]); 
    404410        if (status != PJ_SUCCESS) { 
     
    408414        } 
    409415 
     416        /* Apply QoS to RTCP socket, if specified */ 
     417        status = pj_sock_apply_qos2(sock[1], cfg->qos_type,  
     418                                    &cfg->qos_params,  
     419                                    2, THIS_FILE, "RTCP socket"); 
     420 
     421        /* Bind RTCP socket */ 
    410422        status=pj_sock_bind_in(sock[1], pj_ntohl(bound_addr.sin_addr.s_addr),  
    411423                               (pj_uint16_t)(next_rtp_port+1)); 
     
    882894 
    883895/* Create ICE media transports (when ice is enabled) */ 
    884 static pj_status_t create_ice_media_transports(void) 
     896static pj_status_t create_ice_media_transports(pjsua_transport_config *cfg) 
    885897{ 
    886898    char stunip[PJ_INET6_ADDRSTRLEN]; 
     
    916928        ice_cfg.stun.max_host_cands = pjsua_var.media_cfg.ice_max_host_cands; 
    917929 
     930    /* Copy QoS setting to STUN setting */ 
     931    ice_cfg.stun.cfg.qos_type = cfg->qos_type; 
     932    pj_memcpy(&ice_cfg.stun.cfg.qos_params, &cfg->qos_params, 
     933              sizeof(cfg->qos_params)); 
     934 
    918935    /* Configure TURN settings */ 
    919936    if (pjsua_var.media_cfg.enable_turn) { 
     
    931948                  &pjsua_var.media_cfg.turn_auth_cred, 
    932949                  sizeof(ice_cfg.turn.auth_cred)); 
     950 
     951        /* Copy QoS setting to TURN setting */ 
     952        ice_cfg.turn.cfg.qos_type = cfg->qos_type; 
     953        pj_memcpy(&ice_cfg.turn.cfg.qos_params, &cfg->qos_params, 
     954                  sizeof(cfg->qos_params)); 
    933955    } 
    934956 
     
    10261048    /* Create the transports */ 
    10271049    if (pjsua_var.media_cfg.enable_ice) { 
    1028         status = create_ice_media_transports(); 
     1050        status = create_ice_media_transports(&cfg); 
    10291051    } else { 
    10301052        status = create_udp_media_transports(&cfg); 
Note: See TracChangeset for help on using the changeset viewer.