From 162d672769f648f33e89c6f666cf927b32f5ef3f Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 1 Jun 2012 16:52:56 +0000 Subject: Minor tidy-ups to MTDM code; add test. git-svn-id: svn://localhost/ardour2/branches/3.0@12527 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/mtdm.h | 10 +++++----- libs/ardour/mtdm.cc | 2 +- libs/ardour/port_insert.cc | 7 ++----- libs/ardour/test/mtdm_test.cc | 29 +++++++++++++++++++++++++++++ libs/ardour/test/mtdm_test.h | 17 +++++++++++++++++ libs/ardour/wscript | 1 + 6 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 libs/ardour/test/mtdm_test.cc create mode 100644 libs/ardour/test/mtdm_test.h (limited to 'libs/ardour') 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 +#include +#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 +#include +#include + +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() -- cgit v1.2.3