mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-03 14:32:16 +02:00
h264: Detect POC inconsistencies and try to handle them reasonably
Improves the file from Ticket2050 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
5715d67bae
commit
985aa0be82
@ -1517,7 +1517,13 @@ static void decode_postinit(H264Context *h, int setup_finished)
|
||||
if( cur->f.pict_type == AV_PICTURE_TYPE_B
|
||||
|| (h->last_pocs[MAX_DELAYED_PIC_COUNT-2] > INT_MIN && h->last_pocs[MAX_DELAYED_PIC_COUNT-1] - h->last_pocs[MAX_DELAYED_PIC_COUNT-2] > 2))
|
||||
out_of_order = FFMAX(out_of_order, 1);
|
||||
if(s->avctx->has_b_frames < out_of_order && !h->sps.bitstream_restriction_flag){
|
||||
if (out_of_order == MAX_DELAYED_PIC_COUNT) {
|
||||
av_log(s->avctx, AV_LOG_VERBOSE, "Invalid POC %d<%d\n", cur->poc, h->last_pocs[0]);
|
||||
for (i = 1; i < MAX_DELAYED_PIC_COUNT; i++)
|
||||
h->last_pocs[i] = INT_MIN;
|
||||
h->last_pocs[0] = cur->poc;
|
||||
cur->mmco_reset = 1;
|
||||
} else if(s->avctx->has_b_frames < out_of_order && !h->sps.bitstream_restriction_flag){
|
||||
av_log(s->avctx, AV_LOG_VERBOSE, "Increasing reorder buffer to %d\n", out_of_order);
|
||||
s->avctx->has_b_frames = out_of_order;
|
||||
s->low_delay = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user