summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-01-22 15:52:10 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-07-02 10:05:29 +0200
commitff8a49d4b06b6ad3a4463ebc0980c74abbda2597 (patch)
treefb9bf6375354c7ec5d5b2647dc9b6aca6043815b
parentef0e5246601253b9f1f9c76820f24b6f31d31f93 (diff)
downloadffmpeg-ff8a49d4b06b6ad3a4463ebc0980c74abbda2597.tar.gz
avcodec/ra144enc: Fix invalid left shift of negative number
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> (cherry picked from commit e3fb9af6f1353f30855eaa1cbd5befaf06e303b8) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-rw-r--r--libavcodec/ra144enc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libavcodec/ra144enc.c b/libavcodec/ra144enc.c
index cc4f381606..059f582334 100644
--- a/libavcodec/ra144enc.c
+++ b/libavcodec/ra144enc.c
@@ -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