On Tue, 7 Mar 2023, 1035567...@qq.com wrote:
From: Wang Yaqiang <wangyaqian...@kuaishou.com> svg is xml, but <?xml is not required, it can start with <svg and can have multiple empty lines. Signed-off-by: Wang Yaqiang <wangyaqian...@kuaishou.com> --- libavformat/img2dec.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index 5a63d7c81d..448a574b59 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -25,6 +25,7 @@ #define _DEFAULT_SOURCE #define _BSD_SOURCE #include <sys/stat.h> +#include <ctype.h>
Please no, use libavutil/avstring.h for av_isspace() instead.
#include "libavutil/avstring.h" #include "libavutil/log.h" #include "libavutil/opt.h" @@ -964,18 +965,19 @@ 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 && isspace(*b)) b++;
av_isspace()
+ if (b >= end - 5) return 0;
line break before return
+ if (memcmp(p->buf, "<?xml", 5) && memcmp(b, "<svg", 4)) return 0;
Why not simply return AVPROBE_SCORE_EXTENSION + 1 here for the <svg case? You don't have to change the rest that way which skips the first line which supposed to contain <?xml
Regards, Marton
while (b < end) { int inc = ff_subtitles_next_line(b); if (!inc) break; + if (!memcmp(b, "<svg", 4)) + return AVPROBE_SCORE_EXTENSION + 1; b += inc; if (b >= end - 4) return 0; - if (!memcmp(b, "<svg", 4)) - return AVPROBE_SCORE_EXTENSION + 1; } return 0; } -- 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-requ...@ffmpeg.org with subject "unsubscribe".
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".