|
|
|
@ -273,6 +273,46 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) |
|
|
|
|
return ff_filter_frame(inlink->dst->outputs[0], frame); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int process_command(AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags) |
|
|
|
|
{ |
|
|
|
|
DrawBoxContext *s = ctx->priv; |
|
|
|
|
int ret; |
|
|
|
|
|
|
|
|
|
if ( !strcmp(cmd, "w") || !strcmp(cmd, "width") |
|
|
|
|
|| !strcmp(cmd, "h") || !strcmp(cmd, "height") |
|
|
|
|
|| !strcmp(cmd, "x") || !strcmp(cmd, "y") |
|
|
|
|
|| !strcmp(cmd, "t") || !strcmp(cmd, "thickness") |
|
|
|
|
|| !strcmp(cmd, "c") || !strcmp(cmd, "color") |
|
|
|
|
|| !strcmp(cmd, "replace")) { |
|
|
|
|
|
|
|
|
|
int old_x = s->x; |
|
|
|
|
int old_y = s->y; |
|
|
|
|
int old_w = s->w; |
|
|
|
|
int old_h = s->h; |
|
|
|
|
int old_t = s->thickness; |
|
|
|
|
int old_r = s->replace; |
|
|
|
|
|
|
|
|
|
AVFilterLink *inlink = ctx->inputs[0]; |
|
|
|
|
|
|
|
|
|
av_opt_set(s, cmd, args, 0); |
|
|
|
|
init(ctx); |
|
|
|
|
|
|
|
|
|
if ((ret = config_input(inlink)) < 0) { |
|
|
|
|
s->x = old_x; |
|
|
|
|
s->y = old_y; |
|
|
|
|
s->w = old_w; |
|
|
|
|
s->h = old_h; |
|
|
|
|
s->thickness = old_t; |
|
|
|
|
s->replace = old_r; |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
ret = AVERROR(ENOSYS); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define OFFSET(x) offsetof(DrawBoxContext, x) |
|
|
|
|
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM |
|
|
|
|
|
|
|
|
@ -323,6 +363,7 @@ AVFilter ff_vf_drawbox = { |
|
|
|
|
.query_formats = query_formats, |
|
|
|
|
.inputs = drawbox_inputs, |
|
|
|
|
.outputs = drawbox_outputs, |
|
|
|
|
.process_command = process_command, |
|
|
|
|
.flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, |
|
|
|
|
}; |
|
|
|
|
#endif /* CONFIG_DRAWBOX_FILTER */ |
|
|
|
@ -457,6 +498,7 @@ AVFilter ff_vf_drawgrid = { |
|
|
|
|
.inputs = drawgrid_inputs, |
|
|
|
|
.outputs = drawgrid_outputs, |
|
|
|
|
.flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, |
|
|
|
|
.process_command = process_command, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#endif /* CONFIG_DRAWGRID_FILTER */ |
|
|
|
|