[FFmpeg-cvslog] Do not detect mov with maximum score if the atom size is too small.

Carl Eugen Hoyos git at videolan.org
Tue Oct 23 22:54:52 CEST 2012


ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Tue Oct 23 22:41:15 2012 +0200| [2fdc6f355cfc462029aff14e2dcf015ac0ecef3d] | committer: Carl Eugen Hoyos

Do not detect mov with maximum score if the atom size is too small.

Fixes mpegts-in-mov, ticket #987 / issue 2223.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2fdc6f355cfc462029aff14e2dcf015ac0ecef3d
---

 libavformat/mov.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index ce4865d..d9c509b 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -2879,7 +2879,14 @@ static int mov_probe(AVProbeData *p)
         case MKTAG('p','n','o','t'): /* detect movs with preview pics like ew.mov and april.mov */
         case MKTAG('u','d','t','a'): /* Packet Video PVAuthor adds this and a lot of more junk */
         case MKTAG('f','t','y','p'):
-            score  = AVPROBE_SCORE_MAX;
+            if (AV_RB32(p->buf+offset) < 8 &&
+                (AV_RB32(p->buf+offset) != 1 ||
+                 offset + 12 > (unsigned int)p->buf_size ||
+                 AV_RB64(p->buf+offset + 8) == 0)) {
+                score = FFMAX(score, AVPROBE_SCORE_MAX - 50);
+            } else {
+                score = AVPROBE_SCORE_MAX;
+            }
             offset = FFMAX(4, AV_RB32(p->buf+offset)) + offset;
             break;
         /* those are more common words, so rate then a bit less */



More information about the ffmpeg-cvslog mailing list