aboutsummaryrefslogtreecommitdiffstats
path: root/muted.c
diff options
context:
space:
mode:
authortwisted <twisted@f38db490-d61c-443f-a65b-d21fe96a405b>2005-07-18 15:51:09 +0000
committertwisted <twisted@f38db490-d61c-443f-a65b-d21fe96a405b>2005-07-18 15:51:09 +0000
commitaa6c297b1b7c04d7cbdd2e286cc138017f4bd2b0 (patch)
treebd79bc24e089e17d70c3b38da11959fd30f0adbc /muted.c
parent6aad2478cab49459ce33a8eed7a2aaf8c1ce6b4b (diff)
fix smoothfade for osx.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6153 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'muted.c')
-rwxr-xr-xmuted.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/muted.c b/muted.c
index 17cc63bfe..baeb63e1a 100755
--- a/muted.c
+++ b/muted.c
@@ -378,30 +378,46 @@ static float oldvol = 0;
static float mutevol = 0;
#endif
+#ifndef __Darwin__
static int mutedlevel(int orig, int mutelevel)
{
int l = orig >> 8;
int r = orig & 0xff;
l = (float)(mutelevel) * (float)(l) / 100.0;
r = (float)(mutelevel) * (float)(r) / 100.0;
+
return (l << 8) | r;
+#else
+static float mutedlevel(float orig, float mutelevel)
+{
+ float master = orig;
+ master = mutelevel * master / 100.0;
+ return master;
+#endif
+
}
static void mute(void)
{
#ifndef __Darwin__
int vol;
+ int start;
+ int x;
#else
float vol;
+ float start = 1.0;
+ float x;
#endif
- int start;
- int x;
vol = getvol();
oldvol = vol;
- if (smoothfade)
+ if (smoothfade)
+#ifdef __Darwin__
+ start = mutelevel;
+#else
start = 100;
else
start = mutelevel;
+#endif
for (x=start;x>=mutelevel;x-=stepsize) {
mutevol = mutedlevel(vol, x);
setvol(mutevol);
@@ -423,23 +439,31 @@ static void unmute(void)
{
#ifdef __Darwin__
float vol;
+ float start;
+ float x;
#else
int vol;
-#endif
int start;
int x;
+#endif
vol = getvol();
if (debug)
#ifdef __Darwin__
printf("Unmute from '%f' (should be '%f') to '%f'!\n", vol, mutevol, oldvol);
+ mutevol = vol;
+ if (vol == mutevol) {
#else
printf("Unmute from '%04x' (should be '%04x') to '%04x'!\n", vol, mutevol, oldvol);
-#endif
if ((int)vol == mutevol) {
+#endif
if (smoothfade)
start = mutelevel;
else
+#ifdef __Darwin__
+ start = 1.0;
+#else
start = 100;
+#endif
for (x=start;x<100;x+=stepsize) {
mutevol = mutedlevel(oldvol, x);
setvol(mutevol);