Ignore:
Timestamp:
Mar 11, 2011 6:57:24 AM (13 years ago)
Author:
ming
Message:

Fixed #1204: Support for refreshing audio device list.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r3383 r3438  
    3737 
    3838/* Open sound dev */ 
    39 static pj_status_t open_snd_dev(pjmedia_aud_param *param); 
     39static pj_status_t open_snd_dev(pjmedia_snd_port_param *param); 
    4040/* Close existing sound device */ 
    4141static void close_snd_dev(void); 
     
    19761976        if (need_reopen) { 
    19771977            if (pjsua_var.cap_dev != NULL_SND_DEV_ID) { 
    1978                 pjmedia_aud_param param; 
     1978                pjmedia_snd_port_param param; 
    19791979 
    19801980                /* Create parameter based on peer info */ 
    1981                 status = create_aud_param(&param, pjsua_var.cap_dev,  
     1981                status = create_aud_param(&param.base, pjsua_var.cap_dev,  
    19821982                                          pjsua_var.play_dev, 
    19831983                                          peer_info.clock_rate, 
     
    19921992                /* And peer format */ 
    19931993                if (peer_info.format.id != PJMEDIA_FORMAT_PCM) { 
    1994                     param.flags |= PJMEDIA_AUD_DEV_CAP_EXT_FORMAT; 
    1995                     param.ext_fmt = peer_info.format; 
     1994                    param.base.flags |= PJMEDIA_AUD_DEV_CAP_EXT_FORMAT; 
     1995                    param.base.ext_fmt = peer_info.format; 
    19961996                } 
    19971997 
     1998                param.options = 0; 
    19981999                status = open_snd_dev(&param); 
    19992000                if (status != PJ_SUCCESS) { 
     
    26662667 
    26672668/* Open sound device with the setting. */ 
    2668 static pj_status_t open_snd_dev(pjmedia_aud_param *param) 
     2669static pj_status_t open_snd_dev(pjmedia_snd_port_param *param) 
    26692670{ 
    26702671    pjmedia_port *conf_port; 
     
    26742675 
    26752676    /* Check if NULL sound device is used */ 
    2676     if (NULL_SND_DEV_ID==param->rec_id || NULL_SND_DEV_ID==param->play_id) { 
     2677    if (NULL_SND_DEV_ID==param->base.rec_id || 
     2678        NULL_SND_DEV_ID==param->base.play_id) 
     2679    { 
    26772680        return pjsua_set_null_snd_dev(); 
    26782681    } 
     
    26872690 
    26882691    PJ_LOG(4,(THIS_FILE, "Opening sound device %s@%d/%d/%dms", 
    2689               get_fmt_name(param->ext_fmt.id), 
    2690               param->clock_rate, param->channel_count, 
    2691               param->samples_per_frame / param->channel_count * 1000 / 
    2692               param->clock_rate)); 
     2692              get_fmt_name(param->base.ext_fmt.id), 
     2693              param->base.clock_rate, param->base.channel_count, 
     2694              param->base.samples_per_frame / param->base.channel_count * 
     2695              1000 / param->base.clock_rate)); 
    26932696 
    26942697    status = pjmedia_snd_port_create2( pjsua_var.snd_pool,  
    2695                                        param,  &pjsua_var.snd_port); 
     2698                                       param, &pjsua_var.snd_port); 
    26962699    if (status != PJ_SUCCESS) 
    26972700        return status; 
     
    27052708     */ 
    27062709    if (!pjsua_var.is_mswitch && 
    2707         param->ext_fmt.id == PJMEDIA_FORMAT_PCM && 
    2708         conf_port->info.clock_rate != param->clock_rate) 
     2710        param->base.ext_fmt.id == PJMEDIA_FORMAT_PCM && 
     2711        conf_port->info.clock_rate != param->base.clock_rate) 
    27092712    { 
    27102713        pjmedia_port *resample_port; 
     
    27222725        status = pjmedia_resample_port_create(pjsua_var.snd_pool,  
    27232726                                              conf_port, 
    2724                                               param->clock_rate, 
     2727                                              param->base.clock_rate, 
    27252728                                              resample_opt,  
    27262729                                              &resample_port); 
     
    27422745     */ 
    27432746    if (pjsua_var.is_mswitch) { 
    2744         pj_memcpy(&conf_port->info.format, &param->ext_fmt,  
     2747        pj_memcpy(&conf_port->info.format, &param->base.ext_fmt,  
    27452748                  sizeof(conf_port->info.format)); 
    2746         conf_port->info.clock_rate = param->clock_rate; 
    2747         conf_port->info.samples_per_frame = param->samples_per_frame; 
    2748         conf_port->info.channel_count = param->channel_count; 
     2749        conf_port->info.clock_rate = param->base.clock_rate; 
     2750        conf_port->info.samples_per_frame = param->base.samples_per_frame; 
     2751        conf_port->info.channel_count = param->base.channel_count; 
    27492752        conf_port->info.bits_per_sample = 16; 
    27502753    } 
     
    27622765 
    27632766    /* Save the device IDs */ 
    2764     pjsua_var.cap_dev = param->rec_id; 
    2765     pjsua_var.play_dev = param->play_id; 
     2767    pjsua_var.cap_dev = param->base.rec_id; 
     2768    pjsua_var.play_dev = param->base.play_id; 
    27662769 
    27672770    /* Update sound device name. */ 
     
    27782781 
    27792782        if (status==PJ_SUCCESS) { 
    2780             if (param->clock_rate != pjsua_var.media_cfg.clock_rate) { 
     2783            if (param->base.clock_rate != pjsua_var.media_cfg.clock_rate) { 
    27812784                char tmp_buf[128]; 
    27822785                int tmp_buf_len = sizeof(tmp_buf); 
     
    27852788                                               "%s (%dKHz)", 
    27862789                                               rec_info.name,  
    2787                                                param->clock_rate/1000); 
     2790                                               param->base.clock_rate/1000); 
    27882791                pj_strset(&tmp, tmp_buf, tmp_buf_len); 
    27892792                pjmedia_conf_set_port0_name(pjsua_var.mconf, &tmp);  
     
    28842887    /* Attempts to open the sound device with different clock rates */ 
    28852888    for (i=0; i<alt_cr_cnt; ++i) { 
    2886         pjmedia_aud_param param; 
     2889        pjmedia_snd_port_param param; 
    28872890        unsigned samples_per_frame; 
    28882891 
     
    28912894                            pjsua_var.media_cfg.audio_frame_ptime * 
    28922895                            pjsua_var.media_cfg.channel_count / 1000; 
    2893         status = create_aud_param(&param, capture_dev, playback_dev,  
     2896        status = create_aud_param(&param.base, capture_dev, playback_dev,  
    28942897                                  alt_cr[i], pjsua_var.media_cfg.channel_count, 
    28952898                                  samples_per_frame, 16); 
     
    28982901 
    28992902        /* Open! */ 
     2903        param.options = 0; 
    29002904        status = open_snd_dev(&param); 
    29012905        if (status == PJ_SUCCESS) 
Note: See TracChangeset for help on using the changeset viewer.