comparison h264.c @ 2538:34b0996cc10d libavcodec

10l (fix reordering when B-frames are not present)
author lorenm
date Sat, 05 Mar 2005 00:14:21 +0000
parents 14fef0f3f532
children c5781912ad8a
comparison
equal deleted inserted replaced
2537:14fef0f3f532 2538:34b0996cc10d
6308 decode_seq_parameter_set(h); 6308 decode_seq_parameter_set(h);
6309 6309
6310 if(s->flags& CODEC_FLAG_LOW_DELAY) 6310 if(s->flags& CODEC_FLAG_LOW_DELAY)
6311 s->low_delay=1; 6311 s->low_delay=1;
6312 6312
6313 avctx->has_b_frames= !s->low_delay; 6313 if(avctx->has_b_frames < 2)
6314 avctx->has_b_frames= !s->low_delay;
6314 break; 6315 break;
6315 case NAL_PPS: 6316 case NAL_PPS:
6316 init_get_bits(&s->gb, ptr, bit_length); 6317 init_get_bits(&s->gb, ptr, bit_length);
6317 6318
6318 decode_picture_parameter_set(h); 6319 decode_picture_parameter_set(h);
6468 out = h->delayed_pic[i]; 6469 out = h->delayed_pic[i];
6469 out_idx = i; 6470 out_idx = i;
6470 } 6471 }
6471 if(cur->reference == 0) 6472 if(cur->reference == 0)
6472 cur->reference = 1; 6473 cur->reference = 1;
6474 for(i=0; h->delayed_pic[i]; i++)
6475 if(h->delayed_pic[i]->key_frame)
6476 h->delayed_output_poc = -1;
6473 if(pics > FFMAX(1, s->avctx->has_b_frames)){ 6477 if(pics > FFMAX(1, s->avctx->has_b_frames)){
6474 if(out->reference == 1) 6478 if(out->reference == 1)
6475 out->reference = 0; 6479 out->reference = 0;
6476 for(i=out_idx; h->delayed_pic[i]; i++) 6480 for(i=out_idx; h->delayed_pic[i]; i++)
6477 h->delayed_pic[i] = h->delayed_pic[i+1]; 6481 h->delayed_pic[i] = h->delayed_pic[i+1];
6478 } 6482 }
6479
6480 for(i=0; h->delayed_pic[i]; i++)
6481 if(h->delayed_pic[i]->key_frame)
6482 h->delayed_output_poc = -1;
6483 6483
6484 if((h->delayed_output_poc >=0 && h->delayed_output_poc > cur->poc) 6484 if((h->delayed_output_poc >=0 && h->delayed_output_poc > cur->poc)
6485 || (s->low_delay && (cur->pict_type == B_TYPE 6485 || (s->low_delay && (cur->pict_type == B_TYPE
6486 || (!h->sps.gaps_in_frame_num_allowed_flag 6486 || (!h->sps.gaps_in_frame_num_allowed_flag
6487 && cur->poc - out->poc > 2)))){ 6487 && cur->poc - out->poc > 2)))){