mirror of https://github.com/mpv-player/mpv
Revert "demux: put type2format into codec_tags with helper functions"
This reverts commitbe0a979a0b
. The list of images codecs is no longer used by demux_mkv.c because26a51464b6
made it check the number of blocks instead to not misdetect animations in image codecs, so move it back to demux_mf.c since it is its only user, so it is easier to understand how it is used, keeping the jxl addition frome9d0a31dfe
.
This commit is contained in:
parent
343a5fd345
commit
addf4ad023
|
@ -180,71 +180,6 @@ void mp_set_pcm_codec(struct mp_codec_params *c, bool sign, bool is_float,
|
||||||
c->codec = talloc_strdup(c, codec);
|
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" },
|
|
||||||
{ "jxl", "jpegxl" },
|
|
||||||
{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] = {
|
static const char *const mimetype_to_codec[][2] = {
|
||||||
{"image/apng", "apng"},
|
{"image/apng", "apng"},
|
||||||
{"image/avif", "av1"},
|
{"image/avif", "av1"},
|
||||||
|
|
|
@ -28,7 +28,6 @@ void mp_set_codec_from_tag(struct mp_codec_params *c);
|
||||||
void mp_set_pcm_codec(struct mp_codec_params *c, bool sign, bool is_float,
|
void mp_set_pcm_codec(struct mp_codec_params *c, bool sign, bool is_float,
|
||||||
int bits, bool is_be);
|
int bits, bool is_be);
|
||||||
|
|
||||||
const char *mp_map_type_to_image_codec(const char *type);
|
|
||||||
const char *mp_map_mimetype_to_video_codec(const char *mimetype);
|
const char *mp_map_mimetype_to_video_codec(const char *mimetype);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -282,6 +282,64 @@ static bool demux_mf_read_packet(struct demuxer *demuxer,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// map file extension/type to a codec name
|
||||||
|
|
||||||
|
static const struct {
|
||||||
|
const char *type;
|
||||||
|
const char *codec;
|
||||||
|
} type2format[] = {
|
||||||
|
{ "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" }, // usually handled by demux_lavf
|
||||||
|
{ "pix", "brender_pix" },
|
||||||
|
{ "exr", "exr" },
|
||||||
|
{ "pic", "pictor" },
|
||||||
|
{ "qoi", "qoi" },
|
||||||
|
{ "xface", "xface" },
|
||||||
|
{ "xwd", "xwd" },
|
||||||
|
{ "svg", "svg" },
|
||||||
|
{ "jxl", "jpegxl" },
|
||||||
|
{0}
|
||||||
|
};
|
||||||
|
|
||||||
static const char *probe_format(mf_t *mf, char *type, enum demux_check check)
|
static const char *probe_format(mf_t *mf, char *type, enum demux_check check)
|
||||||
{
|
{
|
||||||
if (check > DEMUX_CHECK_REQUEST)
|
if (check > DEMUX_CHECK_REQUEST)
|
||||||
|
@ -292,9 +350,10 @@ static const char *probe_format(mf_t *mf, char *type, enum demux_check check)
|
||||||
if (p)
|
if (p)
|
||||||
type = p + 1;
|
type = p + 1;
|
||||||
}
|
}
|
||||||
const char *codec = mp_map_type_to_image_codec(type);
|
for (int i = 0; type2format[i].type; i++) {
|
||||||
if (codec)
|
if (type && strcasecmp(type, type2format[i].type) == 0)
|
||||||
return codec;
|
return type2format[i].codec;
|
||||||
|
}
|
||||||
if (check == DEMUX_CHECK_REQUEST) {
|
if (check == DEMUX_CHECK_REQUEST) {
|
||||||
if (!org_type) {
|
if (!org_type) {
|
||||||
MP_ERR(mf, "file type was not set! (try --mf-type=ext)\n");
|
MP_ERR(mf, "file type was not set! (try --mf-type=ext)\n");
|
||||||
|
|
Loading…
Reference in New Issue