Mercurial > libavcodec.hg
comparison h264.c @ 7772:834a8f89b75e libavcodec
Try to support invalid h264 that does not mark IDR with POC=0.
Fixes issue576.
author | michael |
---|---|
date | Tue, 02 Sep 2008 16:31:18 +0000 |
parents | aa55cb6a440d |
children | 5c532e05faea |
comparison
equal
deleted
inserted
replaced
7771:58fdf1638bc4 | 7772:834a8f89b75e |
---|---|
7486 int i, out_idx; | 7486 int i, out_idx; |
7487 | 7487 |
7488 //FIXME factorize this with the output code below | 7488 //FIXME factorize this with the output code below |
7489 out = h->delayed_pic[0]; | 7489 out = h->delayed_pic[0]; |
7490 out_idx = 0; | 7490 out_idx = 0; |
7491 for(i=1; h->delayed_pic[i] && h->delayed_pic[i]->poc; i++) | 7491 for(i=1; h->delayed_pic[i] && (h->delayed_pic[i]->poc && !h->delayed_pic[i]->key_frame); i++) |
7492 if(h->delayed_pic[i]->poc < out->poc){ | 7492 if(h->delayed_pic[i]->poc < out->poc){ |
7493 out = h->delayed_pic[i]; | 7493 out = h->delayed_pic[i]; |
7494 out_idx = i; | 7494 out_idx = i; |
7495 } | 7495 } |
7496 | 7496 |
7630 if(cur->reference == 0) | 7630 if(cur->reference == 0) |
7631 cur->reference = DELAYED_PIC_REF; | 7631 cur->reference = DELAYED_PIC_REF; |
7632 | 7632 |
7633 out = h->delayed_pic[0]; | 7633 out = h->delayed_pic[0]; |
7634 out_idx = 0; | 7634 out_idx = 0; |
7635 for(i=1; h->delayed_pic[i] && h->delayed_pic[i]->poc; i++) | 7635 for(i=1; h->delayed_pic[i] && (h->delayed_pic[i]->poc && !h->delayed_pic[i]->key_frame); i++) |
7636 if(h->delayed_pic[i]->poc < out->poc){ | 7636 if(h->delayed_pic[i]->poc < out->poc){ |
7637 out = h->delayed_pic[i]; | 7637 out = h->delayed_pic[i]; |
7638 out_idx = i; | 7638 out_idx = i; |
7639 } | 7639 } |
7640 cross_idr = !h->delayed_pic[0]->poc || !!h->delayed_pic[i]; | 7640 cross_idr = !h->delayed_pic[0]->poc || !!h->delayed_pic[i] || h->delayed_pic[0]->key_frame; |
7641 | 7641 |
7642 out_of_order = !cross_idr && out->poc < h->outputed_poc; | 7642 out_of_order = !cross_idr && out->poc < h->outputed_poc; |
7643 | 7643 |
7644 if(h->sps.bitstream_restriction_flag && s->avctx->has_b_frames >= h->sps.num_reorder_frames) | 7644 if(h->sps.bitstream_restriction_flag && s->avctx->has_b_frames >= h->sps.num_reorder_frames) |
7645 { } | 7645 { } |