[Core, mod_conference] Fixed oscillation in conference AGC processing. Especially during volume reduction processing (#1064)

* Fixed oscillation in conference AGC processing. Especially during volume reduction processing

* Re-scaled granular volume to +/- 50 dB level change. 10 = double loudness, -10 = half loudness, 0 = no change

Co-authored-by: Chris Rienzo <chris@signalwire.com>
This commit is contained in:
figaro2015andChris Rienzo authored and GitHub committed 2021-04-02 22:18:16 +03:00
1 parent 67cec5c3e8
commit ec1a0215fe
4 files changed
+35 -22

No files matched your search

@@ -1276,15 +1276,6 @@ void conference_api_set_agc(conference_member_t *member, const char *data)
}
if (argv[0]) {
tmp = atoi(argv[0]);
if (tmp > 0) {
member->agc_period_len = (1000 / member->conference->interval) * tmp;
}
}
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);
@@ -3574,9 +3574,9 @@ 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 = 20;
conference->agc_change_factor = 3;
conference->agc_period_len = (1000 / conference->interval) * 2;
conference->agc_margin = 100;
conference->agc_change_factor = 2;
conference->agc_period_len = 500 / conference->interval;
if (agc_level) {
@@ -3610,7 +3610,7 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
if (agc_period_len) {
tmp = atoi(agc_period_len);
if (tmp > 0) {
conference->agc_period_len = (1000 / conference->interval) * tmp;
conference->agc_period_len = tmp;
}
}