aboutsummaryrefslogtreecommitdiff
path: root/libavformat/img2dec.c
diff options
context:
space:
mode:
authorCarl Eugen Hoyos2017-10-02 11:38:34 +0200
committerCarl Eugen Hoyos2017-10-07 03:42:00 +0200
commita20f64bee235042f6e35c8e7ae65ccfddbf7343b (patch)
tree935a91c17303447024f771459b2963070ac3f161 /libavformat/img2dec.c
parentcc5b7601f7c2d42b1c874a93277915cfb8c41038 (diff)
lavf/img2dec: Auto-detect svg images.
Diffstat (limited to 'libavformat/img2dec.c')
-rw-r--r--libavformat/img2dec.c14
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;
}