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 DENOISEVIDEO_H
23 #define DENOISEVIDEO_H
26 class DenoiseVideoWindow;
28 #include "bcdisplayinfo.h"
30 #include "pluginvclient.h"
35 class DenoiseVideoConfig
40 int equivalent(DenoiseVideoConfig &that);
41 void copy_from(DenoiseVideoConfig &that);
42 void interpolate(DenoiseVideoConfig &prev,
43 DenoiseVideoConfig &next,
51 int do_r, do_g, do_b, do_a;
57 class DenoiseVideoFrames : public BC_ISlider
60 DenoiseVideoFrames(DenoiseVideo *plugin, int x, int y);
66 class DenoiseVideoThreshold : public BC_TumbleTextBox
69 DenoiseVideoThreshold(DenoiseVideo *plugin,
70 DenoiseVideoWindow *gui,
77 class DenoiseVideoToggle : public BC_CheckBox
80 DenoiseVideoToggle(DenoiseVideo *plugin,
81 DenoiseVideoWindow *gui,
91 class DenoiseVideoCountChanged : public BC_Radial
94 DenoiseVideoCountChanged(DenoiseVideo *plugin,
95 DenoiseVideoWindow *gui,
100 DenoiseVideoWindow *gui;
103 class DenoiseVideoCountSame : public BC_Radial
106 DenoiseVideoCountSame(DenoiseVideo *plugin,
107 DenoiseVideoWindow *gui,
111 DenoiseVideo *plugin;
112 DenoiseVideoWindow *gui;
115 class DenoiseVideoWindow : public PluginClientWindow
118 DenoiseVideoWindow(DenoiseVideo *plugin);
120 void create_objects();
122 DenoiseVideo *plugin;
123 DenoiseVideoFrames *frames;
124 DenoiseVideoThreshold *threshold;
125 DenoiseVideoToggle *do_r, *do_g, *do_b, *do_a;
126 DenoiseVideoCountChanged *count_changed;
127 DenoiseVideoCountSame *count_same;
132 class DenoiseVideo : public PluginVClient
135 DenoiseVideo(PluginServer *server);
138 PLUGIN_CLASS_MEMBERS(DenoiseVideoConfig)
139 int process_realtime(VFrame *input, VFrame *output);
141 void save_data(KeyFrame *keyframe);
142 void read_data(KeyFrame *keyframe);