From d80f243ae996ced4bce81b12ada3af7803ce36f0 Mon Sep 17 00:00:00 2001 From: Panagiotis Issaris Date: Wed, 27 Sep 2006 19:46:19 +0000 Subject: [PATCH] Make ratecontrol use ff_eval2(). Originally committed as revision 6354 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/mpegvideo.h | 6 ++++++ libavcodec/ratecontrol.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index d8eebc3bbf..f8efffbec0 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -991,10 +991,16 @@ int ff_rate_control_init(MpegEncContext *s); float ff_rate_estimate_qscale(MpegEncContext *s, int dry_run); void ff_write_pass1_stats(MpegEncContext *s); void ff_rate_control_uninit(MpegEncContext *s); +#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) double ff_eval(char *s, double *const_value, const char **const_name, double (**func1)(void *, double), const char **func1_name, double (**func2)(void *, double, double), char **func2_name, void *opaque); +#endif +double ff_eval2(char *s, double *const_value, const char **const_name, + double (**func1)(void *, double), const char **func1_name, + double (**func2)(void *, double, double), char **func2_name, + void *opaque, char **error); int ff_vbv_update(MpegEncContext *s, int frame_size); void ff_get_2pass_fcode(MpegEncContext *s); diff --git a/libavcodec/ratecontrol.c b/libavcodec/ratecontrol.c index 5c339fa152..721edf95a9 100644 --- a/libavcodec/ratecontrol.c +++ b/libavcodec/ratecontrol.c @@ -259,6 +259,7 @@ static double get_qscale(MpegEncContext *s, RateControlEntry *rce, double rate_f const int pict_type= rce->new_pict_type; const double mb_num= s->mb_num; int i; + char *error = NULL; double const_values[]={ M_PI, @@ -325,9 +326,9 @@ static double get_qscale(MpegEncContext *s, RateControlEntry *rce, double rate_f NULL }; - bits= ff_eval(s->avctx->rc_eq, const_values, const_names, func1, func1_names, NULL, NULL, rce); + bits= ff_eval2(s->avctx->rc_eq, const_values, const_names, func1, func1_names, NULL, NULL, rce, &error); if (isnan(bits)) { - av_log(s->avctx, AV_LOG_ERROR, "Unable to parse rc_eq \"%s\".\n", s->avctx->rc_eq); + av_log(s->avctx, AV_LOG_ERROR, "Error evaluating rc_eq \"%s\": %s\n", s->avctx->rc_eq, error? error : ""); return -1; }