mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-10-12 14:24:13 +00:00
[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:
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user