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 }