diff options
author | Clément Bœsch <u@pkh.me> | 2017-03-19 14:48:32 +0100 |
---|---|---|
committer | Clément Bœsch <u@pkh.me> | 2017-03-20 08:02:30 +0100 |
commit | 08e1376d81f380a22fc7d4c1f783e83364d4ceb6 (patch) | |
tree | 2a4561bc4d72fa7cded1a91e7168b3cb7558fb73 /libswscale/tests | |
parent | 23f3f92361a3db53e595de33cfd5440f53bee220 (diff) | |
download | ffmpeg-08e1376d81f380a22fc7d4c1f783e83364d4ceb6.tar.gz |
fate: add fate-sws-pixdesc-query
Test the pixel format querying within libswscale.
Diffstat (limited to 'libswscale/tests')
-rw-r--r-- | libswscale/tests/.gitignore | 1 | ||||
-rw-r--r-- | libswscale/tests/pixdesc_query.c | 90 |
2 files changed, 91 insertions, 0 deletions
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; +} |