Mercurial > libavcodec.hg
comparison h264_ps.c @ 11767:572bf2d9931e libavcodec
Check for VUI overeading and reset num_reoder_frames.
This helps the video from issue1831
author | michael |
---|---|
date | Tue, 25 May 2010 21:51:27 +0000 |
parents | 7dd2a45249a9 |
children | 914f484bb476 |
comparison
equal
deleted
inserted
replaced
11766:01408f7d629c | 11767:572bf2d9931e |
---|---|
202 get_ue_golomb(&s->gb); /* max_bits_per_mb_denom */ | 202 get_ue_golomb(&s->gb); /* max_bits_per_mb_denom */ |
203 get_ue_golomb(&s->gb); /* log2_max_mv_length_horizontal */ | 203 get_ue_golomb(&s->gb); /* log2_max_mv_length_horizontal */ |
204 get_ue_golomb(&s->gb); /* log2_max_mv_length_vertical */ | 204 get_ue_golomb(&s->gb); /* log2_max_mv_length_vertical */ |
205 sps->num_reorder_frames= get_ue_golomb(&s->gb); | 205 sps->num_reorder_frames= get_ue_golomb(&s->gb); |
206 get_ue_golomb(&s->gb); /*max_dec_frame_buffering*/ | 206 get_ue_golomb(&s->gb); /*max_dec_frame_buffering*/ |
207 | |
208 if(s->gb.size_in_bits < get_bits_count(&s->gb)){ | |
209 av_log(h->s.avctx, AV_LOG_ERROR, "Overread VUI by %d bits\n", get_bits_count(&s->gb) - s->gb.size_in_bits); | |
210 sps->num_reorder_frames=0; | |
211 sps->bitstream_restriction_flag= 0; | |
212 } | |
207 | 213 |
208 if(sps->num_reorder_frames > 16U /*max_dec_frame_buffering || max_dec_frame_buffering > 16*/){ | 214 if(sps->num_reorder_frames > 16U /*max_dec_frame_buffering || max_dec_frame_buffering > 16*/){ |
209 av_log(h->s.avctx, AV_LOG_ERROR, "illegal num_reorder_frames %d\n", sps->num_reorder_frames); | 215 av_log(h->s.avctx, AV_LOG_ERROR, "illegal num_reorder_frames %d\n", sps->num_reorder_frames); |
210 return -1; | 216 return -1; |
211 } | 217 } |