[FFmpeg-cvslog] r8923 - trunk/libavformat/raw.c

michael subversion
Mon May 7 13:57:46 CEST 2007


Author: michael
Date: Mon May  7 13:57:46 2007
New Revision: 8923

Log:
improve mpeg4-es detection by rejecting streams with reserved startcodes (fixes 11-i_need_your_love-daw.mp3 detected as mpeg4)


Modified:
   trunk/libavformat/raw.c

Modified: trunk/libavformat/raw.c
==============================================================================
--- trunk/libavformat/raw.c	(original)
+++ trunk/libavformat/raw.c	Mon May  7 13:57:46 2007
@@ -347,15 +347,13 @@ static int mpegvideo_probe(AVProbeData *
     return 0;
 }
 
-#define VIDEO_OBJECT_START_CODE        0x00000100
-#define VIDEO_OBJECT_LAYER_START_CODE  0x00000120
 #define VISUAL_OBJECT_START_CODE       0x000001b5
 #define VOP_START_CODE                 0x000001b6
 
 static int mpeg4video_probe(AVProbeData *probe_packet)
 {
     uint32_t temp_buffer= -1;
-    int VO=0, VOL=0, VOP = 0, VISO = 0;
+    int VO=0, VOL=0, VOP = 0, VISO = 0, res=0;
     int i;
 
     for(i=0; i<probe_packet->buf_size; i++){
@@ -364,15 +362,16 @@ static int mpeg4video_probe(AVProbeData 
             switch(temp_buffer){
             case VOP_START_CODE:             VOP++; break;
             case VISUAL_OBJECT_START_CODE:  VISO++; break;
-            }
-            switch(temp_buffer & 0xfffffff0){
-            case VIDEO_OBJECT_START_CODE:            VO++; break;
-            case VIDEO_OBJECT_LAYER_START_CODE:     VOL++; break;
+            case 0x100 ... 0x11F:             VO++; break;
+            case 0x120 ... 0x12F:            VOL++; break;
+            case 0x130 ... 0x1AF:
+            case 0x1B7 ... 0x1B9:
+            case 0x1C4 ... 0x1FF:            res++; break;
             }
         }
     }
 
-    if ( VOP >= VISO && VOP >= VOL && VO >= VOL && VOL > 0)
+    if ( VOP >= VISO && VOP >= VOL && VO >= VOL && VOL > 0 && res==0)
         return AVPROBE_SCORE_MAX/2;
     return 0;
 }




More information about the ffmpeg-cvslog mailing list