Mercurial > libavcodec.hg
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); |
