4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #ifndef DENOISEMJPEG_H
23 #define DENOISEMJPEG_H
27 #include "bcdisplayinfo.h"
29 #include "pluginvclient.h"
34 class DenoiseMJPEGConfig
39 int equivalent(DenoiseMJPEGConfig &that);
40 void copy_from(DenoiseMJPEGConfig &that);
41 void interpolate(DenoiseMJPEGConfig &prev,
42 DenoiseMJPEGConfig &next,
59 class DenoiseMJPEGWindow;
61 class DenoiseMJPEGRadius : public BC_IPot
64 DenoiseMJPEGRadius(DenoiseMJPEG *plugin, int x, int y);
69 class DenoiseMJPEGThresh : public BC_IPot
72 DenoiseMJPEGThresh(DenoiseMJPEG *plugin, int x, int y);
77 class DenoiseMJPEGThresh2 : public BC_IPot
80 DenoiseMJPEGThresh2(DenoiseMJPEG *plugin, int x, int y);
85 class DenoiseMJPEGSharp : public BC_IPot
88 DenoiseMJPEGSharp(DenoiseMJPEG *plugin, int x, int y);
93 class DenoiseMJPEGLContrast : public BC_IPot
96 DenoiseMJPEGLContrast(DenoiseMJPEG *plugin, int x, int y);
101 class DenoiseMJPEGCContrast : public BC_IPot
104 DenoiseMJPEGCContrast(DenoiseMJPEG *plugin, int x, int y);
106 DenoiseMJPEG *plugin;
109 class DenoiseMJPEGDeinterlace : public BC_CheckBox
112 DenoiseMJPEGDeinterlace(DenoiseMJPEG *plugin, int x, int y);
114 DenoiseMJPEG *plugin;
117 class DenoiseMJPEGModeInterlaced : public BC_Radial
120 DenoiseMJPEGModeInterlaced(DenoiseMJPEG *plugin, DenoiseMJPEGWindow *gui, int x, int y);
122 DenoiseMJPEG *plugin;
123 DenoiseMJPEGWindow *gui;
126 class DenoiseMJPEGModeProgressive : public BC_Radial
129 DenoiseMJPEGModeProgressive(DenoiseMJPEG *plugin, DenoiseMJPEGWindow *gui, int x, int y);
131 DenoiseMJPEG *plugin;
132 DenoiseMJPEGWindow *gui;
135 class DenoiseMJPEGModeFast : public BC_Radial
138 DenoiseMJPEGModeFast(DenoiseMJPEG *plugin, DenoiseMJPEGWindow *gui, int x, int y);
140 DenoiseMJPEG *plugin;
141 DenoiseMJPEGWindow *gui;
144 class DenoiseMJPEGDelay : public BC_IPot
147 DenoiseMJPEGDelay(DenoiseMJPEG *plugin, int x, int y);
149 DenoiseMJPEG *plugin;
153 class DenoiseMJPEGWindow : public PluginClientWindow
156 DenoiseMJPEGWindow(DenoiseMJPEG *plugin);
158 void create_objects();
160 void update_mode(int value);
162 DenoiseMJPEG *plugin;
163 DenoiseMJPEGRadius *radius;
164 DenoiseMJPEGThresh *threshold1;
165 DenoiseMJPEGThresh2 *threshold2;
166 DenoiseMJPEGSharp *sharpness;
167 DenoiseMJPEGLContrast *lcontrast;
168 DenoiseMJPEGCContrast *ccontrast;
169 DenoiseMJPEGDeinterlace *deinterlace;
170 DenoiseMJPEGModeInterlaced *interlaced;
171 DenoiseMJPEGModeProgressive *progressive;
172 DenoiseMJPEGModeFast *fast;
173 DenoiseMJPEGDelay *delay;
178 class DenoiseMJPEG : public PluginVClient
181 DenoiseMJPEG(PluginServer *server);
183 PLUGIN_CLASS_MEMBERS(DenoiseMJPEGConfig);
185 int process_realtime(VFrame *input, VFrame *output);
187 void save_data(KeyFrame *keyframe);
188 void read_data(KeyFrame *keyframe);