From be96201e5bf103a42a91e06464a9b71b4112f7c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= <u@pkh.me> Date: Sat, 15 Nov 2014 21:18:18 +0100 Subject: [PATCH] avfilter/xbr: use function pointers for xbr[234]x --- libavfilter/vf_xbr.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libavfilter/vf_xbr.c b/libavfilter/vf_xbr.c index 4f4a8f357b5..d143c622d3d 100644 --- a/libavfilter/vf_xbr.c +++ b/libavfilter/vf_xbr.c @@ -40,9 +40,12 @@ #define RED_BLUE_MASK 0x00FF00FF #define GREEN_MASK 0x0000FF00 +typedef void (*xbrfunc_t)(AVFrame *input, AVFrame *output, const uint32_t *r2y); + typedef struct { const AVClass *class; int n; + xbrfunc_t func; uint32_t rgbtoyuv[1<<24]; } XBRContext; @@ -392,12 +395,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) } av_frame_copy_props(out, in); - if (xbr->n == 4) - xbr4x(in, out, r2y); - else if (xbr->n == 3) - xbr3x(in, out, r2y); - else - xbr2x(in, out, r2y); + xbr->func(in, out, r2y); out->width = outlink->w; out->height = outlink->h; @@ -409,6 +407,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) static int init(AVFilterContext *ctx) { XBRContext *xbr = ctx->priv; + static const xbrfunc_t xbrfuncs[] = {xbr2x, xbr3x, xbr4x}; + uint32_t c; int bg, rg, g; @@ -427,6 +427,7 @@ static int init(AVFilterContext *ctx) } } + xbr->func = xbrfuncs[xbr->n - 2]; return 0; } -- GitLab