diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index ea3bc4ee55..5ca45b3e0f 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1726,8 +1726,9 @@ static int set_bframe_chain_length(MPVMainEncContext *const m) s->c.linesize) + 1; } } - for (int i = 0; i < m->max_b_frames + 1; i++) { - if (!m->input_picture[i] || + for (int i = 0;; i++) { + if (i >= m->max_b_frames + 1 || + !m->input_picture[i] || m->input_picture[i]->b_frame_score - 1 > s->c.mb_num / m->b_sensitivity) { b_frames = FFMAX(0, i - 1);