OSDN Git Service

VP8: faster filter_level clip
authorJason Garrett-Glaser <jason@x264.com>
Fri, 4 Feb 2011 03:44:32 +0000 (19:44 -0800)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 6 Feb 2011 19:31:43 +0000 (20:31 +0100)
(cherry picked from commit a1b227bb533f173354795124e0b966277c251b56)

libavcodec/vp8.c

index bcf6237..1db57e4 100644 (file)
@@ -1480,7 +1480,10 @@ static av_always_inline void filter_level_for_mb(VP8Context *s, VP8Macroblock *m
         filter_level += s->lf_delta.ref[mb->ref_frame];
         filter_level += s->lf_delta.mode[mb->mode];
     }
-    filter_level = av_clip(filter_level, 0, 63);
+
+/* Like av_clip for inputs 0 and max, where max is equal to (2^n-1) */
+#define POW2CLIP(x,max) (((x) & ~max) ? (-(x))>>31 & max : (x));
+    filter_level = POW2CLIP(filter_level, 63);
 
     interior_limit = filter_level;
     if (s->filter.sharpness) {