From: Fiona Glaser Date: Wed, 28 Jan 2009 07:27:56 +0000 (-0800) Subject: Hack around a potential failure point in VBV X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d4ca70f8398bdba2391fbcea4886ee0577494b08;p=libx264 Hack around a potential failure point in VBV pred_b_from_p can become absurdly large in static scenes, leading to rare collapses of quality with VBV+B-frames+threads. This isn't a final fix, but should resolve the problem in most cases in the meantime. --- diff --git a/encoder/ratecontrol.c b/encoder/ratecontrol.c index 96b67de6..c0a4bd76 100644 --- a/encoder/ratecontrol.c +++ b/encoder/ratecontrol.c @@ -1147,6 +1147,10 @@ void x264_ratecontrol_end( x264_t *h, int bits ) { update_predictor( rc->pred_b_from_p, qp2qscale(rc->qpa_rc), h->fref1[h->i_ref1-1]->i_satd, rc->bframe_bits / rc->bframes ); + /* In some cases, such as completely blank scenes, pred_b_from_p can go nuts */ + /* Hackily cap the predictor coeff in case this happens. */ + /* FIXME FIXME FIXME */ + rc->pred_b_from_p->coeff = X264_MIN( rc->pred_b_from_p->coeff, 10. ); rc->bframe_bits = 0; } }