Page 1 of 1

Conference call channel volume control

PostPosted: Tue Jul 21, 2020 11:00 pm
by mjohn425
Hi guys,

We have agents asking for the conference call channel volume control to go down lower, (this is because of 3 way calls with other companies with loud hold music, which makes it hard for client to hear agent). I know this occurs in the MeetMeAdmin application from the extensions.conf. So I have edited the app_meetme.c file and rebuilt (even with a make clean), moved the .so file to the modules directory. /usr/lib/asterisk/modules and /usr/lib64/asterisk/modules. Unloaded/Reloaded and even restarted (whole server) but the changes I've made don't seem to make a difference, it's bizarre. Just wondering if I'm missing something. I tried changing the gain map (even making all the negative values the same) but still observed the original (standard) behaviour, same with adding in extra negative values (and changing the switch statement).

I realise it is pushing on more of an asterisk support question, but figured that there may be some helpful insight around here somewhere. Cheers, thanks in advance. Relevant code below:

Code: Select all
static const char gain_map[] = {
   -15,
   -13,
   -10,
   -6,
   0,
   0,
   0,
   6,
   10,
   13,
   15,
};

static int set_talk_volume(struct ast_conf_user *user, int volume)
{
   char gain_adjust;

   /* attempt to make the adjustment in the channel driver;
      if successful, don't adjust in the frame reading routine
   */
   gain_adjust = gain_map[volume + 5];

   return ast_channel_setoption(user->chan, AST_OPTION_RXGAIN, &gain_adjust, sizeof(gain_adjust), 0);
}

static void tweak_volume(struct volume *vol, enum volume_action action)
{
   switch (action) {
   case VOL_UP:
      switch (vol->desired) {
      case 5:
         break;
      case 0:
         vol->desired = 2;
         break;
      case -2:
         vol->desired = 0;
         break;
      default:
         vol->desired++;
         break;
      }
      break;
   case VOL_DOWN:
      switch (vol->desired) {
      case -5:
         break;
      case 2:
         vol->desired = 0;
         break;
      case 0:
         vol->desired = -2;
         break;
      default:
         vol->desired--;
         break;
      }
   }
}

static void tweak_talk_volume(struct ast_conf_user *user, enum volume_action action)
{
   tweak_volume(&user->talk, action);
   /* attempt to make the adjustment in the channel driver;
      if successful, don't adjust in the frame reading routine
   */
   if (!set_talk_volume(user, user->talk.desired))
      user->talk.actual = 0;
   else
      user->talk.actual = user->talk.desired;
}


CentOS 7
Asterisk 11.22.0
VERSION: 2.14-721a
BUILD: 191015-1620

Re: Conference call channel volume control

PostPosted: Wed Jul 22, 2020 9:38 am
by mflorell
If you're using Asterisk 11 you aren't going to find much help since that version has been unsupported for quite some time.

The issue of volume control is actually quite complex and involves all kinds of different modules in Asterisk, but you may be running into the automatic gain control that is built into some of the channel drivers by default, instead of specifically a Meetme issue. I do know that one client of ours that had this problem installed a PBXmate SIP proxy and they said it fixed all of their volume and noise issues, of course it is proprietary/pay-for software, so that may not be an option for you: https://solicall.com/pbxmate/