diff --git a/NEWS b/NEWS index 826dbc65b..68bbd71fa 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -linphone-3.3.2 -- June 23, 2010 +linphone-3.3.2 -- June 25, 2010 * fix crash when setting firewall address in gtk interface * fix crash while closing video window on windows * fix un-sent BYE message in some rare cases. diff --git a/console/shell.c b/console/shell.c index 0f0906439..e61a6e514 100644 --- a/console/shell.c +++ b/console/shell.c @@ -142,7 +142,11 @@ static void spawn_linphonec(int argc, char *argv[]){ } args[j++]=NULL; +#ifdef __uClinux__ pid = vfork(); +#else + pid = fork(); +#endif if (pid < 0){ fprintf(stderr,"Could not fork\n"); exit(-1); diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index ccc40a810..5e0555bc7 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -2174,8 +2174,8 @@ void linphone_core_init_media_streams(LinphoneCore *lc, LinphoneCall *call){ const char *type=lp_config_get_string(lc->config,"sound","el_type","mic"); if (strcasecmp(type,"mic")==0) audio_stream_enable_echo_limiter(lc->audiostream,ELControlMic); - else if (strcasecmp(type,"speaker")==0) - audio_stream_enable_echo_limiter(lc->audiostream,ELControlSpeaker); + else if (strcasecmp(type,"full")==0) + audio_stream_enable_echo_limiter(lc->audiostream,ELControlFull); } audio_stream_enable_gain_control(lc->audiostream,TRUE); if (linphone_core_echo_cancellation_enabled(lc)){ @@ -2241,9 +2241,10 @@ static void parametrize_equalizer(LinphoneCore *lc, AudioStream *st){ static void post_configure_audio_streams(LinphoneCore *lc){ AudioStream *st=lc->audiostream; - float gain=lp_config_get_float(lc->config,"sound","mic_gain",-1); - if (gain!=-1) - audio_stream_set_mic_gain(st,gain); + float mic_gain=lp_config_get_float(lc->config,"sound","mic_gain",-1); + float thres = 0; + if (mic_gain!=-1) + audio_stream_set_mic_gain(st,mic_gain); lc->audio_muted=FALSE; float recv_gain = lc->sound_conf.soft_play_lev; if (recv_gain != 0) { @@ -2251,36 +2252,34 @@ static void post_configure_audio_streams(LinphoneCore *lc){ } if (linphone_core_echo_limiter_enabled(lc)){ float speed=lp_config_get_float(lc->config,"sound","el_speed",-1); - float thres=lp_config_get_float(lc->config,"sound","el_thres",-1); + thres=lp_config_get_float(lc->config,"sound","el_thres",-1); float force=lp_config_get_float(lc->config,"sound","el_force",-1); int sustain=lp_config_get_int(lc->config,"sound","el_sustain",-1); MSFilter *f=NULL; - if (st->el_type==ELControlMic){ + if (st->el_type!=ELInactive){ f=st->volsend; if (speed==-1) speed=0.03; - if (force==-1) force=10; - } - else if (st->el_type==ELControlSpeaker){ - f=st->volrecv; - if (speed==-1) speed=0.02; - if (force==-1) force=5; - } - if (speed!=-1) + if (force==-1) force=25; ms_filter_call_method(f,MS_VOLUME_SET_EA_SPEED,&speed); + ms_filter_call_method(f,MS_VOLUME_SET_EA_FORCE,&force); if (thres!=-1) ms_filter_call_method(f,MS_VOLUME_SET_EA_THRESHOLD,&thres); - if (force!=-1) - ms_filter_call_method(f,MS_VOLUME_SET_EA_FORCE,&force); if (sustain!=-1) ms_filter_call_method(f,MS_VOLUME_SET_EA_SUSTAIN,&sustain); - } - if (st->volsend){ + } float ng_thres=lp_config_get_float(lc->config,"sound","ng_thres",0.05); float ng_floorgain=lp_config_get_float(lc->config,"sound","ng_floorgain",0); + if (st->volsend){ ms_filter_call_method(st->volsend,MS_VOLUME_SET_NOISE_GATE_THRESHOLD,&ng_thres); ms_filter_call_method(st->volsend,MS_VOLUME_SET_NOISE_GATE_FLOORGAIN,&ng_floorgain); } + if (st->volrecv){ + /* parameters for a limited noise-gate effect, using echo limiter threshold */ + float floorgain = 1/mic_gain; + ms_filter_call_method(st->volrecv,MS_VOLUME_SET_NOISE_GATE_THRESHOLD,&thres); + ms_filter_call_method(st->volrecv,MS_VOLUME_SET_NOISE_GATE_FLOORGAIN,&floorgain); + } parametrize_equalizer(lc,st); if (lc->vtable.dtmf_received!=NULL){ /* replace by our default action*/ @@ -3007,7 +3006,7 @@ bool_t linphone_core_echo_limiter_enabled(const LinphoneCore *lc){ void linphone_core_mute_mic(LinphoneCore *lc, bool_t val){ if (lc->audiostream!=NULL){ audio_stream_set_mic_gain(lc->audiostream, - (val==TRUE) ? 0 : 1.0); + (val==TRUE) ? 0 : 1.0); // REVISIT: take mic_gain value if ( linphone_core_get_rtp_no_xmit_on_audio_mute(lc) ){ audio_stream_mute_rtp(lc->audiostream,val); } diff --git a/mediastreamer2 b/mediastreamer2 index 0401519a5..5427df937 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0401519a5946e9216c836ef6271bb2b3bf688179 +Subproject commit 5427df9376b8390a9c2c08d482c5324264a6a65e