From: Fiona Glaser Date: Tue, 13 Mar 2012 21:37:26 +0000 (-0700) Subject: Fix sliced-threads ratecontrol bug X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bca412764eb198433ca45abd097368e5154c7fbb;p=libx264 Fix sliced-threads ratecontrol bug Was using qp instead of qscale; could cause NANs (not to mention less accurate results). --- diff --git a/encoder/ratecontrol.c b/encoder/ratecontrol.c index ee2911ba..9ed2c0c4 100644 --- a/encoder/ratecontrol.c +++ b/encoder/ratecontrol.c @@ -2433,6 +2433,8 @@ void x264_threads_distribute_ratecontrol( x264_t *h ) { int row; x264_ratecontrol_t *rc = h->rc; + x264_emms(); + float qscale = qp2qscale( rc->qpm ); /* Initialize row predictors */ if( h->i_frame == 0 ) @@ -2453,7 +2455,7 @@ void x264_threads_distribute_ratecontrol( x264_t *h ) int size = 0; for( row = t->i_threadslice_start; row < t->i_threadslice_end; row++ ) size += h->fdec->i_row_satd[row]; - t->rc->slice_size_planned = predict_size( &rc->pred[h->sh.i_type + (i+1)*5], rc->qpm, size ); + t->rc->slice_size_planned = predict_size( &rc->pred[h->sh.i_type + (i+1)*5], qscale, size ); } else t->rc->slice_size_planned = 0;