ttadec: use branchless unsigned-to-signed unfolding
authorJustin Ruggles <justin.ruggles@gmail.com>
Fri, 17 Feb 2012 02:51:03 +0000 (21:51 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Fri, 17 Feb 2012 19:35:35 +0000 (14:35 -0500)
libavcodec/tta.c

index db9c1b2..6f4d161 100644 (file)
@@ -396,8 +396,7 @@ static int tta_decode_frame(AVCodecContext *avctx, void *data,
         }
 
         // extract coded value
-#define UNFOLD(x) (((x)&1) ? (++(x)>>1) : (-(x)>>1))
-        *p = UNFOLD(value);
+        *p = 1 + ((value >> 1) ^ ((value & 1) - 1));
 
         // run hybrid filter
         ttafilter_process(filter, p);