|
|
|
@@ -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; |
|
|
|
|