From 617cf03656ed9bc04fcdc643417999c7306ed374 Mon Sep 17 00:00:00 2001 From: James Zern Date: Sat, 26 Mar 2022 15:17:58 -0700 Subject: [PATCH] image_dec: add WebPGetEnabledInputFileFormats() and use it to output the types supported in the examples Change-Id: Ia6b8624a2146cf72c679129065a72f215644e1e9 --- examples/cwebp.c | 1 + examples/img2webp.c | 4 +++- extras/get_disto.c | 3 ++- imageio/image_dec.c | 18 ++++++++++++++++++ imageio/image_dec.h | 3 +++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/examples/cwebp.c b/examples/cwebp.c index 8d9b6936..a9f93be0 100644 --- a/examples/cwebp.c +++ b/examples/cwebp.c @@ -620,6 +620,7 @@ static void HelpLong(void) { printf(" -af .................... auto-adjust filter strength\n"); printf(" -pre ............. pre-processing filter\n"); printf("\n"); + printf("Supported input formats:\n %s\n", WebPGetEnabledInputFileFormats()); } //------------------------------------------------------------------------------ diff --git a/examples/img2webp.c b/examples/img2webp.c index 94210923..bfb1bfc1 100644 --- a/examples/img2webp.c +++ b/examples/img2webp.c @@ -65,6 +65,8 @@ static void Help(void) { "arguments will be\n"); printf("tokenized from this file. The file name must not start with " "the character '-'.\n"); + printf("\nSupported input formats:\n %s\n", + WebPGetEnabledInputFileFormats()); } //------------------------------------------------------------------------------ @@ -186,7 +188,7 @@ int main(int argc, const char* argv[]) { verbose = 1; } else if (!strcmp(argv[c], "-h") || !strcmp(argv[c], "-help")) { Help(); - goto End; + FREE_WARGV_AND_RETURN(0); } else if (!strcmp(argv[c], "-version")) { const int enc_version = WebPGetEncoderVersion(); const int mux_version = WebPGetMuxVersion(); diff --git a/extras/get_disto.c b/extras/get_disto.c index 151beada..3aa345bb 100644 --- a/extras/get_disto.c +++ b/extras/get_disto.c @@ -223,7 +223,8 @@ static void Help(void) { " -o . save the diff map as a WebP lossless file\n" " -scale .... scale the difference map to fit [0..255] range\n" " -gray ..... use grayscale for difference map (-scale)\n" - " Also handles PNG, JPG and TIFF files, in addition to WebP.\n"); + "\nSupported input formats:\n %s\n", + WebPGetEnabledInputFileFormats()); } int main(int argc, const char* argv[]) { diff --git a/imageio/image_dec.c b/imageio/image_dec.c index 08a1b183..5e003fab 100644 --- a/imageio/image_dec.c +++ b/imageio/image_dec.c @@ -11,6 +11,24 @@ #include "./image_dec.h" +const char* WebPGetEnabledInputFileFormats(void) { + return "WebP" +#ifdef WEBP_HAVE_JPEG + ", JPEG" +#endif +#ifdef WEBP_HAVE_PNG + ", PNG" +#endif + ", PNM (PGM, PPM, PAM)" +#ifdef WEBP_HAVE_TIFF + ", TIFF" +#endif +#ifdef HAVE_WINCODEC_H + ", Windows Imaging Component (WIC)" +#endif + ""; +} + static WEBP_INLINE uint32_t GetBE32(const uint8_t buf[]) { return ((uint32_t)buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; } diff --git a/imageio/image_dec.h b/imageio/image_dec.h index df411e19..f09f564b 100644 --- a/imageio/image_dec.h +++ b/imageio/image_dec.h @@ -41,6 +41,9 @@ typedef enum { WEBP_UNSUPPORTED_FORMAT } WebPInputFileFormat; +// Returns a comma separated list of enabled input formats. +const char* WebPGetEnabledInputFileFormats(void); + // Try to infer the image format. 'data_size' should be larger than 12. // Returns WEBP_UNSUPPORTED_FORMAT if format can't be guess safely. WebPInputFileFormat WebPGuessImageType(const uint8_t* const data,