Message ID | tencent_0EDC47942748A370D70D3EB321BF645F1507@qq.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,v2] libavformat/img2dec: fix unable to find svg format when the svg resources start with "<svg" or "<!---" | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/configure_x86 | warning | Failed to apply patch |
On Thu, 9 Mar 2023, 1035567130@qq.com wrote: > From: Wang Yaqiang <wangyaqiang03@kuaishou.com> > > svg is xml, but <?xml is not required, > it can start with <svg and can have multiple empty lines, > or start with <!--- include some comments, > but must first line if start with <?xml. Will apply, thanks. Marton > > Signed-off-by: Wang Yaqiang <wangyaqiang03@kuaishou.com> > --- > libavformat/img2dec.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c > index 5a63d7c81d..3488600400 100644 > --- a/libavformat/img2dec.c > +++ b/libavformat/img2dec.c > @@ -964,8 +964,13 @@ static int svg_probe(const AVProbeData *p) > { > const uint8_t *b = p->buf; > const uint8_t *end = p->buf + p->buf_size; > - > - if (memcmp(p->buf, "<?xml", 5)) > + while (b && b < end && av_isspace(*b)) b++; > + if (b >= end - 5) > + return 0; > + if (!memcmp(b, "<svg", 4)) { > + return AVPROBE_SCORE_EXTENSION + 1; > + } > + if (memcmp(p->buf, "<?xml", 5) && memcmp(b, "<!--", 4)) > return 0; > while (b < end) { > int inc = ff_subtitles_next_line(b); > -- > 2.39.2 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index 5a63d7c81d..3488600400 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -964,8 +964,13 @@ static int svg_probe(const AVProbeData *p) { const uint8_t *b = p->buf; const uint8_t *end = p->buf + p->buf_size; - - if (memcmp(p->buf, "<?xml", 5)) + while (b && b < end && av_isspace(*b)) b++; + if (b >= end - 5) + return 0; + if (!memcmp(b, "<svg", 4)) { + return AVPROBE_SCORE_EXTENSION + 1; + } + if (memcmp(p->buf, "<?xml", 5) && memcmp(b, "<!--", 4)) return 0; while (b < end) { int inc = ff_subtitles_next_line(b);