mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-10-29 14:44:17 +00:00
FS-9922: [mod_conference] Auto Energy Level -- some clean up
This commit is contained in:
1 parent
c6839a44f3
commit
f691d139ea
5 files changed
+26
-9
No files matched your search
@@ -957,6 +957,7 @@ void conference_api_set_agc(conference_member_t *member, const char *data)
|
||||
if (!member->agc) {
|
||||
switch_agc_create(&member->agc, member->agc_level, member->agc_low_energy_level, member->agc_margin,
|
||||
member->agc_change_factor, member->agc_period_len);
|
||||
switch_agc_set_token(member->agc, switch_channel_get_name(member->channel));
|
||||
} else {
|
||||
switch_agc_set(member->agc, member->agc_level, member->agc_low_energy_level, member->agc_margin,
|
||||
member->agc_change_factor, member->agc_period_len);
|
||||
|
||||
@@ -932,10 +932,6 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
|
||||
switch_change_sln_volume(read_frame->data, (read_frame->datalen / 2) * member->conference->channels, member->volume_in_level);
|
||||
}
|
||||
|
||||
if (member->agc) {
|
||||
switch_agc_feed(member->agc, (int16_t *)read_frame->data, (read_frame->datalen / 2) * member->conference->channels, 1);
|
||||
}
|
||||
|
||||
if ((samples = read_frame->datalen / sizeof(*data))) {
|
||||
for (i = 0; i < samples; i++) {
|
||||
energy += abs(data[j]);
|
||||
@@ -951,6 +947,10 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
|
||||
|
||||
gate_check = conference_member_noise_gate_check(member);
|
||||
|
||||
if (gate_check && member->agc) {
|
||||
switch_agc_feed(member->agc, (int16_t *)read_frame->data, (read_frame->datalen / 2) * member->conference->channels, 1);
|
||||
}
|
||||
|
||||
member->score_iir = (int) (((1.0 - SCORE_DECAY) * (float) member->score) + (SCORE_DECAY * (float) member->score_iir));
|
||||
|
||||
if (member->score_iir > SCORE_MAX_IIR) {
|
||||
|
||||
@@ -3456,7 +3456,7 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
|
||||
|
||||
conference->agc_level = 0;
|
||||
conference->agc_low_energy_level = 0;
|
||||
conference->agc_margin = 500;
|
||||
conference->agc_margin = 20;
|
||||
conference->agc_change_factor = 3;
|
||||
conference->agc_period_len = (1000 / conference->interval) * 2;
|
||||
|
||||
|
||||
Reference in new issue
Block a user