Changeset 2498


Ignore:
Timestamp:
Mar 10, 2009 1:32:09 PM (15 years ago)
Author:
nanang
Message:
  • updated APS set_cap() to store output volume setting into stream param.
  • updated APS get_param() to return actual volume setting.
  • updated symbian_ua application to use the new pjsua-lib APIs: snd_set/get_setting().
Location:
pjproject/branches/projects/aps-direct
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/aps-direct/pjmedia/src/pjmedia-audiodev/symb_aps_dev.cpp

    r2492 r2498  
    11311131    af->dev_info.default_samples_per_sec = 8000; 
    11321132    af->dev_info.caps = PJMEDIA_AUD_DEV_CAP_EXT_FORMAT | 
    1133                         PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING | 
     1133                        //PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING | 
    11341134                        PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING | 
    11351135                        PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE | 
     
    11411141    af->dev_info.output_count = 1; 
    11421142 
    1143     af->dev_info.ext_fmt_cnt = 6; 
     1143    af->dev_info.ext_fmt_cnt = 5; 
     1144 
    11441145    af->dev_info.ext_fmt[0].id = PJMEDIA_FORMAT_AMR; 
     1146    af->dev_info.ext_fmt[0].bitrate = 7400; 
     1147    af->dev_info.ext_fmt[0].vad = PJ_TRUE; 
     1148 
    11451149    af->dev_info.ext_fmt[1].id = PJMEDIA_FORMAT_G729; 
     1150    af->dev_info.ext_fmt[1].bitrate = 8000; 
     1151    af->dev_info.ext_fmt[1].vad = PJ_FALSE; 
     1152 
    11461153    af->dev_info.ext_fmt[2].id = PJMEDIA_FORMAT_ILBC; 
     1154    af->dev_info.ext_fmt[2].bitrate = 13333; 
     1155    af->dev_info.ext_fmt[2].vad = PJ_TRUE; 
     1156 
    11471157    af->dev_info.ext_fmt[3].id = PJMEDIA_FORMAT_PCMU; 
     1158    af->dev_info.ext_fmt[3].bitrate = 64000; 
     1159    af->dev_info.ext_fmt[3].vad = PJ_FALSE; 
     1160 
    11481161    af->dev_info.ext_fmt[4].id = PJMEDIA_FORMAT_PCMA; 
    1149     af->dev_info.ext_fmt[5].id = PJMEDIA_FORMAT_L16; 
     1162    af->dev_info.ext_fmt[4].bitrate = 64000; 
     1163    af->dev_info.ext_fmt[4].vad = PJ_FALSE; 
    11501164     
    11511165    PJ_LOG(4, (THIS_FILE, "APS initialized")); 
     
    12071221    param->bits_per_sample = BITS_PER_SAMPLE; 
    12081222    param->flags = PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE; 
    1209     param->ext_fmt.id = PJMEDIA_FORMAT_L16; 
    12101223    param->output_route = PJMEDIA_AUD_DEV_ROUTE_EARPIECE; 
    12111224 
     
    13591372 
    13601373    pj_memcpy(pi, &strm->param, sizeof(*pi)); 
     1374 
     1375    /* Update the output volume setting */ 
     1376    if (stream_get_cap(s, PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING, 
     1377                       &pi->output_vol) == PJ_SUCCESS) 
     1378    { 
     1379        pi->flags |= PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING; 
     1380    } 
    13611381     
    13621382    return PJ_SUCCESS; 
     
    13801400        } 
    13811401        break; 
     1402     
     1403    /* There is a case that GetMaxGain() stucks, e.g: in N95. */  
     1404    /* 
    13821405    case PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING: 
    13831406        if (strm->param.dir & PJMEDIA_DIR_CAPTURE) { 
     
    13951418        } 
    13961419        break; 
     1420    */ 
     1421 
    13971422    case PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING: 
    13981423        if (strm->param.dir & PJMEDIA_DIR_PLAYBACK) { 
     
    14531478        } 
    14541479        break; 
     1480 
     1481    /* There is a case that GetMaxGain() stucks, e.g: in N95. */  
     1482    /* 
    14551483    case PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING: 
    14561484        if (strm->param.dir & PJMEDIA_DIR_CAPTURE) { 
     
    14671495                status = PJMEDIA_EAUD_NOTREADY; 
    14681496            } 
    1469         } 
    1470         break; 
     1497            if (status == PJ_SUCCESS) 
     1498                strm->param.input_vol = *(unsigned*)pval; 
     1499        } 
     1500        break; 
     1501    */ 
     1502 
    14711503    case PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING: 
    1472         if (strm->param.dir & PJMEDIA_DIR_CAPTURE) { 
     1504        if (strm->param.dir & PJMEDIA_DIR_PLAYBACK) { 
    14731505            PJ_ASSERT_RETURN(strm->engine, PJ_EINVAL); 
    14741506             
     
    14831515                status = PJMEDIA_EAUD_NOTREADY; 
    14841516            } 
     1517            if (status == PJ_SUCCESS) 
     1518                strm->param.output_vol = *(unsigned*)pval; 
    14851519        } 
    14861520        break; 
  • pjproject/branches/projects/aps-direct/pjsip-apps/src/symbian_ua/ua.cpp

    r2491 r2498  
    535535    case 't': 
    536536        { 
    537             pjmedia_aud_stream *aud_stream = pjsua_get_aud_stream(); 
    538  
    539             if (aud_stream) { 
    540                 pjmedia_aud_dev_route route; 
    541                 pj_status_t status; 
    542                  
    543                 status = pjmedia_aud_stream_get_cap( 
    544                                             aud_stream, 
    545                                             PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE, 
    546                                             &route); 
    547                 if (status == PJ_SUCCESS) { 
    548                     if (route == PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER) 
    549                         route = PJMEDIA_AUD_DEV_ROUTE_EARPIECE; 
    550                     else 
    551                         route = PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER; 
    552  
    553                     status = pjmedia_aud_stream_set_cap( 
    554                                         aud_stream, 
    555                                         PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE, 
    556                                         &route); 
    557                 } 
    558  
    559                 if (status != PJ_SUCCESS) 
    560                     pjsua_perror(THIS_FILE, "Error switch audio route", status); 
    561             } else { 
    562                 PJ_LOG(3,(THIS_FILE, "No active sound device.")); 
     537            pjmedia_aud_dev_route route; 
     538            pj_status_t status; 
     539             
     540            status = pjsua_snd_get_setting(PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE,  
     541                                           &route); 
     542             
     543            if (status == PJ_SUCCESS) { 
     544                if (route == PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER) 
     545                    route = PJMEDIA_AUD_DEV_ROUTE_EARPIECE; 
     546                else 
     547                    route = PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER; 
     548 
     549                status = pjsua_snd_set_setting( 
     550                                    PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE, 
     551                                    &route, PJ_TRUE); 
    563552            } 
     553 
     554            if (status != PJ_SUCCESS) 
     555                pjsua_perror(THIS_FILE, "Error switch audio route", status); 
    564556        } 
    565557        break; 
Note: See TracChangeset for help on using the changeset viewer.