X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_frei0r.c;h=c084d5b13be38c4c4a5f00419b0cebbab5e3f1da;hb=257a83b969157eb76c18158a4e503e908d8b1125;hp=c775ed1d99620a1afc1d7cea79fccaf9ab359327;hpb=0ff76ca86e0ea4dcf2b392c45f5fac8e5576bb0d;p=ffmpeg diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c index c775ed1d996..c084d5b13be 100644 --- a/libavfilter/vf_frei0r.c +++ b/libavfilter/vf_frei0r.c @@ -93,7 +93,7 @@ static int set_param(AVFilterContext *ctx, f0r_param_info_t info, int index, cha double d; f0r_param_color_t col; f0r_param_position_t pos; - f0r_param_string *str; + f0r_param_string str; } val; char *tail; uint8_t rgba[4]; @@ -338,7 +338,7 @@ static int query_formats(AVFilterContext *ctx) return ret; } else { /* F0R_COLOR_MODEL_PACKED32 */ static const enum AVPixelFormat pix_fmts[] = { - AV_PIX_FMT_BGRA, AV_PIX_FMT_ARGB, AV_PIX_FMT_ABGR, AV_PIX_FMT_ARGB, AV_PIX_FMT_NONE + AV_PIX_FMT_BGRA, AV_PIX_FMT_ARGB, AV_PIX_FMT_ABGR, AV_PIX_FMT_NONE }; formats = ff_make_format_list(pix_fmts); } @@ -371,11 +371,25 @@ 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) +{ + Frei0rContext *s = ctx->priv; + int ret; + + ret = ff_filter_process_command(ctx, cmd, args, res, res_len, flags); + if (ret < 0) + return ret; + + return set_params(ctx, s->params); +} + #define OFFSET(x) offsetof(Frei0rContext, x) #define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM +#define TFLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_RUNTIME_PARAM static const AVOption frei0r_options[] = { { "filter_name", NULL, OFFSET(dl_name), AV_OPT_TYPE_STRING, .flags = FLAGS }, - { "filter_params", NULL, OFFSET(params), AV_OPT_TYPE_STRING, .flags = FLAGS }, + { "filter_params", NULL, OFFSET(params), AV_OPT_TYPE_STRING, .flags = TFLAGS }, { NULL } }; @@ -409,6 +423,7 @@ AVFilter ff_vf_frei0r = { .priv_class = &frei0r_class, .inputs = avfilter_vf_frei0r_inputs, .outputs = avfilter_vf_frei0r_outputs, + .process_command = process_command, }; static av_cold int source_init(AVFilterContext *ctx)