From 649d3932db83763a49073a185189d338adbb3b9d Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 19 Nov 2011 14:15:56 +0100 Subject: [PATCH] vsrc_mandelbrot: check bailout only once every 8 iterations, this is around 10% faster. Signed-off-by: Michael Niedermayer --- libavfilter/vsrc_mandelbrot.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/libavfilter/vsrc_mandelbrot.c b/libavfilter/vsrc_mandelbrot.c index 5701094cbd..9aea384b55 100644 --- a/libavfilter/vsrc_mandelbrot.c +++ b/libavfilter/vsrc_mandelbrot.c @@ -247,7 +247,30 @@ static void draw_mandelbrot(AVFilterContext *ctx, uint32_t *color, int linesize, } - for(i=0; imaxiter; i++){ + for(i=0; imaxiter-8; i++){ + double t; + Z_Z2_C_ZYKLUS(t, zi, zr, zi, 0) + i++; + Z_Z2_C_ZYKLUS(zr, zi, t, zi, 1) + i++; + Z_Z2_C_ZYKLUS(t, zi, zr, zi, 0) + i++; + Z_Z2_C_ZYKLUS(zr, zi, t, zi, 1) + i++; + Z_Z2_C_ZYKLUS(t, zi, zr, zi, 0) + i++; + Z_Z2_C_ZYKLUS(zr, zi, t, zi, 1) + i++; + Z_Z2_C_ZYKLUS(t, zi, zr, zi, 0) + i++; + Z_Z2_C_ZYKLUS(zr, zi, t, zi, 1) + if(zr*zr + zi*zi > mb->bailout) + break; + } + i-= FFMIN(7, i); + zr= mb->zyklus[i][0]; + zi= mb->zyklus[i][1]; + for(; imaxiter; i++){ double t; if(zr*zr + zi*zi > mb->bailout){ switch(mb->outer){