Changeset 648


Ignore:
Timestamp:
Aug 4, 2006 6:27:19 PM (18 years ago)
Author:
bennylp
Message:

More work on the AEC (including changes in PJSUA), embed the AEC in sound_port, reduce DirectSound? buffer from 32 to 16, and fixed ARM compilation for MSVC WinCE target.

Location:
pjproject/trunk
Files:
2 added
15 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/include/pjmedia/aec.h

    r646 r648  
    5252 * @param clock_rate        Media clock rate/sampling rate. 
    5353 * @param samples_per_frame Number of samples per frame. 
    54  * @param tail_size         Tail length, in number of samples. 
     54 * @param tail_ms           Tail length, miliseconds. 
    5555 * 
    5656 * @return                  PJ_SUCCESS on success. 
     
    5959                                         unsigned clock_rate, 
    6060                                         unsigned samples_per_frame, 
    61                                          unsigned tail_size, 
     61                                         unsigned tail_ms, 
    6262                                         unsigned options, 
    6363                                         pjmedia_aec **p_aec ); 
  • pjproject/trunk/pjmedia/include/pjmedia/aec_port.h

    r642 r648  
    4444 * @param pool          Pool to allocate memory. 
    4545 * @param dn_port       Downstream port. 
    46  * @param tail_length   Tail length in samples. 
     46 * @param tail_ms       Tail length in miliseconds. 
    4747 * @param p_port        Pointer to receive the port instance. 
    4848 * 
     
    5151PJ_DECL(pj_status_t) pjmedia_aec_port_create( pj_pool_t *pool, 
    5252                                              pjmedia_port *dn_port, 
    53                                               unsigned tail_length, 
     53                                              unsigned tail_ms, 
    5454                                              pjmedia_port **p_port ); 
    5555 
  • pjproject/trunk/pjmedia/include/pjmedia/sound_port.h

    r518 r648  
    184184 
    185185/** 
     186 * Enable accoustic echo cancellation (AEC) to the specified sound.  
     187 * The AEC can only be enabled for sound streams with full-duplex direction. 
     188 * 
     189 * And note, you should only change the AEC settings when the sound port 
     190 * is not connected to any downstream ports. 
     191 * 
     192 * @param snd_port          The sound device port. 
     193 * @param pool              Pool to re-create the AEC if necessary. 
     194 * @param tail_ms           Maximum echo tail length to be supported, in 
     195 *                          miliseconds. If zero is specified, the AEC would 
     196 *                          be disabled. 
     197 * 
     198 * @return                  PJ_SUCCESS on success. 
     199 */ 
     200PJ_DECL(pj_status_t) pjmedia_snd_port_set_aec(pjmedia_snd_port *snd_port, 
     201                                              pj_pool_t *pool, 
     202                                              unsigned tail_ms); 
     203 
     204 
     205/** 
     206 * Get current AEC tail length, in miliseconds. The tail length will be zero 
     207 * if AEC is not enabled. 
     208 * 
     209 * @param snd_port          The sound device port. 
     210 * @param p_length          Pointer to receive the tail length. 
     211 * 
     212 * @return                  PJ_SUCCESS on success. 
     213 */ 
     214PJ_DECL(pj_status_t) pjmedia_snd_port_get_aec_tail(pjmedia_snd_port *snd_port, 
     215                                                   unsigned *p_length); 
     216 
     217 
     218 
     219/** 
    186220 * Connect a port to the sound device port. If the sound device port has a 
    187221 * sound recorder device, then this will start periodic function call to 
  • pjproject/trunk/pjmedia/src/pjmedia/aec_port.c

    r646 r648  
    4646PJ_DEF(pj_status_t) pjmedia_aec_port_create( pj_pool_t *pool, 
    4747                                             pjmedia_port *dn_port, 
    48                                              unsigned tail_length, 
     48                                             unsigned tail_ms, 
    4949                                             pjmedia_port **p_port ) 
    5050{ 
     
    5454 
    5555    PJ_ASSERT_RETURN(pool && dn_port && p_port, PJ_EINVAL); 
    56     PJ_ASSERT_RETURN(dn_port->info.bits_per_sample==16 && tail_length,  
     56    PJ_ASSERT_RETURN(dn_port->info.bits_per_sample==16 && tail_ms,  
    5757                     PJ_EINVAL); 
    5858 
     
    6868    status = pjmedia_aec_create(pool, dn_port->info.clock_rate,  
    6969                                dn_port->info.samples_per_frame, 
    70                                 tail_length, 0, &aec->aec); 
     70                                tail_ms, 0, &aec->aec); 
    7171    if (status != PJ_SUCCESS) 
    7272        return status; 
  • pjproject/trunk/pjmedia/src/pjmedia/aec_speex.c

    r646 r648  
    2727#include <pj/pool.h> 
    2828#include <speex/speex_echo.h> 
     29#include <speex/speex_preprocess.h> 
    2930 
    3031 
    3132#define THIS_FILE   "aec_speex.c" 
    32 #define BUF_COUNT   16 
     33#define BUF_COUNT   8 
    3334 
    3435 
     
    4041struct pjmedia_aec 
    4142{ 
    42     SpeexEchoState  *state; 
     43    SpeexEchoState       *state; 
     44    SpeexPreprocessState *preprocess; 
     45 
    4346    unsigned         samples_per_frame; 
    4447    unsigned         options; 
    4548    pj_int16_t      *tmp_frame; 
     49    spx_int32_t     *residue; 
    4650 
    4751    pj_lock_t       *lock;              /* To protect buffers, if required  */ 
     
    6064                                        unsigned clock_rate, 
    6165                                        unsigned samples_per_frame, 
    62                                         unsigned tail_size, 
     66                                        unsigned tail_ms, 
    6367                                        unsigned options, 
    6468                                        pjmedia_aec **p_aec ) 
     
    6973    pj_status_t status; 
    7074 
     75    *p_aec = NULL; 
     76 
    7177    aec = pj_pool_zalloc(pool, sizeof(pjmedia_aec)); 
    7278    PJ_ASSERT_RETURN(aec != NULL, PJ_ENOMEM); 
     
    7985    aec->options = options; 
    8086 
    81     aec->state = speex_echo_state_init(samples_per_frame,tail_size); 
     87    aec->state = speex_echo_state_init(samples_per_frame, 
     88                                        clock_rate * tail_ms / 1000); 
    8289    if (aec->state == NULL) { 
     90        pj_lock_destroy(aec->lock); 
     91        return PJ_ENOMEM; 
     92    } 
     93 
     94    aec->preprocess = speex_preprocess_state_init(samples_per_frame,  
     95                                                  clock_rate); 
     96    if (aec->preprocess == NULL) { 
     97        speex_echo_state_destroy(aec->state); 
    8398        pj_lock_destroy(aec->lock); 
    8499        return PJ_ENOMEM; 
     
    91106 
    92107    /* Create temporary frame for echo cancellation */ 
    93     aec->tmp_frame = pj_pool_zalloc(pool, sizeof(pj_int16_t) * 
     108    aec->tmp_frame = pj_pool_zalloc(pool, 2 * samples_per_frame); 
     109    PJ_ASSERT_RETURN(aec->tmp_frame != NULL, PJ_ENOMEM); 
     110 
     111    /* Create temporary frame to receive residue */ 
     112    aec->residue = pj_pool_zalloc(pool, sizeof(spx_int32_t) *  
    94113                                            samples_per_frame); 
    95     PJ_ASSERT_RETURN(aec->tmp_frame != NULL, PJ_ENOMEM); 
     114    PJ_ASSERT_RETURN(aec->residue != NULL, PJ_ENOMEM); 
    96115 
    97116    /* Create internal playback buffers */ 
     
    109128                         clock_rate, 
    110129                         samples_per_frame, 
    111                          tail_size * 1000 / clock_rate)); 
     130                         tail_ms)); 
    112131    return PJ_SUCCESS; 
    113132 
     
    121140{ 
    122141    PJ_ASSERT_RETURN(aec && aec->state, PJ_EINVAL); 
     142 
     143    if (aec->lock) 
     144        pj_lock_acquire(aec->lock); 
    123145 
    124146    if (aec->state) { 
    125147        speex_echo_state_destroy(aec->state); 
    126148        aec->state = NULL; 
     149    } 
     150 
     151    if (aec->preprocess) { 
     152        speex_preprocess_state_destroy(aec->preprocess); 
     153        aec->preprocess = NULL; 
    127154    } 
    128155 
     
    225252                                             void *reserved ) 
    226253{ 
    227     unsigned level0, level1; 
    228  
    229254    /* Sanity checks */ 
    230255    PJ_ASSERT_RETURN(aec && rec_frm && play_frm && options==0 && 
     
    234259    speex_echo_cancel(aec->state, (const spx_int16_t*)rec_frm,  
    235260                      (const spx_int16_t*)play_frm,  
    236                       (spx_int16_t*)aec->tmp_frame, NULL); 
    237  
    238 #if 0 
    239     level0 = pjmedia_calc_avg_signal(rec_frm, aec->samples_per_frame); 
    240     level1 = pjmedia_calc_avg_signal(aec->tmp_frame, aec->samples_per_frame); 
    241  
    242     if (level1 < level0) { 
    243         PJ_LOG(5,(THIS_FILE, "Input signal reduced from %d to %d", 
    244                   level0, level1)); 
    245     } 
    246 #else 
    247     PJ_UNUSED_ARG(level0); 
    248     PJ_UNUSED_ARG(level1); 
    249 #endif 
     261                      (spx_int16_t*)aec->tmp_frame,  
     262                      aec->residue); 
     263 
     264 
     265    /* Preprocess output */ 
     266    speex_preprocess(aec->preprocess, (spx_int16_t*)aec->tmp_frame,  
     267                     aec->residue); 
    250268 
    251269    /* Copy temporary buffer back to original rec_frm */ 
  • pjproject/trunk/pjmedia/src/pjmedia/dsound.c

    r644 r648  
    453453    unsigned eventCount; 
    454454    unsigned bytes_per_frame; 
    455     int excess_rec = 0; 
    456455    pj_status_t status; 
    457456 
     
    503502             
    504503            struct dsound_stream *dsound_strm; 
    505             int i; 
    506504 
    507505            /* 
     
    513511            status = PJ_SUCCESS; 
    514512 
    515             for (i=0; i <= excess_rec; ++i) { 
    516                 /* Get frame from application. */ 
    517                 status = (*strm->play_cb)(strm->user_data,  
    518                                           dsound_strm->timestamp.u32.lo, 
    519                                           strm->buffer, 
    520                                           bytes_per_frame); 
    521                 if (status != PJ_SUCCESS) 
    522                     break; 
    523  
    524                 /* Write to DirectSound buffer. */ 
    525                 AppWriteDataToBuffer( dsound_strm->ds.play.lpDsBuffer,  
    526                                       dsound_strm->dwBytePos, 
    527                                       (LPBYTE)strm->buffer,  
     513            /* Get frame from application. */ 
     514            status = (*strm->play_cb)(strm->user_data,  
     515                                      dsound_strm->timestamp.u32.lo, 
     516                                      strm->buffer, 
    528517                                      bytes_per_frame); 
    529  
    530                 /* Increment position. */ 
    531                 dsound_strm->dwBytePos += bytes_per_frame; 
    532                 if (dsound_strm->dwBytePos >= dsound_strm->dwDsBufferSize) 
    533                     dsound_strm->dwBytePos -= dsound_strm->dwDsBufferSize; 
    534                 dsound_strm->timestamp.u64 += strm->samples_per_frame; 
    535             } 
    536  
    537518            if (status != PJ_SUCCESS) 
    538519                break; 
     520 
     521            /* Write to DirectSound buffer. */ 
     522            AppWriteDataToBuffer( dsound_strm->ds.play.lpDsBuffer,  
     523                                  dsound_strm->dwBytePos, 
     524                                  (LPBYTE)strm->buffer,  
     525                                  bytes_per_frame); 
     526 
     527            /* Increment position. */ 
     528            dsound_strm->dwBytePos += bytes_per_frame; 
     529            if (dsound_strm->dwBytePos >= dsound_strm->dwDsBufferSize) 
     530                dsound_strm->dwBytePos -= dsound_strm->dwDsBufferSize; 
     531            dsound_strm->timestamp.u64 += strm->samples_per_frame; 
    539532 
    540533        } else { 
     
    545538             */ 
    546539            struct dsound_stream *dsound_strm; 
    547             int captured = 0; 
    548540            BOOL rc; 
    549541 
     
    559551                if (!rc) { 
    560552                    pj_bzero(strm->buffer, bytes_per_frame); 
    561                 } else { 
    562                     captured++; 
    563                 } 
     553                }  
    564554 
    565555                /* Call callback */ 
     
    583573            } while (dsound_captured_size(dsound_strm) > bytes_per_frame); 
    584574 
    585             excess_rec = captured-1; 
    586             if (excess_rec < 0) excess_rec = 0; 
    587575        } 
    588576    } 
  • pjproject/trunk/pjmedia/src/pjmedia/sound_port.c

    r646 r648  
    3535 
    3636//#define SIMULATE_LOST_PCT   20 
    37 #define AEC_TAIL    500     /* in ms */ 
     37#define AEC_TAIL    128     /* default AEC length in ms */ 
    3838 
    3939#define THIS_FILE           "sound_port.c" 
     
    5858 
    5959    pjmedia_aec         *aec; 
     60    unsigned             aec_tail_len; 
    6061    pjmedia_plc         *plc; 
    6162 
     
    136137 
    137138 
    138     if (snd_port->aec) { 
    139         pjmedia_aec_playback(snd_port->aec, output); 
    140     } 
    141  
    142139    return PJ_SUCCESS; 
    143140} 
     
    156153    pjmedia_port *port; 
    157154    pjmedia_frame frame; 
    158  
    159     /* Cancel echo */ 
    160     if (snd_port->aec) { 
    161         pjmedia_aec_capture(snd_port->aec, input, 0); 
    162     } 
    163155 
    164156    /* We're risking accessing the port without holding any mutex. 
     
    171163    if (port == NULL) 
    172164        return PJ_SUCCESS; 
     165 
     166    /* Cancel echo */ 
     167    if (snd_port->aec) { 
     168        pjmedia_aec_capture(snd_port->aec, input, 0); 
     169    } 
    173170 
    174171    frame.buf = (void*)input; 
     
    247244                                        snd_port->channel_count, 
    248245                                    0, &snd_port->plc); 
    249         if (status != PJ_SUCCESS) 
     246        if (status != PJ_SUCCESS) { 
     247            PJ_LOG(4,(THIS_FILE, "Unable to create PLC")); 
    250248            snd_port->plc = NULL; 
     249        } 
    251250    } 
    252251 
    253252    /* Create AEC only when direction is full duplex */ 
    254253    if (snd_port->dir == PJMEDIA_DIR_CAPTURE_PLAYBACK) { 
    255         status = pjmedia_aec_create(pool, snd_port->clock_rate,  
    256                                     snd_port->samples_per_frame,  
    257                                     snd_port->clock_rate * AEC_TAIL / 1000, 
    258                                     0, &snd_port->aec); 
    259         if (status != PJ_SUCCESS) 
     254        status = pjmedia_snd_port_set_aec(snd_port, pool, AEC_TAIL); 
     255        if (status != PJ_SUCCESS) { 
     256            PJ_LOG(4,(THIS_FILE, "Unable to create AEC")); 
    260257            snd_port->aec = NULL; 
     258        } 
    261259    } 
    262260 
     
    433431 
    434432/* 
     433 * Enable AEC 
     434 */ 
     435PJ_DEF(pj_status_t) pjmedia_snd_port_set_aec( pjmedia_snd_port *snd_port, 
     436                                              pj_pool_t *pool, 
     437                                              unsigned tail_ms) 
     438{ 
     439    pj_status_t status; 
     440 
     441    /* Sound must be opened in full-duplex mode */ 
     442    PJ_ASSERT_RETURN(snd_port &&  
     443                     snd_port->dir == PJMEDIA_DIR_CAPTURE_PLAYBACK, 
     444                     PJ_EINVALIDOP); 
     445 
     446    /* Destroy AEC */ 
     447    if (snd_port->aec) { 
     448        pjmedia_aec_destroy(snd_port->aec); 
     449        snd_port->aec = NULL; 
     450    } 
     451 
     452    snd_port->aec_tail_len = tail_ms; 
     453 
     454    if (tail_ms != 0) { 
     455        status = pjmedia_aec_create(pool, snd_port->clock_rate,  
     456                                    snd_port->samples_per_frame,  
     457                                    snd_port->clock_rate * tail_ms / 1000, 
     458                                    0, &snd_port->aec); 
     459        if (status != PJ_SUCCESS) 
     460            snd_port->aec = NULL; 
     461    } else { 
     462        status = PJ_SUCCESS; 
     463    } 
     464 
     465    return status; 
     466} 
     467 
     468 
     469/* Get AEC tail length */ 
     470PJ_DEF(pj_status_t) pjmedia_snd_port_get_aec_tail( pjmedia_snd_port *snd_port, 
     471                                                   unsigned *p_length) 
     472{ 
     473    PJ_ASSERT_RETURN(snd_port && p_length, PJ_EINVAL); 
     474    *p_length =  snd_port->aec ? snd_port->aec_tail_len : 0; 
     475    return PJ_SUCCESS; 
     476} 
     477 
     478 
     479 
     480/* 
    435481 * Connect a port. 
    436482 */ 
  • pjproject/trunk/pjsip-apps/build/wince-evc4

    • Property svn:ignore set to
      *.vco
      *.vcb
      *.vcl
  • pjproject/trunk/pjsip-apps/build/wince-evc4/output

    • Property svn:ignore set to
      *
  • pjproject/trunk/pjsip-apps/src/pjsua_wince/pjsua_wince.cpp

    r641 r648  
    1313static HWND         hMainWnd; 
    1414static HWND         hwndCB; 
    15 static HWND         hwndGlobalStatus; 
    16 static HWND         hwndURI; 
    17 static HWND         hwndCallStatus; 
     15static HWND         hwndGlobalStatus, hwndURI, hwndCallStatus; 
     16static HWND         hwndActionButton, hwndExitButton; 
    1817 
    1918static pj_pool_t   *g_pool; 
     
    2120static int          g_current_acc; 
    2221static int          g_current_call = PJSUA_INVALID_ID; 
     22static int          g_current_action; 
    2323 
    2424enum 
     
    3636    ID_MENU_ANSWER, 
    3737    ID_MENU_DISCONNECT, 
     38    ID_BTN_ACTION, 
    3839}; 
     40 
     41#define DEFAULT_URI     "sip:192.168.0.7" 
    3942 
    4043 
     
    6467{ 
    6568    wchar_t tmp[128]; 
     69    if (len==-1) len=pj_ansi_strlen(uri); 
    6670    pj_ansi_to_unicode(uri, len, tmp, PJ_ARRAY_SIZE(tmp)); 
    6771    SetDlgItemText(hMainWnd, ID_GLOBAL_STATUS, tmp); 
     
    7478{ 
    7579    wchar_t tmp[128]; 
     80    if (len==-1) len=pj_ansi_strlen(uri); 
    7681    pj_ansi_to_unicode(uri, len, tmp, PJ_ARRAY_SIZE(tmp)); 
    7782    SetDlgItemText(hMainWnd, ID_URI, tmp); 
     
    8388{ 
    8489    wchar_t tmp[128]; 
     90    if (len==-1) len=pj_ansi_strlen(state); 
    8591    pj_ansi_to_unicode(state, len, tmp, PJ_ARRAY_SIZE(tmp)); 
    8692    SetDlgItemText(hMainWnd, ID_CALL_STATUS, tmp); 
     
    101107    case ID_MENU_NONE: 
    102108        InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("None")); 
     109        SetWindowText(hwndActionButton, TEXT("-")); 
    103110        break; 
    104111    case ID_MENU_CALL: 
    105112        InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("Call")); 
     113        SetWindowText(hwndActionButton, TEXT("&Call")); 
    106114        break; 
    107115    case ID_MENU_ANSWER: 
    108116        InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("Answer")); 
     117        SetWindowText(hwndActionButton, TEXT("&Answer")); 
    109118        break; 
    110119    case ID_MENU_DISCONNECT: 
    111120        InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("Hangup")); 
     121        SetWindowText(hwndActionButton, TEXT("&Hangup")); 
    112122        break; 
    113123    } 
    114124 
    115125    EnableMenuItem(hMenu, action, MF_BYCOMMAND | (enable?MF_ENABLED:MF_GRAYED)); 
     126    DrawMenuBar(hMainWnd); 
     127 
     128    g_current_action = action; 
    116129} 
    117130 
     
    131144 
    132145        g_current_call = PJSUA_INVALID_ID; 
    133         SetURI("sip:", 4); 
     146        SetURI(DEFAULT_URI, -1); 
    134147        SetAction(ID_MENU_CALL); 
    135         SetCallStatus(call_info.state_text.ptr, call_info.state_text.slen); 
     148        //SetCallStatus(call_info.state_text.ptr, call_info.state_text.slen); 
     149        SetCallStatus(call_info.last_status_text.ptr, call_info.last_status_text.slen); 
    136150 
    137151    } else { 
     
    259273    pjsua_media_config_default(&media_cfg); 
    260274    pjsua_transport_config_default(&udp_cfg); 
     275    udp_cfg.port = 50060; 
    261276    pjsua_transport_config_default(&rtp_cfg); 
     277    rtp_cfg.port = 40000; 
    262278 
    263279    /* Setup media */ 
     
    388404    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); 
    389405    hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE, 
    390             CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,  
     406            CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 200,  
    391407            NULL, NULL, hInstance, NULL); 
    392408 
     
    412428    { 
    413429        X = 10, 
     430        Y = 40, 
    414431        W = 220, 
    415432        H = 30, 
     
    431448                dwStyle,        // Window style 
    432449                X,              // x-coordinate of the upper-left corner 
    433                 60,            // y-coordinate of the upper-left corner 
     450                Y+0,            // y-coordinate of the upper-left corner 
    434451                W,              // Width of the window for the edit 
    435452                                // control 
    436                 H,              // Height of the window for the edit 
     453                H-5,            // Height of the window for the edit 
    437454                                // control 
    438455                hWnd,           // Window handle to the parent window 
     
    451468                dwStyle,        // Window style 
    452469                X,  // x-coordinate of the upper-left corner 
    453                 100,  // y-coordinate of the upper-left corner 
     470                Y+H,  // y-coordinate of the upper-left corner 
    454471                W,  // Width of the window for the edit 
    455472                                // control 
    456                 H,  // Height of the window for the edit 
     473                H-5,  // Height of the window for the edit 
    457474                                // control 
    458475                hWnd,           // Window handle to the parent window 
     
    461478                NULL);          // Specify NULL for this parameter when  
    462479                                // you create a control 
    463     SetURI("sip:", 4, true); 
    464     SetFocus(hwndURI); 
     480 
     481    // Create action Button 
     482    hwndActionButton = CreateWindow( L"button", L"Action",  
     483                         WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  
     484                         X, Y+2*H,  
     485                         60, H-5, hWnd,  
     486                         (HMENU) ID_BTN_ACTION, 
     487                         hInst, NULL ); 
     488 
     489    // Create exit button 
     490    hwndExitButton = CreateWindow( L"button", L"E&xit",  
     491                         WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  
     492                         X+70, Y+2*H,  
     493                         60, H-5, hWnd,  
     494                         (HMENU) ID_EXIT, 
     495                         hInst, NULL ); 
     496 
    465497 
    466498    // Create call status edit 
     
    471503                dwStyle,        // Window style 
    472504                X,  // x-coordinate of the upper-left corner 
    473                 140,  // y-coordinate of the upper-left corner 
     505                Y+3*H,  // y-coordinate of the upper-left corner 
    474506                W,  // Width of the window for the edit 
    475507                                // control 
    476                 H,  // Height of the window for the edit 
     508                H-5,  // Height of the window for the edit 
    477509                                // control 
    478510                hWnd,           // Window handle to the parent window 
     
    482514                                // you create a control 
    483515    SetCallStatus("Ready", 5); 
    484  
    485516    SetAction(ID_MENU_CALL); 
     517    SetURI(DEFAULT_URI, -1); 
     518    SetFocus(hwndURI); 
     519 
    486520} 
    487521 
     
    500534        wmId    = LOWORD(wParam);  
    501535        wmEvent = HIWORD(wParam);  
     536        if (wmId == ID_BTN_ACTION) 
     537            wmId = g_current_action; 
    502538        switch (wmId) 
    503539        { 
  • pjproject/trunk/pjsip-apps/src/pjsua_wince/pjsua_wince.vcp

    r641 r648  
    7676# PROP CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" 
    7777# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     78# PROP Ignore_Export_Lib 0 
    7879# PROP Target_Dir "" 
    7980RSC=rc.exe 
     
    9192LINK32=link.exe 
    9293# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
    93 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
     94# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
    9495 
    9596!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE MIPSII_FP) Debug" 
     
    108109# PROP CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" 
    109110# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     111# PROP Ignore_Export_Lib 0 
    110112# PROP Target_Dir "" 
    111113RSC=rc.exe 
     
    123125LINK32=link.exe 
    124126# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
    125 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
     127# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
    126128 
    127129!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE MIPSII) Release" 
     
    140142# PROP CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" 
    141143# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     144# PROP Ignore_Export_Lib 0 
    142145# PROP Target_Dir "" 
    143146RSC=rc.exe 
     
    155158LINK32=link.exe 
    156159# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
    157 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
     160# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
    158161 
    159162!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE MIPSII) Debug" 
     
    172175# PROP CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" 
    173176# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     177# PROP Ignore_Export_Lib 0 
    174178# PROP Target_Dir "" 
    175179RSC=rc.exe 
     
    187191LINK32=link.exe 
    188192# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
    189 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
     193# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS 
    190194 
    191195!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE SH4) Release" 
     
    204208# PROP CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" 
    205209# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     210# PROP Ignore_Export_Lib 0 
    206211# PROP Target_Dir "" 
    207212RSC=rc.exe 
     
    219224LINK32=link.exe 
    220225# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 
    221 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 
     226# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 
    222227 
    223228!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE SH4) Debug" 
     
    236241# PROP CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" 
    237242# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     243# PROP Ignore_Export_Lib 0 
    238244# PROP Target_Dir "" 
    239245RSC=rc.exe 
     
    251257LINK32=link.exe 
    252258# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 
    253 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 
     259# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 
    254260 
    255261!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE SH3) Release" 
     
    268274# PROP CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" 
    269275# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     276# PROP Ignore_Export_Lib 0 
    270277# PROP Target_Dir "" 
    271278RSC=rc.exe 
     
    283290LINK32=link.exe 
    284291# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 
    285 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 
     292# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 
    286293 
    287294!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE SH3) Debug" 
     
    300307# PROP CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" 
    301308# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     309# PROP Ignore_Export_Lib 0 
    302310# PROP Target_Dir "" 
    303311RSC=rc.exe 
     
    315323LINK32=link.exe 
    316324# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 
    317 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 
     325# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 
    318326 
    319327!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE MIPSIV) Release" 
     
    332340# PROP CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" 
    333341# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     342# PROP Ignore_Export_Lib 0 
    334343# PROP Target_Dir "" 
    335344RSC=rc.exe 
     
    347356LINK32=link.exe 
    348357# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
    349 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
     358# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
    350359 
    351360!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE MIPSIV) Debug" 
     
    364373# PROP CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" 
    365374# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     375# PROP Ignore_Export_Lib 0 
    366376# PROP Target_Dir "" 
    367377RSC=rc.exe 
     
    379389LINK32=link.exe 
    380390# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
    381 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
     391# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
    382392 
    383393!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE emulator) Release" 
     
    396406# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}" 
    397407# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     408# PROP Ignore_Export_Lib 0 
    398409# PROP Target_Dir "" 
    399410RSC=rc.exe 
     
    411422LINK32=link.exe 
    412423# ADD BASE LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
    413 # ADD LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
     424# ADD LINK32 $(CEx86Corelibc) commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
    414425 
    415426!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE emulator) Debug" 
     
    435446CPP=cl.exe 
    436447# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D "_i386_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "i_386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /Yu"stdafx.h" /Gs8192 /GF /c 
    437 # ADD CPP /nologo /W3 /Zi /Od /I "../../../pjsip/include" /I "../../../pjlib-util/include" /I "../../../pjlib/include" /I "../../../pjmedia/include" /D "DEBUG" /D "_i386_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "i_386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /Yu"stdafx.h" /Gs8192 /GF /c 
     448# ADD CPP /nologo /W3 /Zi /Od /I "../../../pjsip/include" /I "../../../pjlib-util/include" /I "../../../pjlib/include" /I "../../../pjmedia/include" /D "DEBUG" /D "_i386_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "i_386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /FR /Yu"stdafx.h" /Gs8192 /GF /c 
    438449MTL=midl.exe 
    439450# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 
     
    444455LINK32=link.exe 
    445456# ADD BASE LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
    446 # ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
     457# ADD LINK32 $(CEx86Corelibc) commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
    447458 
    448459!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE ARMV4I) Release" 
     
    461472# PROP CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" 
    462473# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     474# PROP Ignore_Export_Lib 0 
    463475# PROP Target_Dir "" 
    464476RSC=rc.exe 
     
    476488LINK32=link.exe 
    477489# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
    478 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
     490# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
    479491 
    480492!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE ARMV4I) Debug" 
     
    493505# PROP CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" 
    494506# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     507# PROP Ignore_Export_Lib 0 
    495508# PROP Target_Dir "" 
    496509RSC=rc.exe 
     
    508521LINK32=link.exe 
    509522# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
    510 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
     523# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
    511524 
    512525!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE MIPSIV_FP) Release" 
     
    525538# PROP CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" 
    526539# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     540# PROP Ignore_Export_Lib 0 
    527541# PROP Target_Dir "" 
    528542RSC=rc.exe 
     
    540554LINK32=link.exe 
    541555# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
    542 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
     556# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
    543557 
    544558!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE MIPSIV_FP) Debug" 
     
    557571# PROP CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" 
    558572# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     573# PROP Ignore_Export_Lib 0 
    559574# PROP Target_Dir "" 
    560575RSC=rc.exe 
     
    572587LINK32=link.exe 
    573588# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
    574 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
     589# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU 
    575590 
    576591!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE ARMV4) Release" 
     
    589604# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" 
    590605# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     606# PROP Ignore_Export_Lib 0 
    591607# PROP Target_Dir "" 
    592608RSC=rc.exe 
     
    604620LINK32=link.exe 
    605621# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM 
    606 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM 
     622# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM 
    607623 
    608624!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE ARMV4) Debug" 
     
    621637# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" 
    622638# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     639# PROP Ignore_Export_Lib 0 
    623640# PROP Target_Dir "" 
    624641RSC=rc.exe 
     
    636653LINK32=link.exe 
    637654# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM 
    638 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM 
     655# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM 
    639656 
    640657!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE MIPS16) Release" 
     
    653670# PROP CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" 
    654671# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     672# PROP Ignore_Export_Lib 0 
    655673# PROP Target_Dir "" 
    656674RSC=rc.exe 
     
    668686LINK32=link.exe 
    669687# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 
    670 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 
     688# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 
    671689 
    672690!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE MIPS16) Debug" 
     
    685703# PROP CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" 
    686704# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     705# PROP Ignore_Export_Lib 0 
    687706# PROP Target_Dir "" 
    688707RSC=rc.exe 
     
    700719LINK32=link.exe 
    701720# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 
    702 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 
     721# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 
    703722 
    704723!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE ARMV4T) Release" 
     
    717736# PROP CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" 
    718737# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     738# PROP Ignore_Export_Lib 0 
    719739# PROP Target_Dir "" 
    720740RSC=rc.exe 
     
    732752LINK32=link.exe 
    733753# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
    734 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
     754# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
    735755 
    736756!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE ARMV4T) Debug" 
     
    749769# PROP CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" 
    750770# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     771# PROP Ignore_Export_Lib 0 
    751772# PROP Target_Dir "" 
    752773RSC=rc.exe 
     
    764785LINK32=link.exe 
    765786# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
    766 # ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
     787# ADD LINK32 commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB 
    767788 
    768789!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE x86) Release" 
     
    781802# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" 
    782803# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     804# PROP Ignore_Export_Lib 0 
    783805# PROP Target_Dir "" 
    784806RSC=rc.exe 
     
    796818LINK32=link.exe 
    797819# ADD BASE LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
    798 # ADD LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
     820# ADD LINK32 $(CEx86Corelibc) commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
    799821 
    800822!ELSEIF  "$(CFG)" == "pjsua_wince - Win32 (WCE x86) Debug" 
     
    813835# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" 
    814836# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" 
     837# PROP Ignore_Export_Lib 0 
    815838# PROP Target_Dir "" 
    816839RSC=rc.exe 
     
    828851LINK32=link.exe 
    829852# ADD BASE LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
    830 # ADD LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
     853# ADD LINK32 $(CEx86Corelibc) commctrl.lib coredll.lib winsock.lib ws2.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 
    831854 
    832855!ENDIF  
     
    11091132 
    11101133DEP_CPP_PJSUA=\ 
     1134        "..\..\..\pjlib-util\include\pjlib-util.h"\ 
     1135        "..\..\..\pjlib-util\include\pjlib-util\errno.h"\ 
     1136        "..\..\..\pjlib-util\include\pjlib-util\getopt.h"\ 
     1137        "..\..\..\pjlib-util\include\pjlib-util\md5.h"\ 
     1138        "..\..\..\pjlib-util\include\pjlib-util\scanner.h"\ 
     1139        "..\..\..\pjlib-util\include\pjlib-util\scanner_cis_bitwise.h"\ 
     1140        "..\..\..\pjlib-util\include\pjlib-util\scanner_cis_uint.h"\ 
     1141        "..\..\..\pjlib-util\include\pjlib-util\stun.h"\ 
     1142        "..\..\..\pjlib-util\include\pjlib-util\xml.h"\ 
     1143        "..\..\..\pjlib\include\pj\addr_resolv.h"\ 
     1144        "..\..\..\pjlib\include\pj\array.h"\ 
     1145        "..\..\..\pjlib\include\pj\assert.h"\ 
     1146        "..\..\..\pjlib\include\pj\compat\assert.h"\ 
     1147        "..\..\..\pjlib\include\pj\compat\cc_gcc.h"\ 
     1148        "..\..\..\pjlib\include\pj\compat\cc_msvc.h"\ 
     1149        "..\..\..\pjlib\include\pj\compat\ctype.h"\ 
     1150        "..\..\..\pjlib\include\pj\compat\errno.h"\ 
     1151        "..\..\..\pjlib\include\pj\compat\high_precision.h"\ 
     1152        "..\..\..\pjlib\include\pj\compat\os_darwinos.h"\ 
     1153        "..\..\..\pjlib\include\pj\compat\os_linux.h"\ 
     1154        "..\..\..\pjlib\include\pj\compat\os_linux_kernel.h"\ 
     1155        "..\..\..\pjlib\include\pj\compat\os_palmos.h"\ 
     1156        "..\..\..\pjlib\include\pj\compat\os_rtems.h"\ 
     1157        "..\..\..\pjlib\include\pj\compat\os_sunos.h"\ 
     1158        "..\..\..\pjlib\include\pj\compat\os_win32.h"\ 
     1159        "..\..\..\pjlib\include\pj\compat\os_win32_wince.h"\ 
     1160        "..\..\..\pjlib\include\pj\compat\setjmp.h"\ 
     1161        "..\..\..\pjlib\include\pj\compat\size_t.h"\ 
     1162        "..\..\..\pjlib\include\pj\compat\string.h"\ 
     1163        "..\..\..\pjlib\include\pj\config.h"\ 
     1164        "..\..\..\pjlib\include\pj\config_site.h"\ 
     1165        "..\..\..\pjlib\include\pj\ctype.h"\ 
     1166        "..\..\..\pjlib\include\pj\errno.h"\ 
     1167        "..\..\..\pjlib\include\pj\except.h"\ 
     1168        "..\..\..\pjlib\include\pj\fifobuf.h"\ 
     1169        "..\..\..\pjlib\include\pj\file_access.h"\ 
     1170        "..\..\..\pjlib\include\pj\file_io.h"\ 
     1171        "..\..\..\pjlib\include\pj\guid.h"\ 
     1172        "..\..\..\pjlib\include\pj\hash.h"\ 
     1173        "..\..\..\pjlib\include\pj\ioqueue.h"\ 
     1174        "..\..\..\pjlib\include\pj\list.h"\ 
     1175        "..\..\..\pjlib\include\pj\list_i.h"\ 
     1176        "..\..\..\pjlib\include\pj\lock.h"\ 
     1177        "..\..\..\pjlib\include\pj\log.h"\ 
     1178        "..\..\..\pjlib\include\pj\os.h"\ 
     1179        "..\..\..\pjlib\include\pj\pool.h"\ 
     1180        "..\..\..\pjlib\include\pj\pool_alt.h"\ 
     1181        "..\..\..\pjlib\include\pj\pool_i.h"\ 
     1182        "..\..\..\pjlib\include\pj\rand.h"\ 
     1183        "..\..\..\pjlib\include\pj\rbtree.h"\ 
     1184        "..\..\..\pjlib\include\pj\sock.h"\ 
     1185        "..\..\..\pjlib\include\pj\sock_select.h"\ 
     1186        "..\..\..\pjlib\include\pj\string.h"\ 
     1187        "..\..\..\pjlib\include\pj\string_i.h"\ 
     1188        "..\..\..\pjlib\include\pj\timer.h"\ 
     1189        "..\..\..\pjlib\include\pj\types.h"\ 
     1190        "..\..\..\pjlib\include\pj\unicode.h"\ 
     1191        "..\..\..\pjlib\include\pjlib.h"\ 
     1192        "..\..\..\pjmedia\include\pjmedia-codec.h"\ 
     1193        "..\..\..\pjmedia\include\pjmedia-codec\config.h"\ 
     1194        "..\..\..\pjmedia\include\pjmedia-codec\gsm.h"\ 
     1195        "..\..\..\pjmedia\include\pjmedia-codec\ilbc.h"\ 
     1196        "..\..\..\pjmedia\include\pjmedia-codec\l16.h"\ 
     1197        "..\..\..\pjmedia\include\pjmedia-codec\speex.h"\ 
     1198        "..\..\..\pjmedia\include\pjmedia-codec\types.h"\ 
     1199        "..\..\..\pjmedia\include\pjmedia.h"\ 
     1200        "..\..\..\pjmedia\include\pjmedia\clock.h"\ 
     1201        "..\..\..\pjmedia\include\pjmedia\codec.h"\ 
     1202        "..\..\..\pjmedia\include\pjmedia\conference.h"\ 
     1203        "..\..\..\pjmedia\include\pjmedia\config.h"\ 
     1204        "..\..\..\pjmedia\include\pjmedia\endpoint.h"\ 
     1205        "..\..\..\pjmedia\include\pjmedia\errno.h"\ 
     1206        "..\..\..\pjmedia\include\pjmedia\g711.h"\ 
     1207        "..\..\..\pjmedia\include\pjmedia\jbuf.h"\ 
     1208        "..\..\..\pjmedia\include\pjmedia\master_port.h"\ 
     1209        "..\..\..\pjmedia\include\pjmedia\mem_port.h"\ 
     1210        "..\..\..\pjmedia\include\pjmedia\null_port.h"\ 
     1211        "..\..\..\pjmedia\include\pjmedia\plc.h"\ 
     1212        "..\..\..\pjmedia\include\pjmedia\port.h"\ 
     1213        "..\..\..\pjmedia\include\pjmedia\resample.h"\ 
     1214        "..\..\..\pjmedia\include\pjmedia\rtcp.h"\ 
     1215        "..\..\..\pjmedia\include\pjmedia\rtp.h"\ 
     1216        "..\..\..\pjmedia\include\pjmedia\sdp.h"\ 
     1217        "..\..\..\pjmedia\include\pjmedia\sdp_neg.h"\ 
     1218        "..\..\..\pjmedia\include\pjmedia\session.h"\ 
     1219        "..\..\..\pjmedia\include\pjmedia\silencedet.h"\ 
     1220        "..\..\..\pjmedia\include\pjmedia\sound.h"\ 
     1221        "..\..\..\pjmedia\include\pjmedia\sound_port.h"\ 
     1222        "..\..\..\pjmedia\include\pjmedia\splitcomb.h"\ 
     1223        "..\..\..\pjmedia\include\pjmedia\stream.h"\ 
     1224        "..\..\..\pjmedia\include\pjmedia\transport.h"\ 
     1225        "..\..\..\pjmedia\include\pjmedia\transport_udp.h"\ 
     1226        "..\..\..\pjmedia\include\pjmedia\types.h"\ 
     1227        "..\..\..\pjmedia\include\pjmedia\wav_port.h"\ 
     1228        "..\..\..\pjmedia\include\pjmedia\wave.h"\ 
     1229        "..\..\..\pjsip\include\pjsip-simple\evsub.h"\ 
     1230        "..\..\..\pjsip\include\pjsip-simple\iscomposing.h"\ 
     1231        "..\..\..\pjsip\include\pjsip-simple\pidf.h"\ 
     1232        "..\..\..\pjsip\include\pjsip-simple\presence.h"\ 
     1233        "..\..\..\pjsip\include\pjsip-simple\types.h"\ 
     1234        "..\..\..\pjsip\include\pjsip-simple\xpidf.h"\ 
     1235        "..\..\..\pjsip\include\pjsip-ua\sip_inv.h"\ 
     1236        "..\..\..\pjsip\include\pjsip-ua\sip_regc.h"\ 
     1237        "..\..\..\pjsip\include\pjsip-ua\sip_xfer.h"\ 
     1238        "..\..\..\pjsip\include\pjsip.h"\ 
     1239        "..\..\..\pjsip\include\pjsip\sip_auth.h"\ 
     1240        "..\..\..\pjsip\include\pjsip\sip_auth_msg.h"\ 
     1241        "..\..\..\pjsip\include\pjsip\sip_config.h"\ 
     1242        "..\..\..\pjsip\include\pjsip\sip_dialog.h"\ 
     1243        "..\..\..\pjsip\include\pjsip\sip_endpoint.h"\ 
     1244        "..\..\..\pjsip\include\pjsip\sip_errno.h"\ 
     1245        "..\..\..\pjsip\include\pjsip\sip_event.h"\ 
     1246        "..\..\..\pjsip\include\pjsip\sip_module.h"\ 
     1247        "..\..\..\pjsip\include\pjsip\sip_msg.h"\ 
     1248        "..\..\..\pjsip\include\pjsip\sip_parser.h"\ 
     1249        "..\..\..\pjsip\include\pjsip\sip_resolve.h"\ 
     1250        "..\..\..\pjsip\include\pjsip\sip_tel_uri.h"\ 
     1251        "..\..\..\pjsip\include\pjsip\sip_transaction.h"\ 
     1252        "..\..\..\pjsip\include\pjsip\sip_transport.h"\ 
     1253        "..\..\..\pjsip\include\pjsip\sip_transport_loop.h"\ 
     1254        "..\..\..\pjsip\include\pjsip\sip_transport_tcp.h"\ 
     1255        "..\..\..\pjsip\include\pjsip\sip_transport_udp.h"\ 
     1256        "..\..\..\pjsip\include\pjsip\sip_types.h"\ 
     1257        "..\..\..\pjsip\include\pjsip\sip_ua_layer.h"\ 
     1258        "..\..\..\pjsip\include\pjsip\sip_uri.h"\ 
     1259        "..\..\..\pjsip\include\pjsip\sip_util.h"\ 
     1260        "..\..\..\pjsip\include\pjsip_simple.h"\ 
     1261        "..\..\..\pjsip\include\pjsip_ua.h"\ 
     1262        "..\..\..\pjsip\include\pjsua-lib\pjsua.h"\ 
    11111263        ".\pjsua_wince.h"\ 
    11121264        ".\StdAfx.h"\ 
     
    11161268 
    11171269DEP_CPP_PJSUA=\ 
     1270        "..\..\..\pjlib-util\include\pjlib-util.h"\ 
     1271        "..\..\..\pjlib-util\include\pjlib-util\errno.h"\ 
     1272        "..\..\..\pjlib-util\include\pjlib-util\getopt.h"\ 
     1273        "..\..\..\pjlib-util\include\pjlib-util\md5.h"\ 
     1274        "..\..\..\pjlib-util\include\pjlib-util\scanner.h"\ 
     1275        "..\..\..\pjlib-util\include\pjlib-util\scanner_cis_bitwise.h"\ 
     1276        "..\..\..\pjlib-util\include\pjlib-util\scanner_cis_uint.h"\ 
     1277        "..\..\..\pjlib-util\include\pjlib-util\stun.h"\ 
     1278        "..\..\..\pjlib-util\include\pjlib-util\xml.h"\ 
     1279        "..\..\..\pjlib\include\pj\addr_resolv.h"\ 
     1280        "..\..\..\pjlib\include\pj\array.h"\ 
     1281        "..\..\..\pjlib\include\pj\assert.h"\ 
     1282        "..\..\..\pjlib\include\pj\compat\assert.h"\ 
     1283        "..\..\..\pjlib\include\pj\compat\cc_gcc.h"\ 
     1284        "..\..\..\pjlib\include\pj\compat\cc_msvc.h"\ 
     1285        "..\..\..\pjlib\include\pj\compat\ctype.h"\ 
     1286        "..\..\..\pjlib\include\pj\compat\errno.h"\ 
     1287        "..\..\..\pjlib\include\pj\compat\high_precision.h"\ 
     1288        "..\..\..\pjlib\include\pj\compat\os_darwinos.h"\ 
     1289        "..\..\..\pjlib\include\pj\compat\os_linux.h"\ 
     1290        "..\..\..\pjlib\include\pj\compat\os_linux_kernel.h"\ 
     1291        "..\..\..\pjlib\include\pj\compat\os_palmos.h"\ 
     1292        "..\..\..\pjlib\include\pj\compat\os_rtems.h"\ 
     1293        "..\..\..\pjlib\include\pj\compat\os_sunos.h"\ 
     1294        "..\..\..\pjlib\include\pj\compat\os_win32.h"\ 
     1295        "..\..\..\pjlib\include\pj\compat\os_win32_wince.h"\ 
     1296        "..\..\..\pjlib\include\pj\compat\setjmp.h"\ 
     1297        "..\..\..\pjlib\include\pj\compat\size_t.h"\ 
     1298        "..\..\..\pjlib\include\pj\compat\string.h"\ 
     1299        "..\..\..\pjlib\include\pj\config.h"\ 
     1300        "..\..\..\pjlib\include\pj\config_site.h"\ 
     1301        "..\..\..\pjlib\include\pj\ctype.h"\ 
     1302        "..\..\..\pjlib\include\pj\errno.h"\ 
     1303        "..\..\..\pjlib\include\pj\except.h"\ 
     1304        "..\..\..\pjlib\include\pj\fifobuf.h"\ 
     1305        "..\..\..\pjlib\include\pj\file_access.h"\ 
     1306        "..\..\..\pjlib\include\pj\file_io.h"\ 
     1307        "..\..\..\pjlib\include\pj\guid.h"\ 
     1308        "..\..\..\pjlib\include\pj\hash.h"\ 
     1309        "..\..\..\pjlib\include\pj\ioqueue.h"\ 
     1310        "..\..\..\pjlib\include\pj\list.h"\ 
     1311        "..\..\..\pjlib\include\pj\list_i.h"\ 
     1312        "..\..\..\pjlib\include\pj\lock.h"\ 
     1313        "..\..\..\pjlib\include\pj\log.h"\ 
     1314        "..\..\..\pjlib\include\pj\os.h"\ 
     1315        "..\..\..\pjlib\include\pj\pool.h"\ 
     1316        "..\..\..\pjlib\include\pj\pool_alt.h"\ 
     1317        "..\..\..\pjlib\include\pj\pool_i.h"\ 
     1318        "..\..\..\pjlib\include\pj\rand.h"\ 
     1319        "..\..\..\pjlib\include\pj\rbtree.h"\ 
     1320        "..\..\..\pjlib\include\pj\sock.h"\ 
     1321        "..\..\..\pjlib\include\pj\sock_select.h"\ 
     1322        "..\..\..\pjlib\include\pj\string.h"\ 
     1323        "..\..\..\pjlib\include\pj\string_i.h"\ 
     1324        "..\..\..\pjlib\include\pj\timer.h"\ 
     1325        "..\..\..\pjlib\include\pj\types.h"\ 
     1326        "..\..\..\pjlib\include\pj\unicode.h"\ 
     1327        "..\..\..\pjlib\include\pjlib.h"\ 
     1328        "..\..\..\pjmedia\include\pjmedia-codec.h"\ 
     1329        "..\..\..\pjmedia\include\pjmedia-codec\config.h"\ 
     1330        "..\..\..\pjmedia\include\pjmedia-codec\gsm.h"\ 
     1331        "..\..\..\pjmedia\include\pjmedia-codec\ilbc.h"\ 
     1332        "..\..\..\pjmedia\include\pjmedia-codec\l16.h"\ 
     1333        "..\..\..\pjmedia\include\pjmedia-codec\speex.h"\ 
     1334        "..\..\..\pjmedia\include\pjmedia-codec\types.h"\ 
     1335        "..\..\..\pjmedia\include\pjmedia.h"\ 
     1336        "..\..\..\pjmedia\include\pjmedia\clock.h"\ 
     1337        "..\..\..\pjmedia\include\pjmedia\codec.h"\ 
     1338        "..\..\..\pjmedia\include\pjmedia\conference.h"\ 
     1339        "..\..\..\pjmedia\include\pjmedia\config.h"\ 
     1340        "..\..\..\pjmedia\include\pjmedia\endpoint.h"\ 
     1341        "..\..\..\pjmedia\include\pjmedia\errno.h"\ 
     1342        "..\..\..\pjmedia\include\pjmedia\g711.h"\ 
     1343        "..\..\..\pjmedia\include\pjmedia\jbuf.h"\ 
     1344        "..\..\..\pjmedia\include\pjmedia\master_port.h"\ 
     1345        "..\..\..\pjmedia\include\pjmedia\mem_port.h"\ 
     1346        "..\..\..\pjmedia\include\pjmedia\null_port.h"\ 
     1347        "..\..\..\pjmedia\include\pjmedia\plc.h"\ 
     1348        "..\..\..\pjmedia\include\pjmedia\port.h"\ 
     1349        "..\..\..\pjmedia\include\pjmedia\resample.h"\ 
     1350        "..\..\..\pjmedia\include\pjmedia\rtcp.h"\ 
     1351        "..\..\..\pjmedia\include\pjmedia\rtp.h"\ 
     1352        "..\..\..\pjmedia\include\pjmedia\sdp.h"\ 
     1353        "..\..\..\pjmedia\include\pjmedia\sdp_neg.h"\ 
     1354        "..\..\..\pjmedia\include\pjmedia\session.h"\ 
     1355        "..\..\..\pjmedia\include\pjmedia\silencedet.h"\ 
     1356        "..\..\..\pjmedia\include\pjmedia\sound.h"\ 
     1357        "..\..\..\pjmedia\include\pjmedia\sound_port.h"\ 
     1358        "..\..\..\pjmedia\include\pjmedia\splitcomb.h"\ 
     1359        "..\..\..\pjmedia\include\pjmedia\stream.h"\ 
     1360        "..\..\..\pjmedia\include\pjmedia\transport.h"\ 
     1361        "..\..\..\pjmedia\include\pjmedia\transport_udp.h"\ 
     1362        "..\..\..\pjmedia\include\pjmedia\types.h"\ 
     1363        "..\..\..\pjmedia\include\pjmedia\wav_port.h"\ 
     1364        "..\..\..\pjmedia\include\pjmedia\wave.h"\ 
     1365        "..\..\..\pjsip\include\pjsip-simple\evsub.h"\ 
     1366        "..\..\..\pjsip\include\pjsip-simple\iscomposing.h"\ 
     1367        "..\..\..\pjsip\include\pjsip-simple\pidf.h"\ 
     1368        "..\..\..\pjsip\include\pjsip-simple\presence.h"\ 
     1369        "..\..\..\pjsip\include\pjsip-simple\types.h"\ 
     1370        "..\..\..\pjsip\include\pjsip-simple\xpidf.h"\ 
     1371        "..\..\..\pjsip\include\pjsip-ua\sip_inv.h"\ 
     1372        "..\..\..\pjsip\include\pjsip-ua\sip_regc.h"\ 
     1373        "..\..\..\pjsip\include\pjsip-ua\sip_xfer.h"\ 
     1374        "..\..\..\pjsip\include\pjsip.h"\ 
     1375        "..\..\..\pjsip\include\pjsip\sip_auth.h"\ 
     1376        "..\..\..\pjsip\include\pjsip\sip_auth_msg.h"\ 
     1377        "..\..\..\pjsip\include\pjsip\sip_config.h"\ 
     1378        "..\..\..\pjsip\include\pjsip\sip_dialog.h"\ 
     1379        "..\..\..\pjsip\include\pjsip\sip_endpoint.h"\ 
     1380        "..\..\..\pjsip\include\pjsip\sip_errno.h"\ 
     1381        "..\..\..\pjsip\include\pjsip\sip_event.h"\ 
     1382        "..\..\..\pjsip\include\pjsip\sip_module.h"\ 
     1383        "..\..\..\pjsip\include\pjsip\sip_msg.h"\ 
     1384        "..\..\..\pjsip\include\pjsip\sip_parser.h"\ 
     1385        "..\..\..\pjsip\include\pjsip\sip_resolve.h"\ 
     1386        "..\..\..\pjsip\include\pjsip\sip_tel_uri.h"\ 
     1387        "..\..\..\pjsip\include\pjsip\sip_transaction.h"\ 
     1388        "..\..\..\pjsip\include\pjsip\sip_transport.h"\ 
     1389        "..\..\..\pjsip\include\pjsip\sip_transport_loop.h"\ 
     1390        "..\..\..\pjsip\include\pjsip\sip_transport_tcp.h"\ 
     1391        "..\..\..\pjsip\include\pjsip\sip_transport_udp.h"\ 
     1392        "..\..\..\pjsip\include\pjsip\sip_types.h"\ 
     1393        "..\..\..\pjsip\include\pjsip\sip_ua_layer.h"\ 
     1394        "..\..\..\pjsip\include\pjsip\sip_uri.h"\ 
     1395        "..\..\..\pjsip\include\pjsip\sip_util.h"\ 
     1396        "..\..\..\pjsip\include\pjsip_simple.h"\ 
     1397        "..\..\..\pjsip\include\pjsip_ua.h"\ 
     1398        "..\..\..\pjsip\include\pjsua-lib\pjsua.h"\ 
    11181399        ".\pjsua_wince.h"\ 
    11191400        ".\StdAfx.h"\ 
  • pjproject/trunk/pjsip-apps/src/samples/aectest.c

    r646 r648  
    161161    pjmedia_bidirectional_port_create(pool, play_port, rec_port, &bidir_port); 
    162162 
    163     /* Create AEC port */ 
    164     if (0) { 
    165         pjmedia_aec_port_create(pool, bidir_port,  
    166                                 bidir_port->info.clock_rate * 200 / 1000, 
    167                                 &bidir_port); 
    168     } 
    169  
    170163    /* Create sound device. */ 
    171164    status = pjmedia_snd_port_create(pool, -1, -1,  
     
    181174 
    182175 
     176    /* Customize AEC */ 
     177    pjmedia_snd_port_set_aec(snd, pool, 800); 
     178 
    183179    /* Connect sound to the port */ 
    184180    pjmedia_snd_port_connect(snd, bidir_port); 
  • pjproject/trunk/pjsip/include/pjsua-lib/pjsua.h

    r643 r648  
    21532153    cfg->quality = 6; 
    21542154    cfg->ilbc_mode = 20; 
    2155     cfg->ec_tail_len = 0; 
     2155    cfg->ec_tail_len = 500; 
    21562156} 
    21572157 
     
    24982498 
    24992499 
     2500/** 
     2501 * Configure the AEC settings of the sound port. 
     2502 * 
     2503 * @param tail_ms       The tail length, in miliseconds. Set to zero to 
     2504 *                      disable AEC. 
     2505 * 
     2506 * @return              PJ_SUCCESS on success. 
     2507 */ 
     2508PJ_DECL(pj_status_t) pjsua_set_aec(unsigned tail_ms); 
     2509 
     2510 
     2511/** 
     2512 * Get current AEC tail length. 
     2513 * 
     2514 * @param p_tail_ms     Pointer to receive the tail length, in miliseconds.  
     2515 *                      If AEC is disabled, the value will be zero. 
     2516 * 
     2517 * @return              PJ_SUCCESS on success. 
     2518 */ 
     2519PJ_DECL(pj_status_t) pjsua_get_aec(unsigned *p_tail_ms); 
     2520 
     2521 
     2522 
    25002523/***************************************************************************** 
    25012524 * Codecs. 
  • pjproject/trunk/pjsip/include/pjsua-lib/pjsua_internal.h

    r642 r648  
    205205    int                  cap_dev;   /**< Capture device ID.             */ 
    206206    int                  play_dev;  /**< Playback device ID.            */ 
    207     pjmedia_port        *aec_port;  /**< AEC port to conf bridge.       */ 
    208207    pj_bool_t            no_snd;    /**< No sound (app will manage it)  */ 
    209208    pjmedia_snd_port    *snd_port;  /**< Sound port.                    */ 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r643 r648  
    969969    pj_assert(conf_port != NULL); 
    970970 
    971     /* Create AEC if it's not created */ 
    972     if (pjsua_var.aec_port == NULL && pjsua_var.media_cfg.ec_tail_len) { 
    973         status = pjmedia_aec_port_create(pjsua_var.pool, conf_port, 
    974                                          conf_port->info.clock_rate *  
    975                                             pjsua_var.media_cfg.ec_tail_len / 
    976                                             1000, 
    977                                          &pjsua_var.aec_port); 
    978         if (status != PJ_SUCCESS) { 
    979             pjsua_perror(THIS_FILE, "Unable to create AEC port", status); 
    980             pjmedia_snd_port_destroy(pjsua_var.snd_port); 
    981             pjsua_var.snd_port = NULL; 
    982             return status; 
    983         } 
    984     } 
    985  
    986     /* Connect to the AEC port */ 
    987     status = pjmedia_snd_port_connect(pjsua_var.snd_port,  
    988                                       pjsua_var.media_cfg.ec_tail_len ?  
    989                                         pjsua_var.aec_port : conf_port ); 
    990     if (status != PJ_SUCCESS) { 
    991         pjsua_perror(THIS_FILE, "Unable to connect conference port to " 
    992                                 "sound device", status); 
    993         pjmedia_snd_port_destroy(pjsua_var.snd_port); 
    994         pjsua_var.snd_port = NULL; 
    995         return status; 
    996     } 
     971    /* Set AEC */ 
     972    pjmedia_snd_port_set_aec(pjsua_var.snd_port, pjsua_var.pool,  
     973                             pjsua_var.media_cfg.ec_tail_len); 
    997974 
    998975    /* Save the device IDs */ 
     
    10541031 
    10551032 
     1033/* 
     1034 * Configure the AEC settings of the sound port. 
     1035 */ 
     1036PJ_DEF(pj_status_t) pjsua_set_aec(unsigned tail_ms) 
     1037{ 
     1038    pjsua_var.media_cfg.ec_tail_len = tail_ms; 
     1039 
     1040    if (pjsua_var.snd_port) 
     1041        return pjmedia_snd_port_set_aec(pjsua_var.snd_port, pjsua_var.pool, 
     1042                                        tail_ms); 
     1043     
     1044    return PJ_SUCCESS; 
     1045} 
     1046 
     1047 
     1048/* 
     1049 * Get current AEC tail length. 
     1050 */ 
     1051PJ_DEF(pj_status_t) pjsua_get_aec(unsigned *p_tail_ms) 
     1052{ 
     1053    *p_tail_ms = pjsua_var.media_cfg.ec_tail_len; 
     1054    return PJ_SUCCESS; 
     1055} 
     1056 
    10561057 
    10571058/***************************************************************************** 
Note: See TracChangeset for help on using the changeset viewer.