[FFmpeg-cvslog] avfilter/xbr: use function pointers for xbr[234]x
Clément Bœsch
git at videolan.org
Sat Nov 15 21:23:03 CET 2014
ffmpeg | branch: master | Clément Bœsch <u at pkh.me> | Sat Nov 15 21:18:18 2014 +0100| [be96201e5bf103a42a91e06464a9b71b4112f7c6] | committer: Clément Bœsch
avfilter/xbr: use function pointers for xbr[234]x
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=be96201e5bf103a42a91e06464a9b71b4112f7c6
---
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 4f4a8f3..d143c62 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;
}
More information about the ffmpeg-cvslog
mailing list