Changeset 293


Ignore:
Timestamp:
Mar 6, 2006 1:35:47 PM (19 years ago)
Author:
bennylp
Message:

Added to pjsua: write new media settings, modify call stat output, fixed general bug

Location:
pjproject/trunk/pjsip
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/include/pjsua-lib/pjsua.h

    r284 r293  
    199199 
    200200    /* Account: */ 
     201    pj_bool_t        has_acc;       /**< Any --id cmdline?              */ 
    201202    int              acc_cnt;       /**< Number of client registrations */ 
    202203    pjsua_acc        acc[PJSUA_MAX_ACC];    /** Client regs array.      */ 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c

    r284 r293  
    284284     
    285285    status = pjsip_inv_initial_answer(inv, rdata,  
    286                                       (pjsua.auto_answer ? 200 : 100),  
     286                                      (pjsua.auto_answer ? pjsua.auto_answer  
     287                                        : 100),  
    287288                                      NULL, NULL, &response); 
    288289    if (status != PJ_SUCCESS) { 
    289290         
    290         pjsua_perror(THIS_FILE, "Unable to create 100 response", status); 
    291  
    292         pjsip_dlg_respond(dlg, rdata, 500, NULL, NULL, NULL); 
    293         pjsip_inv_terminate(inv, 500, PJ_FALSE); 
     291        int st_code; 
     292 
     293        pjsua_perror(THIS_FILE, "Unable to send answer to incoming INVITE",  
     294                     status); 
     295 
     296        /* If failed to send 2xx response, there's a good chance that it is 
     297         * because SDP negotiation has failed. 
     298         */ 
     299        if (pjsua.auto_answer/100 == 2) 
     300            st_code = PJSIP_SC_UNSUPPORTED_MEDIA_TYPE; 
     301        else 
     302            st_code = 500; 
     303 
     304        pjsip_dlg_respond(dlg, rdata, st_code, NULL, NULL, NULL); 
     305        pjsip_inv_terminate(inv, st_code, PJ_FALSE); 
     306        return PJ_TRUE; 
    294307 
    295308    } else { 
     
    763776        pjsua_perror(THIS_FILE, "SDP negotiation has failed", status); 
    764777 
    765         /* Disconnect call if this is not a re-INVITE */ 
    766         if (inv->state != PJSIP_INV_STATE_CONFIRMED) { 
     778        /* Disconnect call if we're not in the middle of initializing an 
     779         * UAS dialog and if this is not a re-INVITE  
     780         */ 
     781        if (inv->state != PJSIP_INV_STATE_NULL && 
     782            inv->state != PJSIP_INV_STATE_CONFIRMED)  
     783        { 
    767784            call_disconnect(inv, PJSIP_SC_UNSUPPORTED_MEDIA_TYPE); 
    768785        } 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c

    r284 r293  
    7575    /* Default for media: */ 
    7676    pjsua.clock_rate = 8000; 
    77     pjsua.complexity = 4; 
     77    pjsua.complexity = -1; 
    7878    pjsua.quality = 4; 
    7979 
     
    8585        pjsua.acc[i].local_uri = pj_str(PJSUA_LOCAL_URI); 
    8686        pjsua.acc[i].reg_timeout = 55; 
     87        pjsua.acc[i].online_status = PJ_TRUE; 
    8788        pj_list_init(&pjsua.acc[i].route_set); 
    8889        pj_list_init(&pjsua.acc[i].pres_srv_list); 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_settings.c

    r284 r293  
    9393    puts  ("  --rtp-port=N        Base port to try for RTP (default=4000)"); 
    9494    puts  ("  --add-codec=name    Specify alternate codec order"); 
    95     puts  ("  --complexity=N      Specify encoding complexity (0-10, default=4)"); 
     95    puts  ("  --complexity=N      Specify encoding complexity (0-10, default=none(-1))"); 
    9696    puts  ("  --quality=N         Specify encoding quality (0-10, default=4)"); 
    9797    puts  (""); 
     
    394394            } 
    395395            cur_acc->local_uri = pj_str(optarg); 
     396            pjsua.has_acc = 1; 
    396397            break; 
    397398 
     
    577578} 
    578579 
     580static const char *good_number(char *buf, pj_int32_t val) 
     581{ 
     582    if (val < 1000) { 
     583        pj_ansi_sprintf(buf, "%d", val); 
     584    } else if (val < 1000000) { 
     585        pj_ansi_sprintf(buf, "%d.%dK",  
     586                        val / 1000, 
     587                        (val % 1000) / 100); 
     588    } else { 
     589        pj_ansi_sprintf(buf, "%d.%02dM",  
     590                        val / 1000000, 
     591                        (val % 1000000) / 10000); 
     592    } 
     593 
     594    return buf; 
     595} 
     596 
    579597static void dump_media_session(pjmedia_session *session) 
    580598{ 
     
    589607        int rem_port; 
    590608        const char *dir; 
     609        char stxpkt[10], stxoct[10], srxpkt[10], srxoct[10]; 
    591610 
    592611        pjmedia_session_get_stream_stat(session, i, &strm_stat); 
     
    605624         
    606625        PJ_LOG(3,(THIS_FILE,  
    607                   "%s[Media strm#%d] %.*s, %s, peer=%s:%d", 
     626                  "%s#%d %.*s @%dKHz, %s, peer=%s:%d", 
    608627                  "               ", 
    609628                  i, 
    610629                  info.stream_info[i].fmt.encoding_name.slen, 
    611630                  info.stream_info[i].fmt.encoding_name.ptr, 
     631                  info.stream_info[i].fmt.sample_rate / 1000, 
    612632                  dir, 
    613633                  rem_addr, rem_port)); 
    614634        PJ_LOG(3,(THIS_FILE,  
    615                   "%s tx {pkt=%u, bytes=%u} rx {pkt=%u, bytes=%u}", 
    616                   "                             ", 
    617                   strm_stat.enc.pkt, strm_stat.enc.bytes, 
    618                   strm_stat.dec.pkt, strm_stat.dec.bytes)); 
     635                  "%s tx{pt=%d,pkt=%s,oct=%s} rx{pt=%d,pkt=%s,oct=%s}", 
     636                  "                 ", 
     637                  info.stream_info[i].tx_pt, 
     638                  good_number(stxpkt, strm_stat.enc.pkt),  
     639                  good_number(stxoct, strm_stat.enc.bytes), 
     640                  info.stream_info[i].fmt.pt, 
     641                  good_number(srxpkt, strm_stat.dec.pkt),  
     642                  good_number(srxoct, strm_stat.dec.bytes))); 
    619643 
    620644    } 
     
    763787 
    764788    /* Save account settings. */ 
    765     for (acc_index=0; acc_index < pjsua.acc_cnt; ++acc_index) { 
    766          
    767         save_account_settings(acc_index, &cfg); 
    768  
    769         if (acc_index < pjsua.acc_cnt-1) 
    770             pj_strcat2(&cfg, "--next-account\n"); 
     789    if (pjsua.has_acc) { 
     790        for (acc_index=0; acc_index < pjsua.acc_cnt; ++acc_index) { 
     791             
     792            save_account_settings(acc_index, &cfg); 
     793 
     794            if (acc_index < pjsua.acc_cnt-1) 
     795                pj_strcat2(&cfg, "--next-account\n"); 
     796        } 
    771797    } 
    772798 
     
    850876        pj_strcat2(&cfg, line); 
    851877    } 
    852  
     878    /* Media clock rate. */ 
     879    if (pjsua.clock_rate >= 32000) 
     880        pj_strcat2(&cfg, "--uwb\n"); 
     881    else if (pjsua.clock_rate >= 16000) 
     882        pj_strcat2(&cfg, "--wb\n"); 
     883 
     884    /* Encoding quality and complexity */ 
     885    pj_ansi_sprintf(line, "--quality %d\n", 
     886                    pjsua.quality); 
     887    pj_strcat2(&cfg, line); 
     888    pj_ansi_sprintf(line, "--complexity %d\n", 
     889                    pjsua.complexity); 
     890    pj_strcat2(&cfg, line); 
     891 
     892    /* Start RTP port. */ 
     893    pj_ansi_sprintf(line, "--rtp-port %d\n", 
     894                    pjsua.start_rtp_port); 
     895    pj_strcat2(&cfg, line); 
     896 
     897    /* Add codec. */ 
     898    for (i=0; i<pjsua.codec_cnt; ++i) { 
     899        pj_ansi_sprintf(line, "--add-codec %s\n", 
     900                    pjsua.codec_arg[i].ptr); 
     901        pj_strcat2(&cfg, line); 
     902    } 
    853903 
    854904    pj_strcat2(&cfg, "#\n# User agent:\n#\n"); 
Note: See TracChangeset for help on using the changeset viewer.