diff ratecontrol.c @ 3766:acf9ca729bd2 libavcodec

Handle possible failure of ff_eval.
author takis
date Tue, 26 Sep 2006 14:04:36 +0000
parents 4f547f0da680
children 8e1ed8300165
line wrap: on
line diff
--- a/ratecontrol.c	Tue Sep 26 08:49:24 2006 +0000
+++ b/ratecontrol.c	Tue Sep 26 14:04:36 2006 +0000
@@ -326,6 +326,10 @@
     };
 
     bits= ff_eval(s->avctx->rc_eq, const_values, const_names, func1, func1_names, NULL, NULL, rce);
+    if (isnan(bits)) {
+        av_log(s->avctx, AV_LOG_ERROR, "Unable to parse rc_eq \"%s\".\n", s->avctx->rc_eq);
+        return -1;
+    }
 
     rcc->pass1_rc_eq_output_sum+= bits;
     bits*=rate_factor;
@@ -726,6 +730,8 @@
         rate_factor= rcc->pass1_wanted_bits/rcc->pass1_rc_eq_output_sum * br_compensation;
 
         q= get_qscale(s, rce, rate_factor, picture_number);
+        if (q < 0)
+            return -1;
 
         assert(q>0.0);
 //printf("%f ", q);