From e0135a4bcdc1bc74760c1f2fcd88f92b3445e822 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Tue, 11 Jun 2013 16:02:39 +0200 Subject: lavfi/rotate: add angle command --- libavfilter/version.h | 2 +- libavfilter/vf_rotate.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) (limited to 'libavfilter') diff --git a/libavfilter/version.h b/libavfilter/version.h index c71cce65a8..4485a7fb04 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -31,7 +31,7 @@ #define LIBAVFILTER_VERSION_MAJOR 3 #define LIBAVFILTER_VERSION_MINOR 76 -#define LIBAVFILTER_VERSION_MICRO 100 +#define LIBAVFILTER_VERSION_MICRO 101 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ LIBAVFILTER_VERSION_MINOR, \ diff --git a/libavfilter/vf_rotate.c b/libavfilter/vf_rotate.c index b2fe66197d..a032f99086 100644 --- a/libavfilter/vf_rotate.c +++ b/libavfilter/vf_rotate.c @@ -409,6 +409,29 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) return ff_filter_frame(outlink, out); } +static int process_command(AVFilterContext *ctx, const char *cmd, const char *args, + char *res, int res_len, int flags) +{ + RotContext *rot = ctx->priv; + int ret; + + if (!strcmp(cmd, "angle") || !strcmp(cmd, "a")) { + AVExpr *old = rot->angle_expr; + ret = av_expr_parse(&rot->angle_expr, args, var_names, + NULL, NULL, NULL, NULL, 0, ctx); + if (ret < 0) { + av_log(ctx, AV_LOG_ERROR, + "Error when parsing the expression '%s' for angle command\n", args); + rot->angle_expr = old; + return ret; + } + av_expr_free(old); + } else + ret = AVERROR(ENOSYS); + + return ret; +} + static const AVFilterPad rotate_inputs[] = { { .name = "default", @@ -434,6 +457,7 @@ AVFilter avfilter_vf_rotate = { .init = init, .uninit = uninit, .query_formats = query_formats, + .process_command = process_command, .inputs = rotate_inputs, .outputs = rotate_outputs, .priv_class = &rotate_class, -- cgit v1.2.3