[SCM] libav/experimental: make mpeg-ps probe less happy with random data fixes missdetection of O-MP3-5.mp3

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:10:02 UTC 2013


The following commit has been merged in the experimental branch:
commit 7e1720dec6c28860de268b94b91e13d09cef7b20
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Mon Dec 3 09:37:06 2007 +0000

    make mpeg-ps probe less happy with random data
    fixes missdetection of O-MP3-5.mp3
    
    Originally committed as revision 11149 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c
index 5c55c48..b3c2e3e 100644
--- a/libavformat/mpeg.c
+++ b/libavformat/mpeg.c
@@ -67,7 +67,7 @@ static int check_pes(uint8_t *p, uint8_t *end){
 static int mpegps_probe(AVProbeData *p)
 {
     uint32_t code= -1;
-    int sys=0, pspack=0, priv1=0, vid=0, audio=0;
+    int sys=0, pspack=0, priv1=0, vid=0, audio=0, invalid=0;
     int i;
     int score=0;
 
@@ -85,16 +85,19 @@ static int mpegps_probe(AVProbeData *p)
             else if(code == PACK_START_CODE)     pspack++;
             else if((code & 0xf0) == VIDEO_ID && pes) vid++;
             else if((code & 0xe0) == AUDIO_ID && pes) audio++;
+
+            else if((code & 0xf0) == VIDEO_ID && !pes) invalid++;
+            else if((code & 0xe0) == AUDIO_ID && !pes) invalid++;
         }
     }
 
-    if(vid || audio)            /* invalid VDR files nd short PES streams */
+    if(vid+audio > invalid)     /* invalid VDR files nd short PES streams */
         score= AVPROBE_SCORE_MAX/4;
 
 //av_log(NULL, AV_LOG_ERROR, "%d %d %d %d %d len:%d\n", sys, priv1, pspack,vid, audio, p->buf_size);
-    if(sys && sys*9 <= pspack*10)
+    if(sys>invalid && sys*9 <= pspack*10)
         return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg
-    if((priv1 || vid || audio) && (priv1+vid+audio)*9 <= pspack*10)
+    if(priv1 + vid + audio > invalid && (priv1+vid+audio)*9 <= pspack*10)
         return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg
     if((!!vid ^ !!audio) && (audio+vid > 1) && !sys && !pspack && p->buf_size>2048) /* PES stream */
         return AVPROBE_SCORE_MAX/2+2;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list