aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-06-18 23:17:20 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-06-18 23:17:20 +0000
commit57eb217ac45e4976dc40c23646eb95ad143970d8 (patch)
treeca7bea139a2e8448d11ef35a3ddf2692c8d865aa
parent164aab02a0cd3112880900f4a292b382c5c73bc5 (diff)
downloadffmpeg-57eb217ac45e4976dc40c23646eb95ad143970d8.tar.gz
Improve h263_probe()
Fixes issue2015 Originally committed as revision 23645 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavformat/raw.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libavformat/raw.c b/libavformat/raw.c
index 0a188cf25c..0c83c429ba 100644
--- a/libavformat/raw.c
+++ b/libavformat/raw.c
@@ -457,6 +457,7 @@ static int h263_probe(AVProbeData *p)
int invalid_psc=0;
int res_change=0;
int src_fmt, last_src_fmt=-1;
+ int last_gn=0;
for(i=0; i<p->buf_size; i++){
code = (code<<8) + p->buf[i];
@@ -469,9 +470,16 @@ static int h263_probe(AVProbeData *p)
if((code&0x300)==0x200 && src_fmt){
valid_psc++;
+ last_gn=0;
}else
invalid_psc++;
last_src_fmt= src_fmt;
+ } else if((code & 0xffff800000) == 0x800000) {
+ int gn= (code>>(23-5)) & 0x1F;
+ if(gn<last_gn){
+ invalid_psc++;
+ }else
+ last_gn= gn;
}
}
//av_log(NULL, AV_LOG_ERROR, "h263_probe: psc:%d invalid:%d res_change:%d\n", valid_psc, invalid_psc, res_change);