]> git.sesse.net Git - ffmpeg/commitdiff
lavf: give more weight to the extension during probing if there is a id3
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 23 Nov 2011 20:56:16 +0000 (21:56 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 23 Nov 2011 20:56:16 +0000 (21:56 +0100)
tag that is larger than the probe buffer.
Fixes Ticket336

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/utils.c

index b7386ed233ed4cfd185b0a68353c7f8736b7b677..13d7928818ae1bd0cd59316a09457bb5f4a1bbd2 100644 (file)
@@ -309,14 +309,15 @@ AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score
 {
     AVProbeData lpd = *pd;
     AVInputFormat *fmt1 = NULL, *fmt;
-    int score, score_max=0;
+    int score, nodat = 0, score_max=0;
 
     if (lpd.buf_size > 10 && ff_id3v2_match(lpd.buf, ID3v2_DEFAULT_MAGIC)) {
         int id3len = ff_id3v2_tag_len(lpd.buf);
         if (lpd.buf_size > id3len + 16) {
             lpd.buf += id3len;
             lpd.buf_size -= id3len;
-        }
+        }else
+            nodat = 1;
     }
 
     fmt = NULL;
@@ -327,7 +328,7 @@ AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score
         if (fmt1->read_probe) {
             score = fmt1->read_probe(&lpd);
             if(fmt1->extensions && av_match_ext(lpd.filename, fmt1->extensions))
-                score = FFMAX(score, 1);
+                score = FFMAX(score, nodat ? AVPROBE_SCORE_MAX/4-1 : 1);
         } else if (fmt1->extensions) {
             if (av_match_ext(lpd.filename, fmt1->extensions)) {
                 score = 50;