lavfi/rotate: add angle command

This commit is contained in:
Stefano Sabatini 2013-06-11 16:02:39 +02:00
parent 6397264e84
commit e0135a4bcd
3 changed files with 38 additions and 1 deletions

View File

@ -5883,6 +5883,19 @@ rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
@end example
@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
Apply Shape Adaptive Blur.

View File

@ -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, \

View File

@ -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,