From 0598a1189572e049b7c43a34dc1da7e71c1db118 Mon Sep 17 00:00:00 2001 From: saratoga Date: Fri, 2 Oct 2009 00:47:15 +0000 Subject: [PATCH] Commit unrolled version of WMA's exponent decode taken from latest ffmpeg. Gives a 1% speedup @ 192kbps. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22871 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/libwma/wmadeci.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/apps/codecs/libwma/wmadeci.c b/apps/codecs/libwma/wmadeci.c index e0625de86..87af30b51 100644 --- a/apps/codecs/libwma/wmadeci.c +++ b/apps/codecs/libwma/wmadeci.c @@ -767,11 +767,12 @@ static int decode_exp_vlc(WMADecodeContext *s, int ch) v = pow_10_to_yover16_ptr[last_exp]; max_scale = v; n = *ptr++; - do - { - *q++ = v; - } - while (--n); + switch (n & 3) do { + case 0: *q++ = v; + case 3: *q++ = v; + case 2: *q++ = v; + case 1: *q++ = v; + } while ((n -= 4) > 0); } else { last_exp = 36; } @@ -792,12 +793,12 @@ static int decode_exp_vlc(WMADecodeContext *s, int ch) max_scale = v; } n = *ptr++; - do - { - *q++ = v; - - } - while (--n); + switch (n & 3) do { + case 0: *q++ = v; + case 3: *q++ = v; + case 2: *q++ = v; + case 1: *q++ = v; + } while ((n -= 4) > 0); } s->max_exponent[ch] = max_scale; -- 2.11.4.GIT