Mercurial > libavcodec.hg
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)))){ |