]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/ra144enc: Fix invalid left shift of negative number
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Wed, 22 Jan 2020 14:52:10 +0000 (15:52 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Thu, 23 Jan 2020 11:19:07 +0000 (12:19 +0100)
by replacing it with a multiplication. Said multiplication can't
overflow an int32_t because lpc_coefs is limited to 16 bit precision.

Fixes the FACE-test acodec-ra144 as well as part of #8217.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/ra144enc.c

index cc4f381606ad35c011ef89e11c7cf22b2e5e780b..059f582334d5f586de4f275e63b900924baa5fe3 100644 (file)
@@ -477,8 +477,8 @@ static int ra144_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
                       LPC_ORDER, 16, lpc_coefs, shift, FF_LPC_TYPE_LEVINSON,
                       0, ORDER_METHOD_EST, 0, 12, 0);
     for (i = 0; i < LPC_ORDER; i++)
-        block_coefs[NBLOCKS - 1][i] = -(lpc_coefs[LPC_ORDER - 1][i] <<
-                                        (12 - shift[LPC_ORDER - 1]));
+        block_coefs[NBLOCKS - 1][i] = -lpc_coefs[LPC_ORDER - 1][i]
+                                       * (1 << (12 - shift[LPC_ORDER - 1]));
 
     /**
      * TODO: apply perceptual weighting of the input speech through bandwidth