Performance improvement in limiter, about 2%

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22735 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jeffrey Goode 2009-09-19 00:12:02 +00:00
parent 293a4b62d7
commit b2aa2452e7

View file

@ -1934,21 +1934,18 @@ static int limiter_process(int count, int32_t *buf[])
} }
/* Implement the limiter: adjust gain of the outbound samples by the gain /* Implement the limiter: adjust gain of the outbound samples by the gain
* amounts in the gain steps array corresponding to the peak values. */ * amounts in the gain steps array corresponding to the peak values. */
for (ch = 0; ch < AUDIO_DSP.data.num_channels; ch++) for (i = 0; i < count; i++)
{ {
int32_t *d = buf[ch]; if (out_buf_peak[i] > 0)
for (i = 0; i < count; i++)
{ {
if (out_buf_peak[i] > 0) gain_peak = (out_buf_peak[i] + 1) / 90;
{ gain_rem = (out_buf_peak[i] + 1) % 90;
gain_peak = (out_buf_peak[i] + 1) / 90; gain = gain_steps[gain_peak];
gain_rem = (out_buf_peak[i] + 1) % 90; if ((gain_peak < 48) && (gain_rem > 0))
gain = gain_steps[gain_peak]; gain -= gain_rem * ((gain_steps[gain_peak] -
if ((gain_peak < 48) && (gain_rem > 0)) gain_steps[gain_peak + 1]) / 90);
gain -= gain_rem * ((gain_steps[gain_peak] - for (ch = 0; ch < AUDIO_DSP.data.num_channels; ch++)
gain_steps[gain_peak + 1]) / 90); buf[ch][i] = FRACMUL_SHL(buf[ch][i], gain, 3);
d[i] = FRACMUL_SHL(d[i], gain, 3);
}
} }
} }
return count; return count;