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 | return 0; | 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 | static const enum AVPixelFormat main_fmts[] = { | 103 | static const enum AVPixelFormat main_fmts[] = { |
| 102 | AV_PIX_FMT_YUVA444P, AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUVA420P, | 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 | AV_PIX_FMT_NONE | 107 | AV_PIX_FMT_NONE |
| 106 | }; | 108 | }; |
| 107 | static const enum AVPixelFormat alpha_fmts[] = { AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE }; | 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 | int ret; | 110 | int ret; |
| 110 | 111 | ||
| 111 | if ((ret = ff_formats_ref(main_formats, &ctx->inputs[0]->outcfg.formats)) < 0 || | 112 | ret = ff_formats_ref(ff_make_format_list(alpha_fmts), |
| 112 | (ret = ff_formats_ref(main_formats, &ctx->outputs[0]->incfg.formats)) < 0) | 113 | &cfg_in[1]->formats); |
| 113 | return ret; | 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), | 121 | return 0; |
| 116 | &ctx->inputs[1]->outcfg.formats); | ||
| 117 | } | 122 | } |
| 118 | 123 | ||
| 119 | static int config_input_main(AVFilterLink *inlink) | 124 | static int config_input_main(AVFilterLink *inlink) |
| @@ -203,7 +208,7 @@ const AVFilter ff_vf_alphamerge = { · 83 unmodified lines | |||
| 203 | .init = init, | 208 | .init = init, |
| 204 | FILTER_INPUTS(alphamerge_inputs), | 209 | FILTER_INPUTS(alphamerge_inputs), |
| 205 | FILTER_OUTPUTS(alphamerge_outputs), | 210 | FILTER_OUTPUTS(alphamerge_outputs), |
| 206 | FILTER_QUERY_FUNC(query_formats), | 211 | FILTER_QUERY_FUNC2(query_formats), |
| 207 | .uninit = uninit, | 212 | .uninit = uninit, |
| 208 | .activate = activate, | 213 | .activate = activate, |
| 209 | .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, | 214 | .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, |