summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPanagiotis Issaris <takis.issaris@uhasselt.be>2006-09-27 19:46:19 +0000
committerPanagiotis Issaris <takis.issaris@uhasselt.be>2006-09-27 19:46:19 +0000
commitd80f243ae996ced4bce81b12ada3af7803ce36f0 (patch)
tree234f7547175cefcba0606e10586fc2fd102be8c9
parent0c6309225d06f11b5168cc661fbe9326f0379921 (diff)
Make ratecontrol use ff_eval2().
Originally committed as revision 6354 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/mpegvideo.h6
-rw-r--r--libavcodec/ratecontrol.c5
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;
}