lavfi/rotate: add angle command
This commit is contained in:
parent
6397264e84
commit
e0135a4bcd
@ -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 @@
|
|||||||
|
|
||||||
#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)
|
|||||||
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 = {
|
|||||||
.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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user