diff --git a/libavformat/raw.c b/libavformat/raw.c index dd4d0115df..bb1345a043 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; ibuf_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; }