summaryrefslogtreecommitdiff
path: root/apps/codecs
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs')
-rw-r--r--apps/codecs/libwma/wmadeci.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/apps/codecs/libwma/wmadeci.c b/apps/codecs/libwma/wmadeci.c
index e0625de..87af30b 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;