AVFILTER_DEFINE_CLASS(weave);
+static int query_formats(AVFilterContext *ctx)
+{
+ AVFilterFormats *formats = NULL;
+ int ret;
+
+ for (int fmt = 0; av_pix_fmt_desc_get(fmt); fmt++) {
+ const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
+
+ if (!(desc->flags & AV_PIX_FMT_FLAG_PAL) &&
+ !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
+ if ((ret = ff_add_format(&formats, fmt)) < 0) {
+ return ret;
+ }
+ }
+ }
+
+ return ff_set_common_formats(ctx, formats);
+}
+
static int config_props_output(AVFilterLink *outlink)
{
AVFilterContext *ctx = outlink->src;
.description = NULL_IF_CONFIG_SMALL("Weave input video fields into frames."),
.priv_size = sizeof(WeaveContext),
.priv_class = &weave_class,
+ .query_formats = query_formats,
.uninit = uninit,
.inputs = weave_inputs,
.outputs = weave_outputs,
.description = NULL_IF_CONFIG_SMALL("Weave input video fields into double number of frames."),
.priv_size = sizeof(WeaveContext),
.priv_class = &doubleweave_class,
+ .query_formats = query_formats,
.init = init,
.uninit = uninit,
.inputs = weave_inputs,