]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_xbr.c
lavfi/vf_w3fdif: remove looping on request_frame().
[ffmpeg] / libavfilter / vf_xbr.c
index 38c3b706734a3373c7219c6b7b1088bf65e4806d..c92e9a82309bc4d066cf525f5858c551691df195 100644 (file)
@@ -65,13 +65,14 @@ static uint32_t pixel_diff(uint32_t x, uint32_t y, const uint32_t *r2y)
 #define YMASK 0xff0000
 #define UMASK 0x00ff00
 #define VMASK 0x0000ff
+#define ABSDIFF(a,b) (abs((int)(a)-(int)(b)))
 
     uint32_t yuv1 = r2y[x & 0xffffff];
     uint32_t yuv2 = r2y[y & 0xffffff];
 
-    return (abs((yuv1 & YMASK) - (yuv2 & YMASK)) >> 16) +
-           (abs((yuv1 & UMASK) - (yuv2 & UMASK)) >>  8) +
-           abs((yuv1 & VMASK) - (yuv2 & VMASK));
+    return (ABSDIFF(yuv1 & YMASK, yuv2 & YMASK) >> 16) +
+           (ABSDIFF(yuv1 & UMASK, yuv2 & UMASK) >>  8) +
+            ABSDIFF(yuv1 & VMASK, yuv2 & VMASK);
 }
 
 #define ALPHA_BLEND_128_W(a, b) ((((a) & LB_MASK) >> 1) + (((b) & LB_MASK) >> 1))
@@ -328,11 +329,11 @@ XBR_FUNC(4)
 static int config_output(AVFilterLink *outlink)
 {
     AVFilterContext *ctx = outlink->src;
-    XBRContext *xbr = ctx->priv;
+    XBRContext *s = ctx->priv;
     AVFilterLink *inlink = ctx->inputs[0];
 
-    outlink->w = inlink->w * xbr->n;
-    outlink->h = inlink->h * xbr->n;
+    outlink->w = inlink->w * s->n;
+    outlink->h = inlink->h * s->n;
     return 0;
 }
 
@@ -352,7 +353,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
 {
     AVFilterContext *ctx = inlink->dst;
     AVFilterLink *outlink = ctx->outputs[0];
-    XBRContext *xbr = ctx->priv;
+    XBRContext *s = ctx->priv;
     ThreadData td;
 
     AVFrame *out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
@@ -365,8 +366,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
 
     td.in = in;
     td.out = out;
-    td.rgbtoyuv = xbr->rgbtoyuv;
-    ctx->internal->execute(ctx, xbr->func, &td, NULL, FFMIN(inlink->h, ctx->graph->nb_threads));
+    td.rgbtoyuv = s->rgbtoyuv;
+    ctx->internal->execute(ctx, s->func, &td, NULL, FFMIN(inlink->h, ctx->graph->nb_threads));
 
     out->width  = outlink->w;
     out->height = outlink->h;
@@ -377,7 +378,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
 
 static int init(AVFilterContext *ctx)
 {
-    XBRContext *xbr = ctx->priv;
+    XBRContext *s = ctx->priv;
     static const xbrfunc_t xbrfuncs[] = {xbr2x, xbr3x, xbr4x};
 
     uint32_t c;
@@ -392,13 +393,13 @@ static int init(AVFilterContext *ctx)
             uint32_t y = (uint32_t)(( 299*rg + 1000*startg + 114*bg)/1000);
             c = bg + (rg<<16) + 0x010101 * startg;
             for (g = startg; g <= endg; g++) {
-                xbr->rgbtoyuv[c] = ((y++) << 16) + (u << 8) + v;
+                s->rgbtoyuv[c] = ((y++) << 16) + (u << 8) + v;
                 c+= 0x010101;
             }
         }
     }
 
-    xbr->func = xbrfuncs[xbr->n - 2];
+    s->func = xbrfuncs[s->n - 2];
     return 0;
 }