Avoid negation in put_line().
[libav.git] / libavcodec / faxcompr.c
index 9404446..f53c64b 100644 (file)
@@ -232,33 +232,32 @@ static int decode_group3_2d_line(AVCodecContext *avctx, GetBitContext *gb,
 static void put_line(uint8_t *dst, int size, int width, const int *runs)
 {
     PutBitContext pb;
-    int run, mode = 0, pix_left = width, run_idx = 0;
+    int run, mode = ~0, pix_left = width, run_idx = 0;
 
     init_put_bits(&pb, dst, size*8);
     while(pix_left > 0){
         run = runs[run_idx++];
+        mode = ~mode;
         if(!run){
-            mode = !mode;
             continue;
         }
         pix_left -= run;
         for(; run > 16; run -= 16)
-            put_sbits(&pb, 16, -mode);
-        put_sbits(&pb, run, -mode);
-        mode = !mode;
+            put_sbits(&pb, 16, mode);
+        put_sbits(&pb, run, mode);
     }
 }
 
 static int find_group3_syncmarker(GetBitContext *gb, int srcsize)
 {
-    int state = get_bits(gb, 12);
-    int rem = srcsize - get_bits_count(gb);
-    while((state & 0xFFF) != 1){
-        state = (state << 1) | get_bits1(gb);
-        if(--rem <= 0)
-            return -1;
+    unsigned int state = -1;
+    srcsize -= get_bits_count(gb);
+    while(srcsize-- > 0){
+        state+= state + get_bits1(gb);
+        if((state & 0xFFF) != 1)
+            return 0;
     }
-    return 0;
+    return -1;
 }
 
 int ff_ccitt_unpack_1d(AVCodecContext *avctx,