summaryrefslogtreecommitdiff
path: root/libswscale
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2017-03-19 14:48:32 +0100
committerClément Bœsch <u@pkh.me>2017-03-20 08:02:30 +0100
commit08e1376d81f380a22fc7d4c1f783e83364d4ceb6 (patch)
tree2a4561bc4d72fa7cded1a91e7168b3cb7558fb73 /libswscale
parent23f3f92361a3db53e595de33cfd5440f53bee220 (diff)
fate: add fate-sws-pixdesc-query
Test the pixel format querying within libswscale.
Diffstat (limited to 'libswscale')
-rw-r--r--libswscale/Makefile1
-rw-r--r--libswscale/tests/.gitignore1
-rw-r--r--libswscale/tests/pixdesc_query.c90
3 files changed, 92 insertions, 0 deletions
diff --git a/libswscale/Makefile b/libswscale/Makefile
index 0272039a6c..183167cced 100644
--- a/libswscale/Makefile
+++ b/libswscale/Makefile
@@ -26,4 +26,5 @@ OBJS-$(CONFIG_SHARED) += log2_tab.o
SLIBOBJS-$(HAVE_GNU_WINDRES) += swscaleres.o
TESTPROGS = colorspace \
+ pixdesc_query \
swscale \
diff --git a/libswscale/tests/.gitignore b/libswscale/tests/.gitignore
index 0ac3691ecd..1a26f038c4 100644
--- a/libswscale/tests/.gitignore
+++ b/libswscale/tests/.gitignore
@@ -1,2 +1,3 @@
/colorspace
+/pixdesc_query
/swscale
diff --git a/libswscale/tests/pixdesc_query.c b/libswscale/tests/pixdesc_query.c
new file mode 100644
index 0000000000..bc49809d4b
--- /dev/null
+++ b/libswscale/tests/pixdesc_query.c
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2017 Clément Bœsch <u pkh me>
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "libswscale/swscale_internal.h"
+
+/* TODO: drop this wrapper when all the is*() becomes functions */
+#define DECLARE_WRAPPER(macro) \
+static int macro##_func(enum AVPixelFormat pix_fmt) \
+{ \
+ return macro(pix_fmt); \
+}
+
+DECLARE_WRAPPER(is16BPS)
+DECLARE_WRAPPER(isNBPS)
+DECLARE_WRAPPER(isBE)
+DECLARE_WRAPPER(isYUV)
+DECLARE_WRAPPER(isPlanarYUV)
+DECLARE_WRAPPER(isRGB)
+DECLARE_WRAPPER(isGray)
+DECLARE_WRAPPER(isRGBinInt)
+DECLARE_WRAPPER(isBGRinInt)
+DECLARE_WRAPPER(isRGBinBytes)
+DECLARE_WRAPPER(isBGRinBytes)
+DECLARE_WRAPPER(isBayer)
+DECLARE_WRAPPER(isAnyRGB)
+DECLARE_WRAPPER(isALPHA)
+DECLARE_WRAPPER(isPacked)
+DECLARE_WRAPPER(isPlanar)
+DECLARE_WRAPPER(isPackedRGB)
+DECLARE_WRAPPER(isPlanarRGB)
+DECLARE_WRAPPER(usePal)
+
+static const struct {
+ const char *class;
+ int (*cond)(enum AVPixelFormat pix_fmt);
+} query_tab[] = {
+ {"is16BPS", is16BPS_func},
+ {"isNBPS", isNBPS_func},
+ {"isBE", isBE_func},
+ {"isYUV", isYUV_func},
+ {"isPlanarYUV", isPlanarYUV_func},
+ {"isRGB", isRGB_func},
+ {"Gray", isGray_func},
+ {"RGBinInt", isRGBinInt_func},
+ {"BGRinInt", isBGRinInt_func},
+ {"RGBinBytes", isRGBinBytes_func},
+ {"BGRinBytes", isBGRinBytes_func},
+ {"Bayer", isBayer_func},
+ {"AnyRGB", isAnyRGB_func},
+ {"ALPHA", isALPHA_func},
+ {"Packed", isPacked_func},
+ {"Planar", isPlanar_func},
+ {"PackedRGB", isPackedRGB_func},
+ {"PlanarRGB", isPlanarRGB_func},
+ {"usePal", usePal_func},
+};
+
+int main(void)
+{
+ int i;
+
+ for (i = 0; i < FF_ARRAY_ELEMS(query_tab); i++) {
+ const AVPixFmtDescriptor *pix_desc = NULL;
+ printf("%s:\n", query_tab[i].class);
+ while ((pix_desc = av_pix_fmt_desc_next(pix_desc))) {
+ enum AVPixelFormat pix_fmt = av_pix_fmt_desc_get_id(pix_desc);
+ if (query_tab[i].cond(pix_fmt))
+ printf(" %s\n", pix_desc->name);
+ }
+ printf("\n");
+ }
+ return 0;
+}