summaryrefslogtreecommitdiff
path: root/libavfilter/vsrc_mandelbrot.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-11-19 14:15:56 +0100
committerMichael Niedermayer <michaelni@gmx.at>2011-11-19 14:15:56 +0100
commit649d3932db83763a49073a185189d338adbb3b9d (patch)
treee6ea4cc764e06a2836932f4b37783c9eaa4dccda /libavfilter/vsrc_mandelbrot.c
parentfe2efc5264940d0561b50bcce65dc8a24f352d9e (diff)
vsrc_mandelbrot: check bailout only once every 8 iterations, this is around 10% faster.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/vsrc_mandelbrot.c')
-rw-r--r--libavfilter/vsrc_mandelbrot.c25
1 files changed, 24 insertions, 1 deletions
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; i<mb->maxiter; i++){
+ for(i=0; i<mb->maxiter-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(; i<mb->maxiter; i++){
double t;
if(zr*zr + zi*zi > mb->bailout){
switch(mb->outer){