summaryrefslogtreecommitdiffhomepage
path: root/filter-ewma2/ftnoir_filter_ewma2.h
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2015-10-30 07:37:41 +0100
committerStanislaw Halik <sthalik@misaki.pl>2015-10-30 08:39:32 +0100
commitaa066bdd4622d4f6824fee864f6be6806813f04d (patch)
tree3df328b8b364cba2373a85827191b259bd78d546 /filter-ewma2/ftnoir_filter_ewma2.h
parentd6a54431d178632a2bf466c9904f74abd143afe6 (diff)
move to subdirectory-based build system
Closes #224
Diffstat (limited to 'filter-ewma2/ftnoir_filter_ewma2.h')
-rw-r--r--filter-ewma2/ftnoir_filter_ewma2.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/filter-ewma2/ftnoir_filter_ewma2.h b/filter-ewma2/ftnoir_filter_ewma2.h
new file mode 100644
index 00000000..bf4e83ad
--- /dev/null
+++ b/filter-ewma2/ftnoir_filter_ewma2.h
@@ -0,0 +1,66 @@
+#pragma once
+
+#include "opentrack/plugin-api.hpp"
+#include "ui_ftnoir_ewma_filtercontrols.h"
+#include <QElapsedTimer>
+#include <QWidget>
+#include <QMutex>
+#include "opentrack/options.hpp"
+using namespace options;
+
+struct settings : opts {
+ // these are sadly sliders for now due to int/double mismatch -sh
+ value<int> kMinSmoothing, kMaxSmoothing, kSmoothingScaleCurve;
+ settings() :
+ opts("ewma-filter"),
+ kMinSmoothing(b, "min-smoothing", 15),
+ kMaxSmoothing(b, "max-smoothing", 50),
+ kSmoothingScaleCurve(b, "smoothing-scale-curve", 10)
+ {}
+};
+
+
+class FTNoIR_Filter : public IFilter
+{
+public:
+ FTNoIR_Filter();
+ void reset();
+ void filter(const double *input, double *output);
+ void receiveSettings();
+private:
+ // Deltas are smoothed over the last 1/60sec (16ms).
+ const double delta_RC = 0.016;
+ // Noise is smoothed over the last 60sec.
+ const double noise_RC = 60.0;
+ double last_delta[6];
+ double last_noise[6];
+ double last_output[6];
+ QElapsedTimer timer;
+ settings s;
+};
+
+class FilterControls: public IFilterDialog
+{
+ Q_OBJECT
+public:
+ FilterControls();
+ void register_filter(IFilter* flt);
+ void unregister_filter();
+
+private:
+ Ui::UICFilterControls ui;
+ void save();
+ settings s;
+ FTNoIR_Filter* pFilter;
+
+private slots:
+ void doOK();
+ void doCancel();
+};
+
+class FTNoIR_FilterDll : public Metadata
+{
+public:
+ QString name() { return QString("EWMA"); }
+ QIcon icon() { return QIcon(":/images/filter-16.png"); }
+};