]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Optimize sign handling in get_symbol().
authormichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Fri, 24 Apr 2009 00:26:49 +0000 (00:26 +0000)
committermichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Fri, 24 Apr 2009 00:26:49 +0000 (00:26 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18672 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/ffv1.c
libavcodec/snow.c

index 9eef531d59198839fc158dd83b1d9a689f8cd48a..62b12ede16659af002334f258cd3773641454200 100644 (file)
@@ -258,10 +258,8 @@ static inline int get_symbol(RangeCoder *c, uint8_t *state, int is_signed){
             a += a + get_rac(c, state+22 + i); //22..31
         }
 
-        if(is_signed && get_rac(c, state+11 + e)) //11..21
-            return -a;
-        else
-            return a;
+        e= -(is_signed && get_rac(c, state+11 + e)); //11..21
+        return (a^e)-e;
     }
 }
 
index 5d9577bc03be948682425aa43816419d042780d3..995c1a202443533cf28569c032ca86e7c8fd02a0 100644 (file)
@@ -665,10 +665,8 @@ static inline int get_symbol(RangeCoder *c, uint8_t *state, int is_signed){
             a += a + get_rac(c, state+22 + FFMIN(i,9)); //22..31
         }
 
-        if(is_signed && get_rac(c, state+11 + FFMIN(e,10))) //11..21
-            return -a;
-        else
-            return a;
+        e= -(is_signed && get_rac(c, state+11 + FFMIN(e,10))); //11..21
+        return (a^e)-e;
     }
 }