#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))
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;
}
{
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);
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;
static int init(AVFilterContext *ctx)
{
- XBRContext *xbr = ctx->priv;
+ XBRContext *s = ctx->priv;
static const xbrfunc_t xbrfuncs[] = {xbr2x, xbr3x, xbr4x};
uint32_t c;
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;
}