]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/vc1dec.c
avformat/westwoodaudenc: Adds muxer for Westwood AUD format.
[ffmpeg] / libavformat / vc1dec.c
index 33f84652ebe8cc6e043af5dd0163ca95fff0a089..fdbb05d6d844a436b884507c8566450551a4fab6 100644 (file)
@@ -24,9 +24,9 @@
 #include "libavutil/intreadwrite.h"
 #include "libavcodec/vc1_common.h"
 
-static int vc1_probe(AVProbeData *p)
+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(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(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(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;
 }