summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2012-06-01 16:52:56 +0000
committerCarl Hetherington <carl@carlh.net>2012-06-01 16:52:56 +0000
commit162d672769f648f33e89c6f666cf927b32f5ef3f (patch)
tree706c84730df55025a8fab78c9ffb0a2c2c0d755e /libs/ardour
parent98f44aa20cef3c59506c2b15af92c6499d8b1c57 (diff)
Minor tidy-ups to MTDM code; add test.
git-svn-id: svn://localhost/ardour2/branches/3.0@12527 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/mtdm.h10
-rw-r--r--libs/ardour/mtdm.cc2
-rw-r--r--libs/ardour/port_insert.cc7
-rw-r--r--libs/ardour/test/mtdm_test.cc29
-rw-r--r--libs/ardour/test/mtdm_test.h17
-rw-r--r--libs/ardour/wscript1
6 files changed, 55 insertions, 11 deletions
diff --git a/libs/ardour/ardour/mtdm.h b/libs/ardour/ardour/mtdm.h
index 9d67e1cd64..59b504b821 100644
--- a/libs/ardour/ardour/mtdm.h
+++ b/libs/ardour/ardour/mtdm.h
@@ -27,11 +27,11 @@ public:
MTDM ();
int process (size_t len, float *inp, float *out);
- int resolve (void);
- void invert (void) { _inv ^= 1; }
- int inv (void) { return _inv; }
- double del (void) { return _del; }
- double err (void) { return _err; }
+ int resolve ();
+ void invert () { _inv ^= 1; }
+ int inv () { return _inv; }
+ double del () { return _del; }
+ double err () { return _err; }
private:
class Freq {
diff --git a/libs/ardour/mtdm.cc b/libs/ardour/mtdm.cc
index ba73025053..4c27b3b600 100644
--- a/libs/ardour/mtdm.cc
+++ b/libs/ardour/mtdm.cc
@@ -20,7 +20,7 @@
#include "ardour/mtdm.h"
-MTDM::MTDM (void)
+MTDM::MTDM ()
: _cnt (0)
, _inv (0)
{
diff --git a/libs/ardour/port_insert.cc b/libs/ardour/port_insert.cc
index 46c4d7e9d5..05d0aa3c6f 100644
--- a/libs/ardour/port_insert.cc
+++ b/libs/ardour/port_insert.cc
@@ -62,10 +62,7 @@ PortInsert::~PortInsert ()
void
PortInsert::start_latency_detection ()
{
- if (_mtdm != 0) {
- delete _mtdm;
- }
-
+ delete _mtdm;
_mtdm = new MTDM;
_latency_flush_frames = false;
_latency_detect = true;
@@ -118,7 +115,7 @@ PortInsert::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame,
Sample* out = outbuf.data();
_mtdm->process (nframes, in, out);
-
+
outbuf.set_is_silent (false);
}
diff --git a/libs/ardour/test/mtdm_test.cc b/libs/ardour/test/mtdm_test.cc
new file mode 100644
index 0000000000..e409bd664a
--- /dev/null
+++ b/libs/ardour/test/mtdm_test.cc
@@ -0,0 +1,29 @@
+#include <cstring>
+#include <cmath>
+#include "ardour/mtdm.h"
+#include "mtdm_test.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION (MTDMTest);
+
+using namespace std;
+
+void
+MTDMTest::basicTest ()
+{
+ float in[256];
+ float out[256];
+
+ memset (in, 0, 256 * sizeof (float));
+ MTDM* mtdm = new MTDM;
+ mtdm->process (256, in, out);
+ memcpy (in, out, 256 * sizeof (float));
+
+ for (int i = 0; i < 64; ++i) {
+ mtdm->process (256, in, out);
+ memcpy (in, out, 256 * sizeof (float));
+
+ CPPUNIT_ASSERT_EQUAL (0, mtdm->resolve ());
+ CPPUNIT_ASSERT (mtdm->err() < 1);
+ CPPUNIT_ASSERT_EQUAL (256.0, rint (mtdm->del()));
+ }
+}
diff --git a/libs/ardour/test/mtdm_test.h b/libs/ardour/test/mtdm_test.h
new file mode 100644
index 0000000000..c02a4f2d12
--- /dev/null
+++ b/libs/ardour/test/mtdm_test.h
@@ -0,0 +1,17 @@
+#include <sigc++/sigc++.h>
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+class MTDMTest : public CppUnit::TestFixture
+{
+ CPPUNIT_TEST_SUITE (MTDMTest);
+ CPPUNIT_TEST (basicTest);
+ CPPUNIT_TEST_SUITE_END ();
+
+public:
+ void setUp () {}
+ void tearDown () {}
+
+ void basicTest ();
+};
+
diff --git a/libs/ardour/wscript b/libs/ardour/wscript
index 2312c363d2..ee86a20319 100644
--- a/libs/ardour/wscript
+++ b/libs/ardour/wscript
@@ -437,6 +437,7 @@ def build(bld):
test/playlist_layering_test.cc
test/playlist_read_test.cc
test/control_surfaces_test.cc
+ test/mtdm_test.cc
test/testrunner.cc
'''.split()