comparison 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
comparison
equal deleted inserted replaced
3765:c38b14835b62 3766:acf9ca729bd2
324 "qp2bits", 324 "qp2bits",
325 NULL 325 NULL
326 }; 326 };
327 327
328 bits= ff_eval(s->avctx->rc_eq, const_values, const_names, func1, func1_names, NULL, NULL, rce); 328 bits= ff_eval(s->avctx->rc_eq, const_values, const_names, func1, func1_names, NULL, NULL, rce);
329 if (isnan(bits)) {
330 av_log(s->avctx, AV_LOG_ERROR, "Unable to parse rc_eq \"%s\".\n", s->avctx->rc_eq);
331 return -1;
332 }
329 333
330 rcc->pass1_rc_eq_output_sum+= bits; 334 rcc->pass1_rc_eq_output_sum+= bits;
331 bits*=rate_factor; 335 bits*=rate_factor;
332 if(bits<0.0) bits=0.0; 336 if(bits<0.0) bits=0.0;
333 bits+= 1.0; //avoid 1/0 issues 337 bits+= 1.0; //avoid 1/0 issues
724 728
725 bits= rce->i_tex_bits + rce->p_tex_bits; 729 bits= rce->i_tex_bits + rce->p_tex_bits;
726 rate_factor= rcc->pass1_wanted_bits/rcc->pass1_rc_eq_output_sum * br_compensation; 730 rate_factor= rcc->pass1_wanted_bits/rcc->pass1_rc_eq_output_sum * br_compensation;
727 731
728 q= get_qscale(s, rce, rate_factor, picture_number); 732 q= get_qscale(s, rce, rate_factor, picture_number);
733 if (q < 0)
734 return -1;
729 735
730 assert(q>0.0); 736 assert(q>0.0);
731 //printf("%f ", q); 737 //printf("%f ", q);
732 q= get_diff_limited_q(s, rce, q); 738 q= get_diff_limited_q(s, rce, q);
733 //printf("%f ", q); 739 //printf("%f ", q);