From: Laurent Aimar Date: Sun, 8 Aug 2004 19:15:10 +0000 (+0000) Subject: * ratecontrol: patch by Måns Rullgård X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=249259d03700724183b879cd504a172d9c2d35f6;p=libx264 * ratecontrol: patch by Måns Rullgård "This patch fixes a small bug (divide by 0 possible) in the rate control." git-svn-id: svn://svn.videolan.org/x264/trunk@21 df754926-b1dd-0310-bc7b-ec298dee348c --- diff --git a/encoder/ratecontrol.c b/encoder/ratecontrol.c index d49cbb87..d36c9c72 100644 --- a/encoder/ratecontrol.c +++ b/encoder/ratecontrol.c @@ -33,6 +33,8 @@ #include "../core/cpu.h" #include "ratecontrol.h" +#define DEBUG_RC 0 + struct x264_ratecontrol_t { /* constants */ @@ -100,8 +102,10 @@ int x264_ratecontrol_new( x264_t *h ) rc->bits_last_gop = 0; -/* fprintf(stderr, "%f fps, %i bps, bufsize %i\n", */ -/* rc->fps, rc->bitrate, rc->buffer_size); */ +#if DEBUG_RC + fprintf(stderr, "%f fps, %i bps, bufsize %i\n", + rc->fps, rc->bitrate, rc->buffer_size); +#endif h->rc = rc; @@ -195,7 +199,7 @@ void x264_ratecontrol_start( x264_t *h, int i_slice_type ) if(i_slice_type == SLICE_TYPE_I){ rc->qp = rc->gop_qp; - } else if(rc->ncoeffs){ + } else if(rc->ncoeffs && rc->ufbits){ int dqp; zn = rc->ncoeffs - @@ -218,8 +222,10 @@ void x264_ratecontrol_start( x264_t *h, int i_slice_type ) rc->qp = x264_clip3(rc->qp, h->param.i_qp_min, h->param.i_qp_max); rc->qpm = rc->qp; -/* fprintf(stderr, "fbits=%i, qp=%i, z=%i, min=%i, max=%i\n", */ -/* rc->fbits, rc->qpm, zn, minbits, maxbits); */ +#if DEBUG_RC + fprintf(stderr, "fbits=%i, qp=%i, z=%i, min=%i, max=%i\n", + rc->fbits, rc->qpm, zn, minbits, maxbits); +#endif rc->fbits -= rc->overhead; rc->ufbits = 0; @@ -295,9 +301,11 @@ void x264_ratecontrol_end( x264_t *h, int bits ) rc->overhead = bits - rc->ufbits; -/* fprintf(stderr, " bits=%i, qp=%i, z=%i, zr=%6.3f, buf=%i\n", */ -/* bits, rc->qpa, rc->nzcoeffs, */ -/* (float) rc->nzcoeffs / rc->ncoeffs, rc->buffer_fullness); */ +#if DEBUG_RC + fprintf(stderr, " bits=%i, qp=%i, z=%i, zr=%6.3f, buf=%i\n", + bits, rc->qpa, rc->nzcoeffs, + (float) rc->nzcoeffs / rc->ncoeffs, rc->buffer_fullness); +#endif rc->bits_last_gop += bits; rc->frames++;