Changeset 528


Ignore:
Timestamp:
Jun 19, 2006 2:49:14 PM (16 years ago)
Author:
bennylp
Message:

Re-live --quality options in pjsua

Location:
pjproject/trunk
Files:
4 edited

Legend:

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

    r526 r528  
    4444    unsigned                codec_cnt; 
    4545    pj_str_t                codec_arg[32]; 
    46     unsigned                clock_rate; 
    4746    pj_bool_t               null_audio; 
    4847    pj_str_t                wav_file; 
     
    5251    pj_bool_t               auto_loop; 
    5352    unsigned                ptime; 
    54     unsigned                quality; 
    55     unsigned                complexity; 
    5653    unsigned                auto_answer; 
    5754    unsigned                duration; 
     
    113110    puts  ("  --auto-loop         Automatically loop incoming RTP to outgoing RTP"); 
    114111    puts  ("  --rtp-port=N        Base port to try for RTP (default=4000)"); 
     112    puts  ("  --quality=N         Specify media quality (0-10, default=10)"); 
    115113    /* 
    116     puts  ("  --complexity=N      Specify encoding complexity (0-10, default=none(-1))"); 
    117     puts  ("  --quality=N         Specify encoding quality (0-10, default=4)"); 
    118114    puts  ("  --ptime=MSEC        Override codec ptime to MSEC (default=specific)"); 
    119115    */ 
     
    562558            break; 
    563559 
    564         case OPT_QUALITY: 
    565             cfg->quality = my_atoi(pj_optarg); 
    566             if (cfg->quality < 0 || cfg->quality > 10) { 
    567                 PJ_LOG(1,(THIS_FILE, 
    568                           "Error: invalid --quality (expecting 0-10")); 
    569                 return -1; 
    570             } 
    571             break; 
    572  
    573560        case OPT_DURATION: 
    574561            cfg->duration = my_atoi(pj_optarg); 
     
    585572 
    586573        */ 
     574 
     575        case OPT_QUALITY: 
     576            cfg->media_cfg.quality = my_atoi(pj_optarg); 
     577            if (cfg->media_cfg.quality < 0 || cfg->media_cfg.quality > 10) { 
     578                PJ_LOG(1,(THIS_FILE, 
     579                          "Error: invalid --quality (expecting 0-10")); 
     580                return -1; 
     581            } 
     582            break; 
    587583 
    588584        case OPT_AUTO_ANSWER: 
     
    832828    } 
    833829    /* Media clock rate. */ 
    834     if (config->clock_rate) { 
     830    if (config->media_cfg.clock_rate) { 
    835831        pj_ansi_sprintf(line, "--clock-rate %d\n", 
    836                         config->clock_rate); 
     832                        config->media_cfg.clock_rate); 
    837833        pj_strcat2(&cfg, line); 
    838834    } 
    839  
    840  
    841     /* Encoding quality and complexity */ 
    842     if (config->quality > 0) { 
     835    if (config->media_cfg.quality != 10) { 
    843836        pj_ansi_sprintf(line, "--quality %d\n", 
    844                         config->quality); 
     837                        config->media_cfg.quality); 
    845838        pj_strcat2(&cfg, line); 
    846839    } 
    847     if (config->complexity > 0) { 
    848         pj_ansi_sprintf(line, "--complexity %d\n", 
    849                         config->complexity); 
    850         pj_strcat2(&cfg, line); 
    851     } 
     840 
    852841 
    853842    /* ptime */ 
  • pjproject/trunk/pjsip/build/Makefile

    r508 r528  
    127127        $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $@ 
    128128 
    129 clean depend realclean: 
     129clean depend: 
    130130        $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $@ 
    131131        $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $@ 
  • pjproject/trunk/pjsip/include/pjsua-lib/pjsua.h

    r515 r528  
    20382038    unsigned            thread_cnt; 
    20392039 
    2040  
     2040    /** 
     2041     * Media quality, 0-10, according to this table: 
     2042     *   8-10: resampling use large filter, 
     2043     *   3-7:  resampling use small filter, 
     2044     *   1-2:  resampling use linear. 
     2045     * The media quality also sets speex codec quality/complexity to the 
     2046     * number. 
     2047     * 
     2048     * Default: 10. 
     2049     */ 
     2050    unsigned            quality; 
    20412051}; 
    20422052 
     
    20552065    cfg->has_ioqueue = PJ_TRUE; 
    20562066    cfg->thread_cnt = 1; 
     2067    cfg->quality = 10; 
    20572068} 
    20582069 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r513 r528  
    3838{ 
    3939    pj_str_t codec_id; 
     40    unsigned opt; 
    4041    pj_status_t status; 
    4142 
     
    7677    status = pjmedia_codec_speex_init(pjsua_var.med_endpt,  
    7778                                      PJMEDIA_SPEEX_NO_UWB, 
    78                                       -1, -1); 
     79                                      pjsua_var.media_cfg.quality,  
     80                                      pjsua_var.media_cfg.quality); 
    7981    if (status != PJ_SUCCESS) { 
    8082        pjsua_perror(THIS_FILE, "Error initializing Speex codec", 
     
    130132    pjsua_var.mconf_cfg.bits_per_sample = 16; 
    131133 
     134    /* Init options for conference bridge. */ 
     135    opt = PJMEDIA_CONF_NO_DEVICE; 
     136    if (pjsua_var.media_cfg.quality >= 3 && 
     137        pjsua_var.media_cfg.quality <= 7) 
     138    { 
     139        opt |= PJMEDIA_CONF_SMALL_FILTER; 
     140    } 
     141    else if (pjsua_var.media_cfg.quality < 3) { 
     142        opt |= PJMEDIA_CONF_USE_LINEAR; 
     143    } 
     144         
     145 
    132146    /* Init conference bridge. */ 
    133147    status = pjmedia_conf_create(pjsua_var.pool,  
     
    137151                                 pjsua_var.mconf_cfg.samples_per_frame,  
    138152                                 pjsua_var.mconf_cfg.bits_per_sample,  
    139                                  PJMEDIA_CONF_NO_DEVICE, 
    140                                  &pjsua_var.mconf); 
     153                                 opt, &pjsua_var.mconf); 
    141154    if (status != PJ_SUCCESS) { 
    142155        pjsua_perror(THIS_FILE,  
     
    533546{ 
    534547    pjmedia_conf_port_info cinfo; 
    535     unsigned i, count; 
     548    unsigned i; 
    536549    pj_status_t status; 
    537550 
Note: See TracChangeset for help on using the changeset viewer.