From: Moises Silva Date: Fri, 15 Jan 2010 21:58:36 +0000 (+0000) Subject: gain value adjustment fixes X-Git-Tag: v1.0.6~38^3~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ef72cfef615a8d5b4ee4c8d3021b9490ab450ca;p=thirdparty%2Ffreeswitch.git gain value adjustment fixes git-svn-id: http://svn.openzap.org/svn/openzap/branches/sangoma_boost@978 a93c3328-9c30-0410-af19-c9cd2b2d52af --- diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index 8993c3e3f8..9d4b96cb2f 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -608,15 +608,21 @@ static void reset_gain_table(unsigned char *gain_table, float new_gain, ftdm_cod if (!new_gain) { /* for a 0.0db gain table, each alaw/ulaw sample value is left untouched (0 ==0, 1 == 1, 2 == 2 etc)*/ - for (sv = 0; sv < FTDM_GAINS_TABLE_SIZE; sv++) { + sv = 0; + while (1) { gain_table[sv] = sv; + if (sv == (FTDM_GAINS_TABLE_SIZE-1)) { + break; + } + sv++; } return; } /* use the 20log rule to increase the gain: http://en.wikipedia.org/wiki/Gain, http:/en.wipedia.org/wiki/20_log_rule#Definitions */ lingain = (float)pow(10.0, new_gain/ 20.0); - for (sv = 0; sv < FTDM_GAINS_TABLE_SIZE; sv++) { + sv = 0; + while (1) { /* get the linear value for this alaw/ulaw sample value */ linvalue = codec_gain == FTDM_CODEC_ALAW ? (float)alaw_to_linear(sv) : (float)ulaw_to_linear(sv); @@ -632,6 +638,10 @@ static void reset_gain_table(unsigned char *gain_table, float new_gain, ftdm_cod ampvalue = FTDM_SLINEAR_MIN_VALUE; } gain_table[sv] = codec_gain == FTDM_CODEC_ALAW ? linear_to_alaw(ampvalue) : linear_to_ulaw(ampvalue); + if (sv == (FTDM_GAINS_TABLE_SIZE-1)) { + break; + } + sv++; } } @@ -675,9 +685,14 @@ FT_DECLARE(ftdm_status_t) ftdm_span_add_channel(ftdm_span_t *span, ftdm_socket_t new_chan->dtmf_hangup_buf = ftdm_calloc (span->dtmf_hangup_len + 1, sizeof (char)); /* set 0.0db gain table */ - for (i = 0; i < sizeof(new_chan->txgain_table); i++) { + i = 0; + while (1) { new_chan->txgain_table[i] = i; new_chan->rxgain_table[i] = i; + if (i == (sizeof(new_chan->txgain_table)-1)) { + break; + } + i++; } ftdm_set_flag(new_chan, FTDM_CHANNEL_CONFIGURED | FTDM_CHANNEL_READY);