diff raw.c @ 5184:2d15ea28c450 libavformat

Make dnxhd probe more strict, fail if we detect values in header that would make our decoder fail anyway. dnxhd probe now passes probetest.
author reimar
date Mon, 14 Sep 2009 21:50:23 +0000
parents 3f35ada98286
children 9affc096944c
line wrap: on
line diff
--- a/raw.c	Mon Sep 14 21:29:19 2009 +0000
+++ b/raw.c	Mon Sep 14 21:50:23 2009 +0000
@@ -580,10 +580,19 @@
 static int dnxhd_probe(AVProbeData *p)
 {
     static const uint8_t header[] = {0x00,0x00,0x02,0x80,0x01};
-    if (!memcmp(p->buf, header, 5))
-        return AVPROBE_SCORE_MAX;
-    else
+    int w, h, compression_id;
+    if (p->buf_size < 0x2c)
+        return 0;
+    if (memcmp(p->buf, header, 5))
         return 0;
+    h = AV_RB16(p->buf + 0x18);
+    w = AV_RB16(p->buf + 0x1a);
+    if (!w || !h)
+        return 0;
+    compression_id = AV_RB32(p->buf + 0x28);
+    if (compression_id < 1237 || compression_id > 1253)
+        return 0;
+    return AVPROBE_SCORE_MAX;
 }
 #endif