ffmpeg | branch: master | Carl Eugen Hoyos <[email protected]> | Fri Apr 19 14:06:29 2019 +0200| [32215b21407e2587af5fb24b4b67470d23852598] | committer: Carl Eugen Hoyos
lavf/vc1dec: Reduce probe score for streams with invalid frames. Fixes ticket #7853. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=32215b21407e2587af5fb24b4b67470d23852598 --- libavformat/vc1dec.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libavformat/vc1dec.c b/libavformat/vc1dec.c index f4101ae594..fdbb05d6d8 100644 --- a/libavformat/vc1dec.c +++ b/libavformat/vc1dec.c @@ -26,7 +26,7 @@ static int vc1_probe(const AVProbeData *p) { - int seq = 0, entry = 0, frame = 0, i; + int seq = 0, entry = 0, invalid = 0, frame = 0, i; for (i = 0; i < p->buf_size + 5; i++) { uint32_t code = AV_RB32(p->buf + i); @@ -39,16 +39,19 @@ static int vc1_probe(const AVProbeData *p) profile = (p->buf[i] & 0xc0) >> 6; if (profile != PROFILE_ADVANCED) { seq = 0; + invalid++; continue; } level = (p->buf[i] & 0x38) >> 3; if (level >= 5) { seq = 0; + invalid++; continue; } chromaformat = (p->buf[i] & 0x6) >> 1; if (chromaformat != 1) { seq = 0; + invalid++; continue; } seq++; @@ -56,8 +59,10 @@ static int vc1_probe(const AVProbeData *p) break; } case VC1_CODE_ENTRYPOINT: - if (!seq) + if (!seq) { + invalid++; continue; + } entry++; i += 2; break; @@ -71,9 +76,9 @@ static int vc1_probe(const AVProbeData *p) } } - if (frame > 1) + if (frame > 1 && frame >> 1 > invalid) return AVPROBE_SCORE_EXTENSION / 2 + 1; - if (frame == 1) + if (frame >= 1) return AVPROBE_SCORE_EXTENSION / 4; return 0; } _______________________________________________ ffmpeg-cvslog mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
