[FFmpeg-cvslog] svq1enc: fix signed multiplication overflow

Mans Rullgard git at videolan.org
Sun Nov 27 00:39:13 CET 2011


ffmpeg | branch: master | Mans Rullgard <mans at mansr.com> | Sat Nov 26 16:50:51 2011 +0000| [f7f892e4d5bded48b08e7b776a5fb7c350496f2b] | committer: Mans Rullgard

svq1enc: fix signed multiplication overflow

This multiplication can overflow the signed range but not the
unsigned.  After right-shifting it will thus fit in the signed
range again.

Signed-off-by: Mans Rullgard <mans at mansr.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f7f892e4d5bded48b08e7b776a5fb7c350496f2b
---

 libavcodec/svq1enc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c
index 79aaa6c..01d8b31 100644
--- a/libavcodec/svq1enc.c
+++ b/libavcodec/svq1enc.c
@@ -160,7 +160,7 @@ static int encode_block(SVQ1Context *s, uint8_t *src, uint8_t *ref, uint8_t *dec
     }
 
     best_count=0;
-    best_score -= ((block_sum[0]*block_sum[0])>>(level+3));
+    best_score -= (int)(((unsigned)block_sum[0]*block_sum[0])>>(level+3));
     best_mean= (block_sum[0] + (size>>1)) >> (level+3);
 
     if(level<4){



More information about the ffmpeg-cvslog mailing list