summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorGanesh Ajjanagadde <gajjanagadde@gmail.com>2015-11-24 13:00:54 -0500
committerGanesh Ajjanagadde <gajjanagadde@gmail.com>2015-11-24 20:36:40 -0500
commit990619968a40ff64f789ba7d004a118351695fa6 (patch)
tree7b4f43bb6211650d05ce2048f822c7cf0b22acf8 /libavfilter
parente9c7493f19a610f44690ef2f2f3737a3c6236fdf (diff)
avfilter/vsrc_mandelbrot: change sin to sinf for color computation
lrintf is anyway used, suggesting we only care up to floating precision. Rurthermore, there is a compat hack in avutil/libm for this function, and it is used in avcodec/aacps_tablegen.h. This yields a non-negligible speedup. Sample benchmark: x86-64, Haswell, GNU/Linux: old (draw_mandelbrot): 274635709 decicycles in draw_mandelbrot, 256 runs, 0 skips 300287046 decicycles in draw_mandelbrot, 512 runs, 0 skips 371819935 decicycles in draw_mandelbrot, 1024 runs, 0 skips 336663765 decicycles in draw_mandelbrot, 2048 runs, 0 skips 581851016 decicycles in draw_mandelbrot, 4096 runs, 0 skips new (draw_mandelbrot): 269882717 decicycles in draw_mandelbrot, 256 runs, 0 skips 296359285 decicycles in draw_mandelbrot, 512 runs, 0 skips 370076599 decicycles in draw_mandelbrot, 1024 runs, 0 skips 331478354 decicycles in draw_mandelbrot, 2048 runs, 0 skips 571904318 decicycles in draw_mandelbrot, 4096 runs, 0 skips Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/vsrc_mandelbrot.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libavfilter/vsrc_mandelbrot.c b/libavfilter/vsrc_mandelbrot.c
index 91bf63fd42..063b7d1894 100644
--- a/libavfilter/vsrc_mandelbrot.c
+++ b/libavfilter/vsrc_mandelbrot.c
@@ -334,11 +334,11 @@ static void draw_mandelbrot(AVFilterContext *ctx, uint32_t *color, int linesize,
switch(s->outer){
case ITERATION_COUNT:
zr = i;
- c = lrintf((sin(zr)+1)*127) + lrintf((sin(zr/1.234)+1)*127)*256*256 + lrintf((sin(zr/100)+1)*127)*256;
+ c = lrintf((sinf(zr)+1)*127) + lrintf((sinf(zr/1.234)+1)*127)*256*256 + lrintf((sinf(zr/100)+1)*127)*256;
break;
case NORMALIZED_ITERATION_COUNT:
zr = i + log2(log(s->bailout) / log(zr*zr + zi*zi));
- c = lrintf((sin(zr)+1)*127) + lrintf((sin(zr/1.234)+1)*127)*256*256 + lrintf((sin(zr/100)+1)*127)*256;
+ c = lrintf((sinf(zr)+1)*127) + lrintf((sinf(zr/1.234)+1)*127)*256*256 + lrintf((sinf(zr/100)+1)*127)*256;
break;
case WHITE:
c = 0xFFFFFF;