9 #include "blurwindow.inc"
10 #include "defaults.inc"
12 #include "pluginvclient.h"
29 int equivalent(BlurConfig
&that
);
30 void copy_from(BlurConfig
&that
);
31 void interpolate(BlurConfig
&prev
,
35 int64_t current_frame
);
43 class BlurMain
: public PluginVClient
46 BlurMain(PluginServer
*server
);
49 // required for all realtime plugins
50 int process_realtime(VFrame
*input_ptr
, VFrame
*output_ptr
);
54 void save_data(KeyFrame
*keyframe
);
55 void read_data(KeyFrame
*keyframe
);
58 PLUGIN_CLASS_MEMBERS(BlurConfig
, BlurThread
)
62 // a thread for the GUI
63 VFrame
*temp
, *input
, *output
;
70 class BlurEngine
: public Thread
73 BlurEngine(BlurMain
*plugin
, int start_y
, int end_y
);
77 int start_process_frame(VFrame
*output
, VFrame
*input
);
78 int wait_process_frame();
80 // parameters needed for blur
83 int transfer_pixels(pixel_f
*src1
, pixel_f
*src2
, pixel_f
*dest
, int size
);
84 int multiply_alpha(pixel_f
*row
, int size
);
85 int separate_alpha(pixel_f
*row
, int size
);
86 int blur_strip3(int &size
);
87 int blur_strip4(int &size
);
91 pixel_f
*val_p
, *val_m
, *vp
, *vm
;
95 float bd_p
[5], bd_m
[5];
102 // A margin is introduced between the input and output to give a seemless transition between blurs
103 int start_in
, start_out
;
105 VFrame
*output
, *input
;
107 Mutex input_lock
, output_lock
;