From b2aa2452e798d6fed2c1d5ab3e8b16cfa234a551 Mon Sep 17 00:00:00 2001 From: Jeffrey Goode Date: Sat, 19 Sep 2009 00:12:02 +0000 Subject: Performance improvement in limiter, about 2% git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22735 a1c6a512-1295-4272-9138-f99709370657 --- apps/dsp.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/apps/dsp.c b/apps/dsp.c index fad5f4d496..5aa93ccc7c 100644 --- a/apps/dsp.c +++ b/apps/dsp.c @@ -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 * 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]; - for (i = 0; i < count; i++) + if (out_buf_peak[i] > 0) { - if (out_buf_peak[i] > 0) - { - gain_peak = (out_buf_peak[i] + 1) / 90; - gain_rem = (out_buf_peak[i] + 1) % 90; - gain = gain_steps[gain_peak]; - if ((gain_peak < 48) && (gain_rem > 0)) - gain -= gain_rem * ((gain_steps[gain_peak] - - gain_steps[gain_peak + 1]) / 90); - d[i] = FRACMUL_SHL(d[i], gain, 3); - } + gain_peak = (out_buf_peak[i] + 1) / 90; + gain_rem = (out_buf_peak[i] + 1) % 90; + gain = gain_steps[gain_peak]; + if ((gain_peak < 48) && (gain_rem > 0)) + gain -= gain_rem * ((gain_steps[gain_peak] - + gain_steps[gain_peak + 1]) / 90); + for (ch = 0; ch < AUDIO_DSP.data.num_channels; ch++) + buf[ch][i] = FRACMUL_SHL(buf[ch][i], gain, 3); } } return count; -- cgit v1.2.3