mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/adxdec: Remove unnecessary left-shift
Replace "(a * (1 << shift) * b + c) >> shift" by "a * b + (c >> shift)". It is equivalent to the old code because a is in the range of uint16_t, shift is 12 and b is effectively a signed 4-bit number, so that no overflow/truncation of high bits happens during the multiplication (overflow would be undefined anyway). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
59a9d65e0d
commit
340e6b0185
|
@ -81,7 +81,7 @@ static int adx_decode(ADXContext *c, int16_t *out, int offset,
|
|||
s2 = prev->s2;
|
||||
for (i = 0; i < BLOCK_SAMPLES; i++) {
|
||||
d = get_sbits(&gb, 4);
|
||||
s0 = ((d * (1 << COEFF_BITS)) * scale + c->coeff[0] * s1 + c->coeff[1] * s2) >> COEFF_BITS;
|
||||
s0 = d * scale + ((c->coeff[0] * s1 + c->coeff[1] * s2) >> COEFF_BITS);
|
||||
s2 = s1;
|
||||
s1 = av_clip_int16(s0);
|
||||
*out++ = s1;
|
||||
|
|
Loading…
Reference in New Issue