diff options
author | Carl Eugen Hoyos | 2017-10-02 11:38:34 +0200 |
---|---|---|
committer | Carl Eugen Hoyos | 2017-10-07 03:42:00 +0200 |
commit | a20f64bee235042f6e35c8e7ae65ccfddbf7343b (patch) | |
tree | 935a91c17303447024f771459b2963070ac3f161 /libavformat/img2dec.c | |
parent | cc5b7601f7c2d42b1c874a93277915cfb8c41038 (diff) |
lavf/img2dec: Auto-detect svg images.
Diffstat (limited to 'libavformat/img2dec.c')
-rw-r--r-- | libavformat/img2dec.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index 19cae87fdb..ecf64eaffa 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -34,6 +34,7 @@ #include "internal.h" #include "img2.h" #include "libavcodec/mjpeg.h" +#include "subtitles.h" #if HAVE_GLOB /* Locally define as 0 (bitwise-OR no-op) any missing glob options that @@ -875,8 +876,17 @@ static int sunrast_probe(AVProbeData *p) static int svg_probe(AVProbeData *p) { - if (av_match_ext(p->filename, "svg") || av_match_ext(p->filename, "svgz")) - return AVPROBE_SCORE_EXTENSION + 1; + const uint8_t *b = p->buf; + const uint8_t *end = p->buf + p->buf_size; + if (memcmp(p->buf, "<?xml", 5)) + return 0; + while (b < end) { + b += ff_subtitles_next_line(b); + if (b >= end - 4) + return 0; + if (!memcmp(b, "<svg", 4)) + return AVPROBE_SCORE_EXTENSION + 1; + } return 0; } |