From patchwork Sun Mar 19 14:00:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?Q2zDqW1lbnQgQsWTc2No?= X-Patchwork-Id: 3012 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.50.79 with SMTP id y76csp1028001vsy; Sun, 19 Mar 2017 07:01:13 -0700 (PDT) X-Received: by 10.28.10.70 with SMTP id 67mr6328772wmk.76.1489932073785; Sun, 19 Mar 2017 07:01:13 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o16si429551wra.107.2017.03.19.07.01.12; Sun, 19 Mar 2017 07:01:13 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 585526883B7; Sun, 19 Mar 2017 16:00:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from golem.pkh.me (LStLambert-657-1-117-164.w92-154.abo.wanadoo.fr [92.154.28.164]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8381168830C for ; Sun, 19 Mar 2017 16:00:44 +0200 (EET) Received: from localhost (golem.pkh.me [local]) by golem.pkh.me (OpenSMTPD) with ESMTPA id 5c660398; Sun, 19 Mar 2017 14:01:01 +0000 (UTC) From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 Mar 2017 15:00:55 +0100 Message-Id: <20170319140056.7090-1-u@pkh.me> X-Mailer: git-send-email 2.12.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] fate: add fate-sws-pixdesc-query X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Test the pixel format querying within libswscale. --- libswscale/Makefile | 1 + libswscale/tests/.gitignore | 1 + libswscale/tests/pixdesc_query.c | 78 ++++++++ tests/Makefile | 1 + tests/fate/libswscale.mak | 7 + tests/ref/fate/sws-pixdesc-query | 416 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 504 insertions(+) create mode 100644 libswscale/tests/pixdesc_query.c create mode 100644 tests/fate/libswscale.mak create mode 100644 tests/ref/fate/sws-pixdesc-query 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..d1ce1eb4a8 --- /dev/null +++ b/libswscale/tests/pixdesc_query.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2017 Clément Bœsch + * + * 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(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[] = { + {"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; +} diff --git a/tests/Makefile b/tests/Makefile index 53d900bdba..66d99106ff 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -145,6 +145,7 @@ include $(SRC_PATH)/tests/fate/libavformat.mak include $(SRC_PATH)/tests/fate/libavresample.mak include $(SRC_PATH)/tests/fate/libavutil.mak include $(SRC_PATH)/tests/fate/libswresample.mak +include $(SRC_PATH)/tests/fate/libswscale.mak include $(SRC_PATH)/tests/fate/lossless-audio.mak include $(SRC_PATH)/tests/fate/lossless-video.mak include $(SRC_PATH)/tests/fate/matroska.mak diff --git a/tests/fate/libswscale.mak b/tests/fate/libswscale.mak new file mode 100644 index 0000000000..e72fe590a8 --- /dev/null +++ b/tests/fate/libswscale.mak @@ -0,0 +1,7 @@ +FATE_LIBSWSCALE += fate-sws-pixdesc-query +fate-sws-pixdesc-query: libswscale/tests/pixdesc_query$(EXESUF) +fate-sws-pixdesc-query: CMD = run libswscale/tests/pixdesc_query + +FATE_LIBSWSCALE += $(FATE_LIBSWSCALE-yes) +FATE-$(CONFIG_SWSCALE) += $(FATE_LIBSWSCALE) +fate-libswscale: $(FATE_LIBSWSCALE) diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query new file mode 100644 index 0000000000..013c59da50 --- /dev/null +++ b/tests/ref/fate/sws-pixdesc-query @@ -0,0 +1,416 @@ +Gray: + gray + gray16be + gray16le + ya8 + ya16be + ya16le + gray12be + gray12le + gray10be + gray10le + +RGBinInt: + rgb24 + monow + monob + rgb8 + rgb4 + rgb4_byte + abgr + bgra + rgb48be + rgb48le + rgb565be + rgb565le + rgb555be + rgb555le + rgb444le + rgb444be + rgba64be + rgba64le + +BGRinInt: + bgr24 + monow + monob + bgr8 + bgr4 + bgr4_byte + argb + rgba + bgr565be + bgr565le + bgr555be + bgr555le + bgr444le + bgr444be + bgr48be + bgr48le + bgra64be + bgra64le + +RGBinBytes: + rgb24 + argb + rgba + rgb48be + rgb48le + rgba64be + rgba64le + +BGRinBytes: + bgr24 + abgr + bgra + bgr48be + bgr48le + bgra64be + bgra64le + +Bayer: + bayer_bggr8 + bayer_rggb8 + bayer_gbrg8 + bayer_grbg8 + bayer_bggr16le + bayer_bggr16be + bayer_rggb16le + bayer_rggb16be + bayer_gbrg16le + bayer_gbrg16be + bayer_grbg16le + bayer_grbg16be + +AnyRGB: + rgb24 + bgr24 + monow + monob + bgr8 + bgr4 + bgr4_byte + rgb8 + rgb4 + rgb4_byte + argb + rgba + abgr + bgra + rgb48be + rgb48le + rgb565be + rgb565le + rgb555be + rgb555le + bgr565be + bgr565le + bgr555be + bgr555le + rgb444le + rgb444be + bgr444le + bgr444be + bgr48be + bgr48le + gbrp + gbrp9be + gbrp9le + gbrp10be + gbrp10le + gbrp16be + gbrp16le + rgba64be + rgba64le + bgra64be + bgra64le + gbrap + gbrap16be + gbrap16le + 0rgb + rgb0 + 0bgr + bgr0 + gbrp12be + gbrp12le + gbrp14be + gbrp14le + bayer_bggr8 + bayer_rggb8 + bayer_gbrg8 + bayer_grbg8 + bayer_bggr16le + bayer_bggr16be + bayer_rggb16le + bayer_rggb16be + bayer_gbrg16le + bayer_gbrg16be + bayer_grbg16le + bayer_grbg16be + gbrap12be + gbrap12le + gbrap10be + gbrap10le + +ALPHA: + pal8 + argb + rgba + abgr + bgra + yuva420p + ya8 + yuva422p + yuva444p + yuva420p9be + yuva420p9le + yuva422p9be + yuva422p9le + yuva444p9be + yuva444p9le + yuva420p10be + yuva420p10le + yuva422p10be + yuva422p10le + yuva444p10be + yuva444p10le + yuva420p16be + yuva420p16le + yuva422p16be + yuva422p16le + yuva444p16be + yuva444p16le + rgba64be + rgba64le + bgra64be + bgra64le + ya16be + ya16le + gbrap + gbrap16be + gbrap16le + ayuv64le + ayuv64be + gbrap12be + gbrap12le + gbrap10be + gbrap10le + +Packed: + yuyv422 + rgb24 + bgr24 + monow + monob + pal8 + uyvy422 + bgr8 + bgr4 + bgr4_byte + rgb8 + rgb4 + rgb4_byte + argb + rgba + abgr + bgra + rgb48be + rgb48le + rgb565be + rgb565le + rgb555be + rgb555le + bgr565be + bgr565le + bgr555be + bgr555le + rgb444le + rgb444be + bgr444le + bgr444be + ya8 + bgr48be + bgr48le + rgba64be + rgba64le + bgra64be + bgra64le + yvyu422 + ya16be + ya16le + ayuv64le + ayuv64be + +Planar: + yuv420p + yuv422p + yuv444p + yuv410p + yuv411p + yuvj420p + yuvj422p + yuvj444p + nv12 + nv21 + yuv440p + yuvj440p + yuva420p + yuv420p16le + yuv420p16be + yuv422p16le + yuv422p16be + yuv444p16le + yuv444p16be + yuv420p9be + yuv420p9le + yuv420p10be + yuv420p10le + yuv422p10be + yuv422p10le + yuv444p9be + yuv444p9le + yuv444p10be + yuv444p10le + yuv422p9be + yuv422p9le + gbrp + gbrp9be + gbrp9le + gbrp10be + gbrp10le + gbrp16be + gbrp16le + yuva422p + yuva444p + yuva420p9be + yuva420p9le + yuva422p9be + yuva422p9le + yuva444p9be + yuva444p9le + yuva420p10be + yuva420p10le + yuva422p10be + yuva422p10le + yuva444p10be + yuva444p10le + yuva420p16be + yuva420p16le + yuva422p16be + yuva422p16le + yuva444p16be + yuva444p16le + nv16 + nv20le + nv20be + gbrap + gbrap16be + gbrap16le + yuv420p12be + yuv420p12le + yuv420p14be + yuv420p14le + yuv422p12be + yuv422p12le + yuv422p14be + yuv422p14le + yuv444p12be + yuv444p12le + yuv444p14be + yuv444p14le + gbrp12be + gbrp12le + gbrp14be + gbrp14le + yuvj411p + yuv440p10le + yuv440p10be + yuv440p12le + yuv440p12be + p010le + p010be + gbrap12be + gbrap12le + gbrap10be + gbrap10le + p016le + p016be + +PackedRGB: + rgb24 + bgr24 + bgr8 + bgr4 + bgr4_byte + rgb8 + rgb4 + rgb4_byte + argb + rgba + abgr + bgra + rgb48be + rgb48le + rgb565be + rgb565le + rgb555be + rgb555le + bgr565be + bgr565le + bgr555be + bgr555le + rgb444le + rgb444be + bgr444le + bgr444be + bgr48be + bgr48le + rgba64be + rgba64le + bgra64be + bgra64le + 0rgb + rgb0 + 0bgr + bgr0 + bayer_bggr8 + bayer_rggb8 + bayer_gbrg8 + bayer_grbg8 + bayer_bggr16le + bayer_bggr16be + bayer_rggb16le + bayer_rggb16be + bayer_gbrg16le + bayer_gbrg16be + bayer_grbg16le + bayer_grbg16be + +PlanarRGB: + gbrp + gbrp9be + gbrp9le + gbrp10be + gbrp10le + gbrp16be + gbrp16le + gbrap + gbrap16be + gbrap16le + gbrp12be + gbrp12le + gbrp14be + gbrp14le + gbrap12be + gbrap12le + gbrap10be + gbrap10le + +usePal: + gray + pal8 + bgr8 + bgr4_byte + rgb8 + rgb4_byte +