actually do issue #4170 right... it was supposed to adjust talk volume, not listen volume (sorry)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6520 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kevin P. Fleming
2005-09-07 01:39:11 +00:00
parent 5fdc070109
commit 764cfe8f8e

View File

@@ -147,8 +147,8 @@ struct ast_conf_user {
char usrvalue[50]; /* Custom User Value */ char usrvalue[50]; /* Custom User Value */
char namerecloc[AST_MAX_EXTENSION]; /* Name Recorded file Location */ char namerecloc[AST_MAX_EXTENSION]; /* Name Recorded file Location */
time_t jointime; /* Time the user joined the conference */ time_t jointime; /* Time the user joined the conference */
int desired_volume; /* Desired volume adjustment */ int desired_talk_volume; /* Desired talk volume adjustment */
int actual_volume; /* Actual volume adjustment (for channels that can't adjust) */ int actual_talk_volume; /* Actual talk volume adjustment (for channels that can't adjust) */
}; };
#define ADMINFLAG_MUTED (1 << 1) /* User is muted */ #define ADMINFLAG_MUTED (1 << 1) /* User is muted */
@@ -279,7 +279,7 @@ static signed char gain_map[] = {
15, 15,
}; };
static int set_volume(struct ast_conf_user *user, int volume) static int set_talk_volume(struct ast_conf_user *user, int volume)
{ {
signed char gain_adjust; signed char gain_adjust;
@@ -287,49 +287,49 @@ static int set_volume(struct ast_conf_user *user, int volume)
if successful, don't adjust in the frame reading routine if successful, don't adjust in the frame reading routine
*/ */
gain_adjust = gain_map[volume + 5]; gain_adjust = gain_map[volume + 5];
return ast_channel_setoption(user->chan, AST_OPTION_TXGAIN, &gain_adjust, sizeof(gain_adjust), 0); return ast_channel_setoption(user->chan, AST_OPTION_RXGAIN, &gain_adjust, sizeof(gain_adjust), 0);
} }
static void tweak_volume(struct ast_conf_user *user, enum volume_action action) static void tweak_talk_volume(struct ast_conf_user *user, enum volume_action action)
{ {
switch (action) { switch (action) {
case VOL_UP: case VOL_UP:
switch (user->desired_volume) { switch (user->desired_talk_volume) {
case 5: case 5:
break; break;
case 0: case 0:
user->desired_volume = 2; user->desired_talk_volume = 2;
break; break;
case -2: case -2:
user->desired_volume = 0; user->desired_talk_volume = 0;
break; break;
default: default:
user->desired_volume++; user->desired_talk_volume++;
break; break;
} }
break; break;
case VOL_DOWN: case VOL_DOWN:
switch (user->desired_volume) { switch (user->desired_talk_volume) {
case -5: case -5:
break; break;
case 2: case 2:
user->desired_volume = 0; user->desired_talk_volume = 0;
break; break;
case 0: case 0:
user->desired_volume = -2; user->desired_talk_volume = -2;
break; break;
default: default:
user->desired_volume--; user->desired_talk_volume--;
break; break;
} }
} }
/* attempt to make the adjustment in the channel driver; /* attempt to make the adjustment in the channel driver;
if successful, don't adjust in the frame reading routine if successful, don't adjust in the frame reading routine
*/ */
if (!set_volume(user, user->desired_volume)) if (!set_talk_volume(user, user->desired_talk_volume))
user->actual_volume = 0; user->actual_talk_volume = 0;
else else
user->actual_volume = user->desired_volume; user->actual_talk_volume = user->desired_talk_volume;
} }
static void adjust_volume(struct ast_frame *f, int vol) static void adjust_volume(struct ast_frame *f, int vol)
@@ -1037,8 +1037,8 @@ zapretry:
/* if we have just exited from the menu, and the user had a channel-driver /* if we have just exited from the menu, and the user had a channel-driver
volume adjustment, restore it volume adjustment, restore it
*/ */
if (!menu_active && menu_was_active && user->desired_volume && !user->actual_volume) if (!menu_active && menu_was_active && user->desired_talk_volume && !user->actual_talk_volume)
set_volume(user, user->desired_volume); set_talk_volume(user, user->desired_talk_volume);
menu_was_active = menu_active; menu_was_active = menu_active;
@@ -1187,8 +1187,8 @@ zapretry:
if (!f) if (!f)
break; break;
if ((f->frametype == AST_FRAME_VOICE) && (f->subclass == AST_FORMAT_SLINEAR)) { if ((f->frametype == AST_FRAME_VOICE) && (f->subclass == AST_FORMAT_SLINEAR)) {
if (user->actual_volume) { if (user->actual_talk_volume) {
adjust_volume(f, user->actual_volume); adjust_volume(f, user->actual_talk_volume);
} }
if (confflags & CONFFLAG_MONITORTALKER) { if (confflags & CONFFLAG_MONITORTALKER) {
int totalsilence; int totalsilence;
@@ -1244,8 +1244,8 @@ zapretry:
/* if we are entering the menu, and the user has a channel-driver /* if we are entering the menu, and the user has a channel-driver
volume adjustment, clear it volume adjustment, clear it
*/ */
if (!menu_active && user->desired_volume && !user->actual_volume) if (!menu_active && user->desired_talk_volume && !user->actual_talk_volume)
set_volume(user, 0); set_talk_volume(user, 0);
if (musiconhold) { if (musiconhold) {
ast_moh_stop(chan); ast_moh_stop(chan);
@@ -1309,7 +1309,7 @@ zapretry:
break; break;
case '9': case '9':
tweak_volume(user, VOL_UP); tweak_talk_volume(user, VOL_UP);
break; break;
case '8': case '8':
@@ -1317,7 +1317,7 @@ zapretry:
break; break;
case '7': case '7':
tweak_volume(user, VOL_DOWN); tweak_talk_volume(user, VOL_DOWN);
break; break;
default: default:
@@ -1364,7 +1364,7 @@ zapretry:
} }
break; break;
case '9': case '9':
tweak_volume(user, VOL_UP); tweak_talk_volume(user, VOL_UP);
break; break;
case '8': case '8':
@@ -1372,7 +1372,7 @@ zapretry:
break; break;
case '7': case '7':
tweak_volume(user, VOL_DOWN); tweak_talk_volume(user, VOL_DOWN);
break; break;
default: default: