Changeset 2211 for pjproject/trunk


Ignore:
Timestamp:
Aug 13, 2008 1:56:24 PM (16 years ago)
Author:
bennylp
Message:

Ticket #594: Improvements in PocketPJ Windows Mobile application: added TCP option, VAD option, option to select codec priority order, and auto-answer option

Location:
pjproject/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjlib/include/pj/config_site_sample.h

    r2004 r2211  
    3232#   define PJSUA_DEFAULT_CODEC_QUALITY  5 
    3333#   define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY  5 
     34 
     35#   define PJMEDIA_SDP_NEG_PREFER_REMOTE_CODEC_ORDER    0 
    3436#endif 
    3537 
  • pjproject/trunk/pjsip-apps/src/pocketpj/PocketPJ.rc

    r1856 r2211  
    8080// 
    8181 
    82 IDD_POCKETPJ_DIALOG DIALOG DISCARDABLE 0, 0, 139, 151 
     82IDD_POCKETPJ_DIALOG DIALOGEX 0, 0, 139, 151 
    8383STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION 
    8484EXSTYLE WS_EX_APPWINDOW | 0x80000000L 
     
    8888    LTEXT           "sip:user@pjsip.lab",IDC_ACC_ID,22,5,115,8 
    8989    CONTROL         135,IDC_BTN_ACC,"Static",SS_BITMAP | SS_NOTIFY |  
    90                     WS_TABSTOP,7,3,12,11 
     90                    WS_BORDER | WS_TABSTOP,7,3,12,11 
    9191    CONTROL         "List1",IDC_BUDDY_LIST,"SysListView32",LVS_SMALLICON |  
    9292                    LVS_SINGLESEL | LVS_SORTASCENDING | WS_BORDER |  
     
    9898END 
    9999 
    100 IDD_SETTING DIALOG DISCARDABLE  0, 0, 140, 127 
     100IDD_SETTING DIALOG DISCARDABLE  0, 0, 140, 143 
    101101STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 
    102102CAPTION "PocketPJ Settings.." 
    103103FONT 8, "System" 
    104104BEGIN 
    105     LTEXT           "Domain:",IDC_STATIC,7,8,30,9 
    106105    EDITTEXT        IDC_DOMAIN,38,7,78,12,ES_AUTOHSCROLL 
    107106    EDITTEXT        IDC_USER,38,21,78,12,ES_AUTOHSCROLL 
    108107    EDITTEXT        IDC_PASSWD,38,35,78,12,ES_PASSWORD | ES_AUTOHSCROLL 
     108    EDITTEXT        IDC_DNS,38,49,78,12,ES_AUTOHSCROLL 
     109    EDITTEXT        IDC_STUN_SRV,56,64,77,12,ES_AUTOHSCROLL 
     110    CONTROL         "ICE",IDC_ICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,79, 
     111                    24,10 
     112    CONTROL         "TCP",IDC_TCP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33, 
     113                    79,24,10 
     114    CONTROL         "SRTP",IDC_SRTP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,61, 
     115                    79,29,10 
     116    CONTROL         "PUBLISH",IDC_PUBLISH,"Button",BS_AUTOCHECKBOX |  
     117                    WS_TABSTOP,93,79,40,10 
     118    CONTROL         "EC, tail:",IDC_ECHO_SUPPRESS,"Button",BS_AUTOCHECKBOX |  
     119                    WS_TABSTOP,7,92,37,10 
     120    EDITTEXT        IDC_EC_TAIL,47,91,23,12,ES_AUTOHSCROLL 
     121    CONTROL         "VAD",IDC_VAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,93, 
     122                    92,25,10 
     123    COMBOBOX        IDC_CODECS,59,105,42,39,CBS_DROPDOWNLIST | WS_VSCROLL |  
     124                    WS_TABSTOP 
     125    PUSHBUTTON      "OK",IDOK,17,122,50,14 
     126    PUSHBUTTON      "Cancel",IDCANCEL,73,122,50,14 
     127    LTEXT           "Domain:",IDC_STATIC,7,8,30,9 
    109128    LTEXT           "User:",IDC_STATIC,7,22,30,9 
    110129    LTEXT           "Passwd:",IDC_STATIC,7,36,30,9 
    111130    CONTROL         "STUN Srv:",IDC_STUN,"Button",BS_AUTOCHECKBOX |  
    112131                    WS_TABSTOP,7,65,47,10 
    113     EDITTEXT        IDC_STUN_SRV,56,64,77,12,ES_AUTOHSCROLL 
    114     CONTROL         "ICE",IDC_ICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,79, 
    115                     27,10 
    116     CONTROL         "SRTP",IDC_SRTP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,47, 
    117                     79,33,10 
    118     CONTROL         "PUBLISH",IDC_PUBLISH,"Button",BS_AUTOCHECKBOX |  
    119                     WS_TABSTOP,85,79,43,10 
    120     EDITTEXT        IDC_DNS,38,49,78,12,ES_AUTOHSCROLL 
    121132    LTEXT           "DNS:",IDC_STATIC,8,50,30,9 
    122     PUSHBUTTON      "OK",IDOK,17,106,50,14 
    123     PUSHBUTTON      "Cancel",IDCANCEL,73,106,50,14 
    124     CONTROL         "Suppress echo, tail:",IDC_ECHO_SUPPRESS,"Button", 
    125                     BS_AUTOCHECKBOX | WS_TABSTOP,7,92,79,10 
    126     EDITTEXT        IDC_EC_TAIL,89,91,33,12,ES_AUTOHSCROLL 
     133    LTEXT           "ms",IDC_STATIC,75,92,13,9 
     134    LTEXT           "Codec priority:",IDC_STATIC,7,107,49,9 
     135    CONTROL         "AA",IDC_AA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107, 
     136                    107,25,10 
    127137END 
    128138 
     
    193203        RIGHTMARGIN, 133 
    194204        TOPMARGIN, 7 
    195         BOTTOMMARGIN, 120 
     205        BOTTOMMARGIN, 136 
    196206    END 
    197207END 
  • pjproject/trunk/pjsip-apps/src/pocketpj/PocketPJ.vcc

    r1856 r2211  
    1313 
    1414ResourceCount=5 
    15 Resource2=IDD_SETTING 
     15Resource2=IDR_ACC_MENU 
    1616Resource3=IDD_POCKETPJ_DIALOG 
    17 Resource4=IDR_ACC_MENU 
     17Resource4=IDD_SETTING 
    1818Resource1=IDR_MAINFRAME 
    1919Class3=CSettingsDlg 
     
    4141ControlCount=6 
    4242Control1=IDC_ACC_ID,static,1342308352 
    43 Control2=IDC_BTN_ACC,static,1342243086 
     43Control2=IDC_BTN_ACC,static,1350631694 
    4444Control3=IDC_BUDDY_LIST,SysListView32,1350631446 
    4545Control4=IDC_STATIC,static,1342308352 
     
    6767Type=1 
    6868Class=CSettingsDlg 
    69 ControlCount=17 
    70 Control1=IDC_STATIC,static,1342308352 
    71 Control2=IDC_DOMAIN,edit,1350631552 
    72 Control3=IDC_USER,edit,1350631552 
    73 Control4=IDC_PASSWD,edit,1350631584 
    74 Control5=IDC_STATIC,static,1342308352 
    75 Control6=IDC_STATIC,static,1342308352 
    76 Control7=IDC_STUN,button,1342242819 
    77 Control8=IDC_STUN_SRV,edit,1350631552 
    78 Control9=IDC_ICE,button,1342242819 
    79 Control10=IDC_SRTP,button,1342242819 
    80 Control11=IDC_PUBLISH,button,1342242819 
    81 Control12=IDC_DNS,edit,1350631552 
    82 Control13=IDC_STATIC,static,1342308352 
     69ControlCount=23 
     70Control1=IDC_DOMAIN,edit,1350631552 
     71Control2=IDC_USER,edit,1350631552 
     72Control3=IDC_PASSWD,edit,1350631584 
     73Control4=IDC_DNS,edit,1350631552 
     74Control5=IDC_STUN_SRV,edit,1350631552 
     75Control6=IDC_ICE,button,1342242819 
     76Control7=IDC_TCP,button,1342242819 
     77Control8=IDC_SRTP,button,1342242819 
     78Control9=IDC_PUBLISH,button,1342242819 
     79Control10=IDC_ECHO_SUPPRESS,button,1342242819 
     80Control11=IDC_EC_TAIL,edit,1350631552 
     81Control12=IDC_VAD,button,1342242819 
     82Control13=IDC_CODECS,combobox,1344339971 
    8383Control14=IDOK,button,1342242816 
    8484Control15=IDCANCEL,button,1342242816 
    85 Control16=IDC_ECHO_SUPPRESS,button,1342242819 
    86 Control17=IDC_EC_TAIL,edit,1350631552 
     85Control16=IDC_STATIC,static,1342308352 
     86Control17=IDC_STATIC,static,1342308352 
     87Control18=IDC_STATIC,static,1342308352 
     88Control19=IDC_STUN,button,1342242819 
     89Control20=IDC_STATIC,static,1342308352 
     90Control21=IDC_STATIC,static,1342308352 
     91Control22=IDC_STATIC,static,1342308352 
     92Control23=IDC_AA,button,1342242819 
    8793 
    8894[CLS:CSettingsDlg] 
     
    9399Filter=D 
    94100VirtualFilter=dWC 
    95 LastObject=IDC_ECHO_SUPPRESS 
     101LastObject=CSettingsDlg 
    96102 
  • pjproject/trunk/pjsip-apps/src/pocketpj/PocketPJDlg.cpp

    r1964 r2211  
    8181BOOL CPocketPJDlg::Restart() 
    8282{ 
     83    unsigned i; 
    8384    pj_status_t status; 
    8485 
     
    179180    media_cfg.thread_cnt = 1; 
    180181    media_cfg.enable_ice = m_Cfg.m_UseIce; 
     182    media_cfg.no_vad = !m_Cfg.m_VAD; 
    181183 
    182184    if (m_Cfg.m_EchoSuppress) { 
     
    196198 
    197199    // Create one UDP transport 
    198     PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Add transport.."); 
     200    PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Adding UDP transport.."); 
    199201    pjsua_transport_id transport_id; 
    200202    pjsua_transport_config udp_cfg; 
     
    211213    } 
    212214 
     215    if (m_Cfg.m_TCP) { 
     216        // Create one TCP transport 
     217        PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Adding TCP transport.."); 
     218        pjsua_transport_id transport_id; 
     219        pjsua_transport_config tcp_cfg; 
     220 
     221        pjsua_transport_config_default(&tcp_cfg); 
     222        tcp_cfg.port = 0; 
     223        status = pjsua_transport_create(PJSIP_TRANSPORT_TCP, 
     224                                        &tcp_cfg, &transport_id); 
     225        if (status != PJ_SUCCESS) { 
     226            Error(_T("Error creating TCP transport"), status); 
     227            pjsua_destroy(); 
     228            PopUp_Hide(POPUP_REGISTRATION); 
     229            return FALSE; 
     230        } 
     231    } 
     232 
    213233    // Adjust codecs priority 
    214234    pj_str_t tmp; 
    215     pjsua_codec_set_priority(pj_cstr(&tmp, "speex"), 0); 
    216     pjsua_codec_set_priority(pj_cstr(&tmp, "speex/8000"), 200); 
    217     pjsua_codec_set_priority(pj_cstr(&tmp, "GSM"),  180); 
    218     pjsua_codec_set_priority(pj_cstr(&tmp, "PCMU"), 160); 
    219     pjsua_codec_set_priority(pj_cstr(&tmp, "PCMA"), 150); 
    220     pjsua_codec_set_priority(pj_cstr(&tmp, "iLBC"), 0); 
    221     pjsua_codec_set_priority(pj_cstr(&tmp, "L16"), 0); 
    222  
     235    pjsua_codec_set_priority(pj_cstr(&tmp, "*"), 0); 
     236    for (i=0; i<(unsigned)m_Cfg.m_Codecs.GetSize(); ++i) { 
     237        CString codec = m_Cfg.m_Codecs.GetAt(i); 
     238        char tmp_nam[80]; 
     239 
     240        pj_unicode_to_ansi((LPCTSTR)codec, codec.GetLength(), 
     241                           tmp_nam, sizeof(tmp_nam)); 
     242        pjsua_codec_set_priority(pj_cstr(&tmp, tmp_nam), 200-i); 
     243    } 
    223244 
    224245    // Start! 
     
    262283    acc_cfg.publish_enabled = m_Cfg.m_UsePublish; 
    263284     
     285    char route[80]; 
     286    if (m_Cfg.m_TCP) { 
     287        snprintf(route, sizeof(route), "<sip:%s;lr;transport=tcp>", domain); 
     288        acc_cfg.proxy[acc_cfg.proxy_cnt++] = pj_str(route); 
     289    } else { 
     290        snprintf(route, sizeof(route), "<sip:%s;lr>", domain); 
     291        acc_cfg.proxy[acc_cfg.proxy_cnt++] = pj_str(route); 
     292    } 
     293 
    264294    status = pjsua_acc_add(&acc_cfg, PJ_TRUE, &m_PjsuaAccId); 
    265295    if (status != PJ_SUCCESS) { 
     
    367397                   "Answer", "Hangup", 0); 
    368398        pjsua_call_answer(0, 180, NULL, NULL); 
     399        if (m_Cfg.m_AutoAnswer) 
     400            OnPopUpButton(1); 
    369401        break; 
    370402    case PJSIP_INV_STATE_EARLY:     /**< After response with To tag.        */ 
  • pjproject/trunk/pjsip-apps/src/pocketpj/SettingsDlg.cpp

    r2201 r2211  
    55#include "PocketPJ.h" 
    66#include "SettingsDlg.h" 
     7#include <pjsua-lib/pjsua.h> 
    78#include <atlbase.h> 
    89 
     
    2728#define REG_ENABLE_EC   _T("EnableEC") 
    2829#define REG_EC_TAIL     _T("ECTail") 
     30#define REG_ENABLE_VAD  _T("EnableVAD") 
     31#define REG_ENABLE_TCP  _T("EnableTCP") 
     32#define REG_CODEC_CNT   _T("CodecCnt") 
     33#define REG_CODEC_X     _T("Codec%u") 
     34#define REG_AUTO_ANSWER _T("AutoAnswer") 
    2935 
    3036 
     
    3339CPocketPJSettings::CPocketPJSettings() 
    3440: m_UseStun(FALSE), m_UseIce(FALSE), m_UseSrtp(FALSE), m_UsePublish(FALSE), 
    35   m_EchoSuppress(TRUE), m_EcTail(200) 
    36 { 
     41  m_EchoSuppress(TRUE), m_EcTail(200), m_TCP(FALSE), m_VAD(FALSE), 
     42  m_AutoAnswer(FALSE) 
     43{ 
     44    /* Init codec list */ 
     45#if defined(PJMEDIA_HAS_GSM_CODEC) && PJMEDIA_HAS_GSM_CODEC 
     46    m_Codecs.Add(_T("GSM")); 
     47#endif 
     48#if defined(PJMEDIA_HAS_G711_CODEC) && PJMEDIA_HAS_G711_CODEC 
     49    m_Codecs.Add(_T("PCMU")); 
     50    m_Codecs.Add(_T("PCMA")); 
     51#endif 
     52#if defined(PJMEDIA_HAS_SPEEX_CODEC) && PJMEDIA_HAS_SPEEX_CODEC 
     53    m_Codecs.Add(_T("Speex")); 
     54#endif 
    3755} 
    3856 
     
    7795    if (key.QueryValue(dwordVal, REG_USE_STUN) == ERROR_SUCCESS) { 
    7896        m_UseStun = dwordVal != 0; 
    79     } else { 
    80         m_UseStun = 0; 
    8197    } 
    8298 
    8399    if (key.QueryValue(dwordVal, REG_USE_ICE) == ERROR_SUCCESS) { 
    84100        m_UseIce = dwordVal != 0; 
    85     } else { 
    86         m_UseIce = 0; 
    87101    } 
    88102 
     
    90104    if (key.QueryValue(dwordVal, REG_USE_SRTP) == ERROR_SUCCESS) { 
    91105        m_UseSrtp = dwordVal != 0; 
    92     } else { 
    93         m_UseSrtp = 0; 
    94106    } 
    95107 
     
    103115    if (key.QueryValue(dwordVal, REG_ENABLE_EC) == ERROR_SUCCESS) { 
    104116        m_EchoSuppress = dwordVal != 0; 
    105     } else { 
    106         m_EchoSuppress = 1; 
    107117    } 
    108118 
     
    110120    if (key.QueryValue(dwordVal, REG_EC_TAIL) == ERROR_SUCCESS) { 
    111121        m_EcTail = dwordVal; 
    112     } else { 
    113         m_EcTail = 200; 
     122    } 
     123 
     124    cbData = sizeof(dwordVal); 
     125    if (key.QueryValue(dwordVal, REG_ENABLE_TCP) == ERROR_SUCCESS) { 
     126        m_TCP = dwordVal != 0; 
     127    } 
     128 
     129    cbData = sizeof(dwordVal); 
     130    if (key.QueryValue(dwordVal, REG_ENABLE_VAD) == ERROR_SUCCESS) { 
     131        m_VAD = dwordVal != 0; 
     132    } 
     133 
     134    cbData = sizeof(dwordVal); 
     135    if (key.QueryValue(dwordVal, REG_AUTO_ANSWER) == ERROR_SUCCESS) { 
     136        m_AutoAnswer = dwordVal != 0; 
    114137    } 
    115138 
     
    130153        if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) { 
    131154            m_BuddyList.Add(textVal); 
     155        } 
     156    } 
     157 
     158    DWORD codecCount = 0; 
     159    cbData = sizeof(dwordVal); 
     160    if (key.QueryValue(codecCount, REG_CODEC_CNT) == ERROR_SUCCESS) { 
     161 
     162        m_Codecs.RemoveAll(); 
     163 
     164        for (i=0; i<codecCount; ++i) { 
     165            CString entry; 
     166            entry.Format(REG_CODEC_X, i); 
     167 
     168            cbData = sizeof(textVal); 
     169            if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) { 
     170                m_Codecs.Add(textVal); 
     171            } 
    132172        } 
    133173    } 
     
    158198    key.SetValue(m_EcTail, REG_EC_TAIL); 
    159199 
     200    key.SetValue(m_TCP, REG_ENABLE_TCP); 
     201    key.SetValue(m_VAD, REG_ENABLE_VAD); 
     202    key.SetValue(m_AutoAnswer, REG_AUTO_ANSWER); 
     203 
    160204    key.SetValue(m_BuddyList.GetSize(), REG_BUDDY_CNT); 
    161205 
     
    165209        entry.Format(REG_BUDDY_X, i); 
    166210        key.SetValue(m_BuddyList.GetAt(i), entry); 
     211    } 
     212 
     213    DWORD N = m_Codecs.GetSize(); 
     214    key.SetValue(N, REG_CODEC_CNT); 
     215    for (i=0; i<m_Codecs.GetSize(); ++i) { 
     216        CString entry; 
     217        entry.Format(REG_CODEC_X, i); 
     218        key.SetValue(m_Codecs.GetAt(i), entry); 
    167219    } 
    168220 
     
    190242        m_EchoSuppress = FALSE; 
    191243        m_EcTail = _T(""); 
     244        m_TCP = FALSE; 
     245        m_VAD = FALSE; 
     246        m_AutoAnswer = FALSE; 
    192247        //}}AFX_DATA_INIT 
    193248 
     
    202257        m_Dns       = m_Cfg.m_DNS; 
    203258        m_EchoSuppress = m_Cfg.m_EchoSuppress; 
     259        m_TCP       = m_Cfg.m_TCP; 
     260        m_VAD       = m_Cfg.m_VAD; 
     261        m_AutoAnswer= m_Cfg.m_AutoAnswer; 
    204262 
    205263        CString s; 
    206264        s.Format(_T("%d"), m_Cfg.m_EcTail); 
    207265        m_EcTail    = s; 
     266 
    208267} 
    209268 
     
    213272        CDialog::DoDataExchange(pDX); 
    214273        //{{AFX_DATA_MAP(CSettingsDlg) 
     274        DDX_Control(pDX, IDC_CODECS, m_Codecs); 
    215275        DDX_Text(pDX, IDC_DOMAIN, m_Domain); 
    216276        DDX_Check(pDX, IDC_ICE, m_ICE); 
     
    224284        DDX_Check(pDX, IDC_ECHO_SUPPRESS, m_EchoSuppress); 
    225285        DDX_Text(pDX, IDC_EC_TAIL, m_EcTail); 
     286        DDX_Check(pDX, IDC_TCP, m_TCP); 
     287        DDX_Check(pDX, IDC_VAD, m_VAD); 
     288        DDX_Check(pDX, IDC_AA, m_AutoAnswer); 
    226289        //}}AFX_DATA_MAP 
     290 
     291         
     292        if (m_Codecs.GetCount() == 0) { 
     293            int i; 
     294            for (i=0; i<m_Cfg.m_Codecs.GetSize(); ++i) { 
     295                m_Codecs.AddString(m_Cfg.m_Codecs.GetAt(i)); 
     296            } 
     297            m_Codecs.SetCurSel(0); 
     298        } 
    227299} 
    228300 
     
    232304        ON_BN_CLICKED(IDC_STUN, OnStun) 
    233305        ON_BN_CLICKED(IDC_ECHO_SUPPRESS, OnEchoSuppress) 
     306        ON_CBN_SELCHANGE(IDC_CODECS, OnSelchangeCodecs) 
    234307        //}}AFX_MSG_MAP 
    235308END_MESSAGE_MAP() 
     
    242315    int rc = CDialog::DoModal();         
    243316 
    244     if (rc == IDOK) { 
    245         m_Cfg.m_Domain      = m_Domain; 
    246         m_Cfg.m_UseIce      = m_ICE != 0; 
    247         m_Cfg.m_Password    = m_Passwd; 
    248         m_Cfg.m_UsePublish  = m_PUBLISH != 0; 
    249         m_Cfg.m_UseSrtp     = m_SRTP != 0; 
    250         m_Cfg.m_UseStun     = m_STUN != 0; 
    251         m_Cfg.m_StunSrv     = m_StunSrv; 
    252         m_Cfg.m_User        = m_User; 
    253         m_Cfg.m_DNS         = m_Dns; 
    254         m_Cfg.m_EchoSuppress= m_EchoSuppress != 0; 
    255         m_Cfg.m_EcTail      = _ttoi(m_EcTail); 
    256     } 
    257  
    258317    return rc; 
    259318} 
     
    266325{ 
    267326} 
     327 
     328void CSettingsDlg::OnSelchangeCodecs()  
     329{ 
     330    int cur = m_Codecs.GetCurSel(); 
     331    if (cur < 1) 
     332        return; 
     333 
     334    CString codec; 
     335    DWORD N; 
     336 
     337    m_Codecs.GetLBText(cur, codec); 
     338    N = m_Codecs.GetCount(); 
     339    m_Codecs.DeleteString(cur); 
     340    N = m_Codecs.GetCount(); 
     341    m_Codecs.InsertString(0, codec); 
     342    N = m_Codecs.GetCount(); 
     343    m_Codecs.SetCurSel(0); 
     344} 
     345 
     346 
     347void CSettingsDlg::OnOK()  
     348{ 
     349    UpdateData(TRUE); 
     350 
     351    m_Cfg.m_Domain      = m_Domain; 
     352    m_Cfg.m_UseIce      = m_ICE != 0; 
     353    m_Cfg.m_Password    = m_Passwd; 
     354    m_Cfg.m_UsePublish  = m_PUBLISH != 0; 
     355    m_Cfg.m_UseSrtp     = m_SRTP != 0; 
     356    m_Cfg.m_UseStun     = m_STUN != 0; 
     357    m_Cfg.m_StunSrv     = m_StunSrv; 
     358    m_Cfg.m_User        = m_User; 
     359    m_Cfg.m_DNS         = m_Dns; 
     360    m_Cfg.m_EchoSuppress= m_EchoSuppress != 0; 
     361    m_Cfg.m_EcTail      = _ttoi(m_EcTail); 
     362    m_Cfg.m_TCP         = m_TCP != 0; 
     363    m_Cfg.m_VAD         = m_VAD != 0; 
     364    m_Cfg.m_AutoAnswer  = m_AutoAnswer != 0; 
     365 
     366    unsigned i; 
     367    m_Cfg.m_Codecs.RemoveAll(); 
     368    DWORD N = m_Codecs.GetCount(); 
     369    for (i=0; i<N; ++i) { 
     370        CString codec; 
     371        m_Codecs.GetLBText(i, codec); 
     372        m_Cfg.m_Codecs.Add(codec); 
     373    } 
     374 
     375    CDialog::OnOK(); 
     376} 
  • pjproject/trunk/pjsip-apps/src/pocketpj/SettingsDlg.h

    r2201 r2211  
    2424    bool        m_EchoSuppress; 
    2525    DWORD       m_EcTail; 
     26    bool        m_TCP; 
     27    bool        m_VAD; 
     28    bool        m_AutoAnswer; 
    2629 
     30    CArray<CString,CString> m_Codecs; 
    2731    CArray<CString,CString> m_BuddyList; 
    2832     
     
    4953        //{{AFX_DATA(CSettingsDlg) 
    5054        enum { IDD = IDD_SETTING }; 
     55        CComboBox       m_Codecs; 
    5156        CString m_Domain; 
    5257        BOOL    m_ICE; 
     
    6065        BOOL    m_EchoSuppress; 
    6166        CString m_EcTail; 
     67        BOOL    m_TCP; 
     68        BOOL    m_VAD; 
     69        BOOL    m_AutoAnswer; 
    6270        //}}AFX_DATA 
    6371 
     
    8088        afx_msg void OnStun(); 
    8189        afx_msg void OnEchoSuppress(); 
     90        afx_msg void OnSelchangeCodecs(); 
     91        virtual void OnOK(); 
    8292        //}}AFX_MSG 
    8393        DECLARE_MESSAGE_MAP() 
  • pjproject/trunk/pjsip-apps/src/pocketpj/resource.h

    r1856 r2211  
    3838#define IDC_EC_TAIL                     1021 
    3939#define IDC_BUTTON2                     1022 
     40#define IDC_VAD                         1022 
     41#define IDC_TCP                         1023 
     42#define IDC_CODECS                      1024 
     43#define IDC_AA                          1025 
    4044#define IDS_CAP_ONLINE                  32772 
    4145#define IDS_CAP_OFFLINE                 32774 
     
    6266#define _APS_NEXT_RESOURCE_VALUE        145 
    6367#define _APS_NEXT_COMMAND_VALUE         32796 
    64 #define _APS_NEXT_CONTROL_VALUE         1023 
     68#define _APS_NEXT_CONTROL_VALUE         1025 
    6569#define _APS_NEXT_SYMED_VALUE           101 
    6670#endif 
Note: See TracChangeset for help on using the changeset viewer.