Simplify the implementation by using the fact that ff_set_common_*() will ignore those links on which the formats have already been set.
Showing the changes to libavfilter (1 of 1 file). Show all
Unified · Split
| @@ -96,7 +96,9 @@ static av_cold int init(AVFilterContext *ctx) · 95 unmodified lines | ||
| 96 | 96 | return 0; |
| 97 | 97 | } |
| 98 | 98 | |
| 99 | −static int query_formats(AVFilterContext *ctx) | |
| 99 | +static int query_formats(const AVFilterContext *ctx, | |
| 100 | + AVFilterFormatsConfig **cfg_in, | |
| 101 | + AVFilterFormatsConfig **cfg_out) | |
| 100 | 102 | { |
| 101 | 103 | static const enum AVPixelFormat main_fmts[] = { |
| 102 | 104 | AV_PIX_FMT_YUVA444P, AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUVA420P, |
| @@ -105,15 +107,18 @@ static int query_formats(AVFilterContext *ctx) · 2 unmodified lines | ||
| 105 | 107 | AV_PIX_FMT_NONE |
| 106 | 108 | }; |
| 107 | 109 | static const enum AVPixelFormat alpha_fmts[] = { AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE }; |
| 108 | − AVFilterFormats *main_formats = ff_make_format_list(main_fmts); | |
| 109 | 110 | int ret; |
| 110 | 111 | |
| 111 | − if ((ret = ff_formats_ref(main_formats, &ctx->inputs[0]->outcfg.formats)) < 0 || | |
| 112 | − (ret = ff_formats_ref(main_formats, &ctx->outputs[0]->incfg.formats)) < 0) | |
| 113 | − return ret; | |
| 112 | + ret = ff_formats_ref(ff_make_format_list(alpha_fmts), | |
| 113 | + &cfg_in[1]->formats); | |
| 114 | + if (ret < 0) | |
| 115 | + return ret; | |
| 116 | + | |
| 117 | + ret = ff_set_common_formats_from_list2(ctx, cfg_in, cfg_out, main_fmts); | |
| 118 | + if (ret < 0) | |
| 119 | + return ret; | |
| 114 | 120 | |
| 115 | − return ff_formats_ref(ff_make_format_list(alpha_fmts), | |
| 116 | − &ctx->inputs[1]->outcfg.formats); | |
| 121 | + return 0; | |
| 117 | 122 | } |
| 118 | 123 | |
| 119 | 124 | static int config_input_main(AVFilterLink *inlink) |
| @@ -203,7 +208,7 @@ const AVFilter ff_vf_alphamerge = { · 83 unmodified lines | ||
| 203 | 208 | .init = init, |
| 204 | 209 | FILTER_INPUTS(alphamerge_inputs), |
| 205 | 210 | FILTER_OUTPUTS(alphamerge_outputs), |
| 206 | − FILTER_QUERY_FUNC(query_formats), | |
| 211 | + FILTER_QUERY_FUNC2(query_formats), | |
| 207 | 212 | .uninit = uninit, |
| 208 | 213 | .activate = activate, |
| 209 | 214 | .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, |