diff options
author | twisted <twisted@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-07-18 15:51:09 +0000 |
---|---|---|
committer | twisted <twisted@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-07-18 15:51:09 +0000 |
commit | aa6c297b1b7c04d7cbdd2e286cc138017f4bd2b0 (patch) | |
tree | bd79bc24e089e17d70c3b38da11959fd30f0adbc /muted.c | |
parent | 6aad2478cab49459ce33a8eed7a2aaf8c1ce6b4b (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-x | muted.c | 34 |
1 files changed, 29 insertions, 5 deletions
@@ -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); |