Browse Source

WMA: fix loop unrolling in decode_exp_vlc()

The count can be a non-multiple of 4 after all.

Originally committed as revision 20081 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.6
Måns Rullgård 15 years ago
parent
commit
0e71841b05
1 changed files with 12 additions and 12 deletions
  1. +12
    -12
      libavcodec/wmadec.c

+ 12
- 12
libavcodec/wmadec.c View File

@@ -330,12 +330,12 @@ static int decode_exp_vlc(WMACodecContext *s, int ch)
iv = iptab[last_exp];
max_scale = v;
n = *ptr++;
do {
*q++ = iv;
*q++ = iv;
*q++ = iv;
*q++ = iv;
} while (n -= 4);
switch (n & 3) do {
case 0: *q++ = iv;
case 3: *q++ = iv;
case 2: *q++ = iv;
case 1: *q++ = iv;
} while ((n -= 4) > 0);
}else
last_exp = 36;

@@ -352,12 +352,12 @@ static int decode_exp_vlc(WMACodecContext *s, int ch)
if (v > max_scale)
max_scale = v;
n = *ptr++;
do {
*q++ = iv;
*q++ = iv;
*q++ = iv;
*q++ = iv;
} while (n -= 4);
switch (n & 3) do {
case 0: *q++ = iv;
case 3: *q++ = iv;
case 2: *q++ = iv;
case 1: *q++ = iv;
} while ((n -= 4) > 0);
}
s->max_exponent[ch] = max_scale;
return 0;


Loading…
Cancel
Save