diff options
author | Dudemanguy <random342@airmail.cc> | 2023-10-21 00:57:53 -0500 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2023-10-23 19:32:53 +0000 |
commit | be0a979a0b17b49f8535ee2542cca7df4c35b04d (patch) | |
tree | 953d207578ad4f6ad979aa504ac55ad33a1c4d74 /demux/codec_tags.c | |
parent | 1ea106bac0095a9eb8e7c2ff0d076816d546df10 (diff) | |
download | mpv-be0a979a0b17b49f8535ee2542cca7df4c35b04d.tar.bz2 mpv-be0a979a0b17b49f8535ee2542cca7df4c35b04d.tar.xz |
demux: put type2format into codec_tags with helper functions
demux_mf has a big const struct which is essentially a nice list handy
list of codecs that are considered images. This is generally useful for
all demuxers (demux_mkv could use this), so instead of making yet
another list, lift it out and put it in a common place. Some things
slightly changed so it matches the very similiar mimetype mapping struct
below it. demux_mf calls a helper mapping function instead.
Diffstat (limited to 'demux/codec_tags.c')
-rw-r--r-- | demux/codec_tags.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/demux/codec_tags.c b/demux/codec_tags.c index d3b166f763..accc1d918d 100644 --- a/demux/codec_tags.c +++ b/demux/codec_tags.c @@ -180,6 +180,70 @@ void mp_set_pcm_codec(struct mp_codec_params *c, bool sign, bool is_float, c->codec = talloc_strdup(c, codec); } +// map file extension/type to an image codec name +static const char *const type_to_codec[][2] = { + { "bmp", "bmp" }, + { "dpx", "dpx" }, + { "j2c", "jpeg2000" }, + { "j2k", "jpeg2000" }, + { "jp2", "jpeg2000" }, + { "jpc", "jpeg2000" }, + { "jpeg", "mjpeg" }, + { "jpg", "mjpeg" }, + { "jps", "mjpeg" }, + { "jls", "ljpeg" }, + { "thm", "mjpeg" }, + { "db", "mjpeg" }, + { "pcd", "photocd" }, + { "pfm", "pfm" }, + { "phm", "phm" }, + { "hdr", "hdr" }, + { "pcx", "pcx" }, + { "png", "png" }, + { "pns", "png" }, + { "ptx", "ptx" }, + { "tga", "targa" }, + { "tif", "tiff" }, + { "tiff", "tiff" }, + { "sgi", "sgi" }, + { "sun", "sunrast" }, + { "ras", "sunrast" }, + { "rs", "sunrast" }, + { "ra", "sunrast" }, + { "im1", "sunrast" }, + { "im8", "sunrast" }, + { "im24", "sunrast" }, + { "im32", "sunrast" }, + { "sunras", "sunrast" }, + { "xbm", "xbm" }, + { "pam", "pam" }, + { "pbm", "pbm" }, + { "pgm", "pgm" }, + { "pgmyuv", "pgmyuv" }, + { "ppm", "ppm" }, + { "pnm", "ppm" }, + { "gif", "gif" }, + { "pix", "brender_pix" }, + { "exr", "exr" }, + { "pic", "pictor" }, + { "qoi", "qoi" }, + { "xface", "xface" }, + { "xwd", "xwd" }, + { "svg", "svg" }, + {0} +}; + +const char *mp_map_type_to_image_codec(const char *type) +{ + if (type) { + for (int n = 0; type_to_codec[n][0]; n++) { + if (strcasecmp(type_to_codec[n][0], type) == 0) + return type_to_codec[n][1]; + } + } + return NULL; +}; + static const char *const mimetype_to_codec[][2] = { {"image/apng", "apng"}, {"image/avif", "av1"}, |