r1008: pt_BR translation update
[cinelerra_cv/mob.git] / plugins / sharpen / sharpen.h
blobfd0263b8f9e9ae0ab3540fb1640705ab74c914cb
1 #ifndef SHARPEN_H
2 #define SHARPEN_H
4 // the simplest plugin possible
5 // Sharpen leaves the last line too bright
7 class SharpenMain;
8 #define MAXSHARPNESS 100
10 #include "condition.inc"
11 #include "bchash.h"
12 #include "pluginvclient.h"
13 #include "sharpenwindow.h"
15 #include <sys/types.h>
17 class SharpenEngine;
19 class SharpenConfig
21 public:
22 SharpenConfig();
24 void copy_from(SharpenConfig &that);
25 int equivalent(SharpenConfig &that);
26 void interpolate(SharpenConfig &prev,
27 SharpenConfig &next,
28 long prev_frame,
29 long next_frame,
30 long current_frame);
34 int horizontal;
35 int interlace;
36 int luminance;
37 float sharpness;
40 class SharpenMain : public PluginVClient
42 public:
43 SharpenMain(PluginServer *server);
44 ~SharpenMain();
46 // required for all realtime plugins
47 int process_realtime(VFrame *input_ptr, VFrame *output_ptr);
48 int is_realtime();
49 char* plugin_title();
50 int show_gui();
51 void raise_window();
52 int set_string();
53 void update_gui();
54 int load_configuration();
55 void save_data(KeyFrame *keyframe);
56 void read_data(KeyFrame *keyframe);
57 int load_defaults();
58 int save_defaults();
59 VFrame* new_picon();
61 // parameters needed for sharpness
62 int row_step;
64 // a thread for the GUI
65 SharpenThread *thread;
66 int pos_lut[0x10000], neg_lut[0x10000];
67 SharpenConfig config;
68 VFrame *output, *input;
70 private:
71 int get_luts(int *pos_lut, int *neg_lut, int color_model);
72 BC_Hash *defaults;
73 SharpenEngine **engine;
74 int total_engines;
78 class SharpenEngine : public Thread
80 public:
81 SharpenEngine(SharpenMain *plugin);
82 ~SharpenEngine();
84 int start_process_frame(VFrame *output, VFrame *input, int field);
85 int wait_process_frame();
86 void run();
88 void filter(int components,
89 int vmax,
90 int w,
91 unsigned char *src,
92 unsigned char *dst,
93 int *neg0,
94 int *neg1,
95 int *neg2);
96 void filter(int components,
97 int vmax,
98 int w,
99 u_int16_t *src,
100 u_int16_t *dst,
101 int *neg0,
102 int *neg1,
103 int *neg2);
104 void filter(int components,
105 int vmax,
106 int w,
107 float *src,
108 float *dst,
109 float *neg0,
110 float *neg1,
111 float *neg2);
114 void filter_888(int w,
115 unsigned char *src,
116 unsigned char *dst,
117 int *neg0,
118 int *neg1,
119 int *neg2);
120 void filter_8888(int w,
121 unsigned char *src,
122 unsigned char *dst,
123 int *neg0,
124 int *neg1,
125 int *neg2);
126 void filter_161616(int w,
127 u_int16_t *src,
128 u_int16_t *dst,
129 int *neg0,
130 int *neg1,
131 int *neg2);
132 void filter_16161616(int w,
133 u_int16_t *src,
134 u_int16_t *dst,
135 int *neg0,
136 int *neg1,
137 int *neg2);
139 int filter(int w,
140 unsigned char *src,
141 unsigned char *dst,
142 int *neg0,
143 int *neg1,
144 int *neg2);
146 float calculate_pos(float value);
147 float calculate_neg(float value);
150 SharpenMain *plugin;
151 int field;
152 VFrame *output, *input;
153 int last_frame;
154 Condition *input_lock, *output_lock;
155 unsigned char *src_rows[4], *dst_row;
156 unsigned char *neg_rows[4];
157 float sharpness_coef;
160 #endif