1cabdff1aSopenharmony_ci/* 2cabdff1aSopenharmony_ci * Image format 3cabdff1aSopenharmony_ci * Copyright (c) 2000, 2001, 2002 Fabrice Bellard 4cabdff1aSopenharmony_ci * Copyright (c) 2004 Michael Niedermayer 5cabdff1aSopenharmony_ci * 6cabdff1aSopenharmony_ci * This file is part of FFmpeg. 7cabdff1aSopenharmony_ci * 8cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or 9cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public 10cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either 11cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version. 12cabdff1aSopenharmony_ci * 13cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful, 14cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 15cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16cabdff1aSopenharmony_ci * Lesser General Public License for more details. 17cabdff1aSopenharmony_ci * 18cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public 19cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software 20cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21cabdff1aSopenharmony_ci */ 22cabdff1aSopenharmony_ci 23cabdff1aSopenharmony_ci#include "libavutil/avstring.h" 24cabdff1aSopenharmony_ci#include "internal.h" 25cabdff1aSopenharmony_ci#include "img2.h" 26cabdff1aSopenharmony_ci 27cabdff1aSopenharmony_ciconst IdStrMap ff_img_tags[] = { 28cabdff1aSopenharmony_ci { AV_CODEC_ID_MJPEG, "jpeg" }, 29cabdff1aSopenharmony_ci { AV_CODEC_ID_MJPEG, "jpg" }, 30cabdff1aSopenharmony_ci { AV_CODEC_ID_MJPEG, "jps" }, 31cabdff1aSopenharmony_ci { AV_CODEC_ID_MJPEG, "mpo" }, 32cabdff1aSopenharmony_ci { AV_CODEC_ID_LJPEG, "ljpg" }, 33cabdff1aSopenharmony_ci { AV_CODEC_ID_JPEGLS, "jls" }, 34cabdff1aSopenharmony_ci { AV_CODEC_ID_PNG, "png" }, 35cabdff1aSopenharmony_ci { AV_CODEC_ID_PNG, "pns" }, 36cabdff1aSopenharmony_ci { AV_CODEC_ID_PNG, "mng" }, 37cabdff1aSopenharmony_ci { AV_CODEC_ID_PPM, "ppm" }, 38cabdff1aSopenharmony_ci { AV_CODEC_ID_PPM, "pnm" }, 39cabdff1aSopenharmony_ci { AV_CODEC_ID_PGM, "pgm" }, 40cabdff1aSopenharmony_ci { AV_CODEC_ID_PGMYUV, "pgmyuv" }, 41cabdff1aSopenharmony_ci { AV_CODEC_ID_PBM, "pbm" }, 42cabdff1aSopenharmony_ci { AV_CODEC_ID_PAM, "pam" }, 43cabdff1aSopenharmony_ci { AV_CODEC_ID_PFM, "pfm" }, 44cabdff1aSopenharmony_ci { AV_CODEC_ID_PHM, "phm" }, 45cabdff1aSopenharmony_ci { AV_CODEC_ID_CRI, "cri" }, 46cabdff1aSopenharmony_ci { AV_CODEC_ID_ALIAS_PIX, "pix" }, 47cabdff1aSopenharmony_ci { AV_CODEC_ID_DDS, "dds" }, 48cabdff1aSopenharmony_ci { AV_CODEC_ID_MPEG1VIDEO, "mpg1-img" }, 49cabdff1aSopenharmony_ci { AV_CODEC_ID_MPEG2VIDEO, "mpg2-img" }, 50cabdff1aSopenharmony_ci { AV_CODEC_ID_MPEG4, "mpg4-img" }, 51cabdff1aSopenharmony_ci { AV_CODEC_ID_RAWVIDEO, "y" }, 52cabdff1aSopenharmony_ci { AV_CODEC_ID_RAWVIDEO, "raw" }, 53cabdff1aSopenharmony_ci { AV_CODEC_ID_BMP, "bmp" }, 54cabdff1aSopenharmony_ci { AV_CODEC_ID_TARGA, "tga" }, 55cabdff1aSopenharmony_ci { AV_CODEC_ID_TIFF, "tiff" }, 56cabdff1aSopenharmony_ci { AV_CODEC_ID_TIFF, "tif" }, 57cabdff1aSopenharmony_ci { AV_CODEC_ID_TIFF, "dng" }, 58cabdff1aSopenharmony_ci { AV_CODEC_ID_SGI, "sgi" }, 59cabdff1aSopenharmony_ci { AV_CODEC_ID_PTX, "ptx" }, 60cabdff1aSopenharmony_ci { AV_CODEC_ID_PHOTOCD, "pcd" }, 61cabdff1aSopenharmony_ci { AV_CODEC_ID_PCX, "pcx" }, 62cabdff1aSopenharmony_ci { AV_CODEC_ID_QDRAW, "pic" }, 63cabdff1aSopenharmony_ci { AV_CODEC_ID_QDRAW, "pct" }, 64cabdff1aSopenharmony_ci { AV_CODEC_ID_QDRAW, "pict" }, 65cabdff1aSopenharmony_ci { AV_CODEC_ID_SUNRAST, "sun" }, 66cabdff1aSopenharmony_ci { AV_CODEC_ID_SUNRAST, "ras" }, 67cabdff1aSopenharmony_ci { AV_CODEC_ID_SUNRAST, "rs" }, 68cabdff1aSopenharmony_ci { AV_CODEC_ID_SUNRAST, "im1" }, 69cabdff1aSopenharmony_ci { AV_CODEC_ID_SUNRAST, "im8" }, 70cabdff1aSopenharmony_ci { AV_CODEC_ID_SUNRAST, "im24" }, 71cabdff1aSopenharmony_ci { AV_CODEC_ID_SUNRAST, "im32" }, 72cabdff1aSopenharmony_ci { AV_CODEC_ID_SUNRAST, "sunras" }, 73cabdff1aSopenharmony_ci { AV_CODEC_ID_SVG, "svg" }, 74cabdff1aSopenharmony_ci { AV_CODEC_ID_SVG, "svgz" }, 75cabdff1aSopenharmony_ci { AV_CODEC_ID_JPEG2000, "j2c" }, 76cabdff1aSopenharmony_ci { AV_CODEC_ID_JPEG2000, "jp2" }, 77cabdff1aSopenharmony_ci { AV_CODEC_ID_JPEG2000, "jpc" }, 78cabdff1aSopenharmony_ci { AV_CODEC_ID_JPEG2000, "j2k" }, 79cabdff1aSopenharmony_ci { AV_CODEC_ID_DPX, "dpx" }, 80cabdff1aSopenharmony_ci { AV_CODEC_ID_EXR, "exr" }, 81cabdff1aSopenharmony_ci { AV_CODEC_ID_PICTOR, "pic" }, 82cabdff1aSopenharmony_ci { AV_CODEC_ID_V210X, "yuv10" }, 83cabdff1aSopenharmony_ci { AV_CODEC_ID_WEBP, "webp" }, 84cabdff1aSopenharmony_ci { AV_CODEC_ID_XBM, "xbm" }, 85cabdff1aSopenharmony_ci { AV_CODEC_ID_XPM, "xpm" }, 86cabdff1aSopenharmony_ci { AV_CODEC_ID_XFACE, "xface" }, 87cabdff1aSopenharmony_ci { AV_CODEC_ID_XWD, "xwd" }, 88cabdff1aSopenharmony_ci { AV_CODEC_ID_GEM, "img" }, 89cabdff1aSopenharmony_ci { AV_CODEC_ID_GEM, "ximg" }, 90cabdff1aSopenharmony_ci { AV_CODEC_ID_GEM, "timg" }, 91cabdff1aSopenharmony_ci { AV_CODEC_ID_VBN, "vbn" }, 92cabdff1aSopenharmony_ci { AV_CODEC_ID_JPEGXL, "jxl" }, 93cabdff1aSopenharmony_ci { AV_CODEC_ID_QOI, "qoi" }, 94cabdff1aSopenharmony_ci { AV_CODEC_ID_NONE, NULL } 95cabdff1aSopenharmony_ci}; 96cabdff1aSopenharmony_ci 97cabdff1aSopenharmony_cistatic enum AVCodecID str2id(const IdStrMap *tags, const char *str) 98cabdff1aSopenharmony_ci{ 99cabdff1aSopenharmony_ci str = strrchr(str, '.'); 100cabdff1aSopenharmony_ci if (!str) 101cabdff1aSopenharmony_ci return AV_CODEC_ID_NONE; 102cabdff1aSopenharmony_ci str++; 103cabdff1aSopenharmony_ci 104cabdff1aSopenharmony_ci while (tags->id) { 105cabdff1aSopenharmony_ci if (!av_strcasecmp(str, tags->str)) 106cabdff1aSopenharmony_ci return tags->id; 107cabdff1aSopenharmony_ci 108cabdff1aSopenharmony_ci tags++; 109cabdff1aSopenharmony_ci } 110cabdff1aSopenharmony_ci return AV_CODEC_ID_NONE; 111cabdff1aSopenharmony_ci} 112cabdff1aSopenharmony_ci 113cabdff1aSopenharmony_cienum AVCodecID ff_guess_image2_codec(const char *filename) 114cabdff1aSopenharmony_ci{ 115cabdff1aSopenharmony_ci return str2id(ff_img_tags, filename); 116cabdff1aSopenharmony_ci} 117