From f19ae9ea4dbde5e9ffb19202e708443c111fc1cc Mon Sep 17 00:00:00 2001
From: Daniel Verkamp <daniel@drv.nu>
Date: Fri, 9 Oct 2009 18:24:47 +0000
Subject: [PATCH] Stricter TMV probe

Originally committed as revision 20194 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavformat/tmv.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/libavformat/tmv.c b/libavformat/tmv.c
index 566f5628101..4561a030e90 100644
--- a/libavformat/tmv.c
+++ b/libavformat/tmv.c
@@ -43,10 +43,19 @@ typedef struct TMVContext {
     unsigned stream_index;
 } TMVContext;
 
+#define PROBE_MIN_SAMPLE_RATE 5000
+#define PROBE_MAX_FPS         120
+#define PROBE_MIN_AUDIO_SIZE  (PROBE_MIN_SAMPLE_RATE / PROBE_MAX_FPS)
+
 static int tmv_probe(AVProbeData *p)
 {
-    if (AV_RL32(p->buf) == TMV_TAG)
-        return AVPROBE_SCORE_MAX;
+    if (AV_RL32(p->buf)   == TMV_TAG &&
+        AV_RL16(p->buf+4) >= PROBE_MIN_SAMPLE_RATE &&
+        AV_RL16(p->buf+6) >= PROBE_MIN_AUDIO_SIZE  &&
+               !p->buf[8] && // compression method
+                p->buf[9] && // char cols
+                p->buf[10])  // char rows
+        return AVPROBE_SCORE_MAX / (p->buf[9] == 40 && p->buf[10] == 25)? 1 : 4;
     return 0;
 }
 
-- 
GitLab