diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-08-05 12:39:51 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-08-05 13:02:20 +0200 |
commit | 22d841becd89f21fcd88a76bcafb675fd051ce86 (patch) | |
tree | 04f910119420fabb5557217eb8c7cd6c1a0d24ea /libavutil/eval.c | |
parent | 25c2f13d00fcfdb81c33a459795c33d29f8690e8 (diff) | |
parent | 6e19cfb083eda83aaf4b49ae765ab2b3e578d32d (diff) | |
download | ffmpeg-22d841becd89f21fcd88a76bcafb675fd051ce86.tar.gz |
Merge branch 'master' into oldabi
* master: (780 commits)
ffmpeg: Fix doxygen comments for MetadataMap
filters.texi: fix wrong references in the "Filtergraph syntax" section
yadif: correct documentation on the parity parameter
mpegvideo.h: remove the 1 line difference to qatar
applehttp: fix variant discard logic
Fix possible crash when decoding mpeg streams.
h263dec: Fix asserts broken by the elimination of FF_COMMON_FRAME.
avidec: skip seek pos adjustment for non interleaved files. Fixes Ticket327
lsws: remove deprecated and unused stuff after the 0->1 major bump
cosmetics: remove some stray comments from AVCodec declarations
cosmetics: fix indentation/alignment in AVCodec declarations
Abort if command offset decreases, avoids potential endless loop.
Warn when falling back to unreliable UMF fps tag.
Detect NI-avi at playtime like mplayer. Fixes Ticket333
avidec: Fix XAN DPCM demuxing.
Fix a possible miscompilation of cabac with old (broken) compilers.
Fix -loop_input.
Set bits_per_coded_sample when encoding ADPCM.
vf_boxblur: call avfilter_draw_slice() at the end of draw_slice()
vf_boxblur: fix out-of-buffer access when h > w
...
Conflicts:
ffmpeg.c
libavcodec/avcodec.h
libavcodec/opt.h
libavcodec/version.h
libavdevice/avdevice.h
libavfilter/avfilter.h
libavformat/avformat.h
libavformat/aviobuf.c
libavformat/rtsp.c
libavformat/udp.c
libavformat/utils.c
libavformat/version.h
libavutil/avutil.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavutil/eval.c')
-rw-r--r-- | libavutil/eval.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/libavutil/eval.c b/libavutil/eval.c index fa2999b84c..4e2cb1095c 100644 --- a/libavutil/eval.c +++ b/libavutil/eval.c @@ -28,6 +28,7 @@ #include "avutil.h" #include "eval.h" +#include "log.h" typedef struct Parser { const AVClass *class; @@ -471,7 +472,7 @@ int av_expr_parse(AVExpr **expr, const char *s, const char * const *func2_names, double (* const *funcs2)(void *, double, double), int log_offset, void *log_ctx) { - Parser p; + Parser p = { 0 }; AVExpr *e = NULL; char *w = av_malloc(strlen(s) + 1); char *wp = w; @@ -499,6 +500,7 @@ int av_expr_parse(AVExpr **expr, const char *s, if ((ret = parse_expr(&e, &p)) < 0) goto end; if (*p.s) { + av_expr_free(e); av_log(&p, AV_LOG_ERROR, "Invalid chars '%s' at the end of expression '%s'\n", p.s, s0); ret = AVERROR(EINVAL); goto end; @@ -516,7 +518,7 @@ end: double av_expr_eval(AVExpr *e, const double *const_values, void *opaque) { - Parser p; + Parser p = { 0 }; p.const_values = const_values; p.opaque = opaque; @@ -575,6 +577,8 @@ void av_free_expr(AVExpr *e) #ifdef TEST #undef printf +#include <string.h> + static double const_values[] = { M_PI, M_E, @@ -587,7 +591,7 @@ static const char *const_names[] = { 0 }; -int main(void) +int main(int argc, char **argv) { int i; double d; @@ -598,7 +602,7 @@ int main(void) "-PI", "+PI", "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", - "80G/80Gi" + "80G/80Gi", "1k", "1Gi", "1gi", @@ -656,7 +660,11 @@ int main(void) av_expr_parse_and_eval(&d, *expr, const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, NULL); - printf("'%s' -> %f\n\n", *expr, d); + if(isnan(d)){ + printf("'%s' -> nan\n\n", *expr); + }else{ + printf("'%s' -> %f\n\n", *expr, d); + } } av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", @@ -668,13 +676,16 @@ int main(void) NULL, NULL, NULL, NULL, NULL, 0, NULL); printf("%f == 0.931322575\n", d); - for (i=0; i<1050; i++) { - START_TIMER + if (argc > 1 && !strcmp(argv[1], "-t")) { + for (i = 0; i < 1050; i++) { + START_TIMER; av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, NULL); - STOP_TIMER("av_expr_parse_and_eval") + STOP_TIMER("av_expr_parse_and_eval"); + } } + return 0; } #endif |