Browse code

vsrc_mandelbrot: factorize periodicity checking too.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2011/11/19 21:55:51
Showing 1 changed files
... ...
@@ -237,6 +237,16 @@ static void draw_mandelbrot(AVFilterContext *ctx, uint32_t *color, int linesize,
237 237
             outr= inr*inr - ini*ini + cr;\
238 238
             outi= 2*inr*ini + ci;
239 239
 
240
+#define Z_Z2_C_ZYKLUS(outr,outi,inr,ini, Z)\
241
+            Z_Z2_C(outr,outi,inr,ini)\
242
+            if(use_zyklus){\
243
+                if(Z && mb->zyklus[i>>1][0]==outr && mb->zyklus[i>>1][1]==outi)\
244
+                    break;\
245
+                mb->zyklus[i][0]= outr;\
246
+                mb->zyklus[i][1]= outi;\
247
+            }
248
+
249
+
240 250
             for(i=0; i<mb->maxiter; i++){
241 251
                 double t;
242 252
                 if(zr*zr + zi*zi > mb->bailout){
... ...
@@ -247,19 +257,9 @@ static void draw_mandelbrot(AVFilterContext *ctx, uint32_t *color, int linesize,
247 247
                     c= lrintf((sin(zr)+1)*127) + lrintf((sin(zr/1.234)+1)*127)*256*256 + lrintf((sin(zr/100)+1)*127)*256;
248 248
                     break;
249 249
                 }
250
-                Z_Z2_C(t, zi, zr, zi)
251
-                if(use_zyklus){
252
-                    mb->zyklus[i][0]= t;
253
-                    mb->zyklus[i][1]= zi;
254
-                }
250
+                Z_Z2_C_ZYKLUS(t, zi, zr, zi, 0)
255 251
                 i++;
256
-                Z_Z2_C(zr, zi, t, zi)
257
-                if(use_zyklus){
258
-                    if(mb->zyklus[i>>1][0]==zr && mb->zyklus[i>>1][1]==zi)
259
-                        break;
260
-                    mb->zyklus[i][0]= zr;
261
-                    mb->zyklus[i][1]= zi;
262
-                }
252
+                Z_Z2_C_ZYKLUS(zr, zi, t, zi, 1)
263 253
             }
264 254
             if(!c){
265 255
                 if(mb->inner==PERIOD){