summaryrefslogtreecommitdiffstats
path: root/demux/codec_tags.c
diff options
context:
space:
mode:
authorDudemanguy <random342@airmail.cc>2023-10-21 00:57:53 -0500
committerDudemanguy <random342@airmail.cc>2023-10-23 19:32:53 +0000
commitbe0a979a0b17b49f8535ee2542cca7df4c35b04d (patch)
tree953d207578ad4f6ad979aa504ac55ad33a1c4d74 /demux/codec_tags.c
parent1ea106bac0095a9eb8e7c2ff0d076816d546df10 (diff)
downloadmpv-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.c64
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"},