lavfi/vmafmotion: Allow more pix_fmts.
authorCarl Eugen Hoyos <ceffmpeg@gmail.com>
Sat, 30 Sep 2017 19:39:08 +0000 (21:39 +0200)
committerCarl Eugen Hoyos <ceffmpeg@gmail.com>
Sun, 1 Oct 2017 18:53:43 +0000 (20:53 +0200)
libavfilter/vf_vmafmotion.c

index 6b6150a..9bcc4ff 100644 (file)
@@ -261,15 +261,19 @@ int ff_vmafmotion_init(VMAFMotionData *s,
 
 static int query_formats(AVFilterContext *ctx)
 {
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUV444P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV420P10,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
+    AVFilterFormats *fmts_list = NULL;
+    int format, ret;
+
+    for (format = 0; av_pix_fmt_desc_get(format); format++) {
+        const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(format);
+        if (!(desc->flags & (AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_HWACCEL | AV_PIX_FMT_FLAG_BITSTREAM | AV_PIX_FMT_FLAG_PAL)) &&
+            (desc->flags & AV_PIX_FMT_FLAG_PLANAR || desc->nb_components == 1) &&
+            (!(desc->flags & AV_PIX_FMT_FLAG_BE) == !HAVE_BIGENDIAN || desc->comp[0].depth == 8) &&
+            (desc->comp[0].depth == 8 || desc->comp[0].depth == 10) &&
+            (ret = ff_add_format(&fmts_list, format)) < 0)
+            return ret;
+    }
+
     return ff_set_common_formats(ctx, fmts_list);
 }