From ac2549b583f88d488326ad65b3d2f4539b1ae732 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 31 Mar 2006 16:50:43 +0000 Subject: [PATCH] avoid hard to predict branch (idea by arpi) Originally committed as revision 5252 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/mjpeg.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libavcodec/mjpeg.c b/libavcodec/mjpeg.c index 7a86482874..dbcbaed61d 100644 --- a/libavcodec/mjpeg.c +++ b/libavcodec/mjpeg.c @@ -1288,11 +1288,10 @@ static int decode_block(MJpegDecodeContext *s, DCTELEM *block, code &= 0xf; UPDATE_CACHE(re, &s->gb) - - if ((int32_t)GET_CACHE(re,&s->gb)<0) { //MSB=1 - level = NEG_USR32( GET_CACHE(re,&s->gb),code); - } else { - level = - NEG_USR32(~GET_CACHE(re,&s->gb),code); + { + int cache=GET_CACHE(re,gb); + int sign=(~cache)>>31; + level = (NEG_USR32(sign ^ cache,code) ^ sign) + (sign&1) ; } LAST_SKIP_BITS(re, &s->gb, code)