Commit e0135a4b authored by Stefano Sabatini's avatar Stefano Sabatini

lavfi/rotate: add angle command

parent 6397264e
...@@ -5883,6 +5883,19 @@ rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none ...@@ -5883,6 +5883,19 @@ rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
@end example @end example
@end itemize @end itemize
@subsection Commands
The filter supports the following commands:
@table @option
@item a, angle
Set the angle expression.
The command accepts the same syntax of the corresponding option.
If the specified expression is not valid, it is kept at its current
value.
@end table
@section sab @section sab
Apply Shape Adaptive Blur. Apply Shape Adaptive Blur.
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#define LIBAVFILTER_VERSION_MAJOR 3 #define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MINOR 76 #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, \ #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \ LIBAVFILTER_VERSION_MINOR, \
......
...@@ -409,6 +409,29 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) ...@@ -409,6 +409,29 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
return ff_filter_frame(outlink, out); 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[] = { static const AVFilterPad rotate_inputs[] = {
{ {
.name = "default", .name = "default",
...@@ -434,6 +457,7 @@ AVFilter avfilter_vf_rotate = { ...@@ -434,6 +457,7 @@ AVFilter avfilter_vf_rotate = {
.init = init, .init = init,
.uninit = uninit, .uninit = uninit,
.query_formats = query_formats, .query_formats = query_formats,
.process_command = process_command,
.inputs = rotate_inputs, .inputs = rotate_inputs,
.outputs = rotate_outputs, .outputs = rotate_outputs,
.priv_class = &rotate_class, .priv_class = &rotate_class,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment