diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2010-06-18 23:17:20 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2010-06-18 23:17:20 +0000 |
commit | 57eb217ac45e4976dc40c23646eb95ad143970d8 (patch) | |
tree | ca7bea139a2e8448d11ef35a3ddf2692c8d865aa | |
parent | 164aab02a0cd3112880900f4a292b382c5c73bc5 (diff) | |
download | ffmpeg-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.c | 8 |
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); |