diff --git a/libavformat/raw.c b/libavformat/raw.c
index dd4d0115df5ca6dac3404aed084a9e12537b424c..bb1345a04375669422a8ef66b842aedc732d8a12 100644
--- a/libavformat/raw.c
+++ b/libavformat/raw.c
@@ -350,7 +350,7 @@ static int mpeg4video_probe(AVProbeData *probe_packet)
 static int h264_probe(AVProbeData *p)
 {
     uint32_t code= -1;
-    int sps=0, pps=0, idr=0, res=0;
+    int sps=0, pps=0, idr=0, res=0, sli=0;
     int i;
 
     for(i=0; i<p->buf_size; i++){
@@ -376,6 +376,7 @@ static int h264_probe(AVProbeData *p)
                 res++;
 
             switch(type){
+            case     1:   sli++; break;
             case     5:   idr++; break;
             case     7:
                 if(p->buf[i+2]&0x0F)
@@ -386,7 +387,7 @@ static int h264_probe(AVProbeData *p)
             }
         }
     }
-    if(sps && pps && idr && res<(sps+pps+idr))
+    if(sps && pps && (idr||sli>3) && res<(sps+pps+idr))
         return AVPROBE_SCORE_MAX/2+1; // +1 for .mpg
     return 0;
 }