[FFmpeg-devel] [PATCH]lavf/img2dec: Auto-detect svg images
Clément Bœsch
u at pkh.me
Mon Oct 2 08:52:51 EEST 2017
On Mon, Oct 02, 2017 at 01:20:15AM +0200, Carl Eugen Hoyos wrote:
> Hi!
>
> Attached patch implements auto-detection of svg images.
>
> Please review, Carl Eugen
> From f06137f38f166740565e58d5c7c88777508f59ec Mon Sep 17 00:00:00 2001
> From: Carl Eugen Hoyos <ceffmpeg at gmail.com>
> Date: Mon, 2 Oct 2017 01:13:29 +0200
> Subject: [PATCH] lavf/img2dec: Auto-detect svg images.
>
> ---
> libavformat/img2dec.c | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
> index 19cae87..468c820 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,20 @@ 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)
> + return 0;
> + if (!strstr(b, "<!DOCTYPE "))
> + continue;
at least the svg from inkscape do not have a doctype
> + b += 9;
> + if (strstr(b, "svg"))
> + return AVPROBE_SCORE_MAX;
> + }A
don't you want to keep an extension fallback?
also, I would guess strstr() is going to be slow, so maybe just look for a
line starting with "<svg".
--
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20171002/648e9008/attachment.sig>
More information about the ffmpeg-devel
mailing list