]> git.sesse.net Git - x264/commitdiff
Use integer math for filler size calculation
authorAnton Mitrofanov <BugMaster@narod.ru>
Wed, 6 Apr 2011 18:48:57 +0000 (22:48 +0400)
committerFiona Glaser <fiona@x264.com>
Tue, 12 Apr 2011 08:37:33 +0000 (01:37 -0700)
encoder/ratecontrol.c

index 3e018cec3673f693db49cea62709fc8f756cd8dc..5360844dabf031b048f3a40b0a688c7e903c8984 100644 (file)
@@ -1828,7 +1828,8 @@ static int update_vbv( x264_t *h, int bits )
 
     if( h->sps->vui.hrd.b_cbr_hrd && rct->buffer_fill_final > buffer_size )
     {
-        filler = ceil( (rct->buffer_fill_final - buffer_size) / (8. * h->sps->vui.i_time_scale) );
+        int64_t scale = (int64_t)h->sps->vui.i_time_scale * 8;
+        filler = (rct->buffer_fill_final - buffer_size + scale - 1) / scale;
         bits = X264_MAX( (FILLER_OVERHEAD - h->param.b_annexb), filler ) * 8;
         rct->buffer_fill_final -= (uint64_t)bits * h->sps->vui.i_time_scale;
     }