summaryrefslogtreecommitdiffstats
path: root/lib/rbcodec/codecs/libopus/celt
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2012-10-07 12:34:54 +0200
committerNils Wallménius <nils@rockbox.org>2012-10-07 12:34:54 +0200
commit0ae8d16643fac1ba935a4e5303cc423655fb3ff7 (patch)
tree70ed2e31d4cebb3a8b9fdc0656c99de8ba2e8665 /lib/rbcodec/codecs/libopus/celt
parentc7840e745e9359f8210e5112bef388c4e3157765 (diff)
downloadrockbox-0ae8d16643fac1ba935a4e5303cc423655fb3ff7.tar.gz
rockbox-0ae8d16643fac1ba935a4e5303cc423655fb3ff7.zip
opus: replace copy loops with calls to memcpy
speeds up decoding of a 64kbps test file by 0.5Hz on h300 (cf) 0.9MHz on c200 (pp) and 0.2MHz on fuzev1 (amsv1) Change-Id: Ib537c2393fa6dca0b61e4e9f80eef5e688c2c2bd Signed-off-by: Nils Wallménius <nils@rockbox.org>
Diffstat (limited to 'lib/rbcodec/codecs/libopus/celt')
-rw-r--r--lib/rbcodec/codecs/libopus/celt/mdct.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/lib/rbcodec/codecs/libopus/celt/mdct.c b/lib/rbcodec/codecs/libopus/celt/mdct.c
index 8fc1b54db7..0f9af9eac4 100644
--- a/lib/rbcodec/codecs/libopus/celt/mdct.c
+++ b/lib/rbcodec/codecs/libopus/celt/mdct.c
@@ -305,12 +305,11 @@ void clt_mdct_backward(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scala
kiss_fft_scalar * OPUS_RESTRICT yp1 = out+N4-overlap/2;
const opus_val16 * OPUS_RESTRICT wp1 = window;
const opus_val16 * OPUS_RESTRICT wp2 = window+overlap-1;
- for(i = 0; i< N4-overlap/2; i++)
- {
- *xp1 = *fp1;
- xp1--;
- fp1--;
- }
+
+ i = N4-overlap/2;
+ xp1 -= N4-overlap/2;
+ fp1 -= N4-overlap/2;
+ OPUS_COPY(xp1+1, fp1+1, N4-overlap/2);
for(; i < N4; i++)
{
kiss_fft_scalar x1;
@@ -327,12 +326,11 @@ void clt_mdct_backward(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scala
kiss_fft_scalar * OPUS_RESTRICT yp2 = out+N-1-(N4-overlap/2);
const opus_val16 * OPUS_RESTRICT wp1 = window;
const opus_val16 * OPUS_RESTRICT wp2 = window+overlap-1;
- for(i = 0; i< N4-overlap/2; i++)
- {
- *xp2 = *fp2;
- xp2++;
- fp2++;
- }
+
+ i = N4-overlap/2;
+ OPUS_COPY(xp2, fp2, N4-overlap/2);
+ xp2 += N4-overlap/2;
+ fp2 += N4-overlap/2;
for(; i < N4; i++)
{
kiss_fft_scalar x2;