changeset 419:55de53d7c777

Merge
author Chris Cannam
date Tue, 01 Mar 2016 12:21:23 +0000
parents a13635e9c440 (diff) fae1ba2cb534 (current diff)
children 99868cd95acb
files src/vamp-hostsdk/PluginSummarisingAdapter.cpp
diffstat 1 files changed, 77 insertions(+), 60 deletions(-) [+]
line wrap: on
line diff
--- a/src/vamp-hostsdk/PluginSummarisingAdapter.cpp	Sun Dec 13 12:25:11 2015 +0000
+++ b/src/vamp-hostsdk/PluginSummarisingAdapter.cpp	Tue Mar 01 12:21:23 2016 +0000
@@ -41,6 +41,8 @@
 #include <cmath>
 #include <climits>
 
+using namespace std;
+
 //#define DEBUG_PLUGIN_SUMMARISING_ADAPTER 1
 //#define DEBUG_PLUGIN_SUMMARISING_ADAPTER_SEGMENT 1
 
@@ -80,7 +82,7 @@
 
     SegmentBoundaries m_boundaries;
 
-    typedef std::vector<float> ValueList;
+    typedef vector<float> ValueList;
 
     struct Result { // smaller than Feature
         RealTime time;
@@ -88,7 +90,7 @@
         ValueList values; // bin number -> value
     };
 
-    typedef std::vector<Result> ResultList;
+    typedef vector<Result> ResultList;
 
     struct OutputAccumulator {
         int bins;
@@ -96,14 +98,14 @@
         OutputAccumulator() : bins(0) { }
     };
 
-    typedef std::map<int, OutputAccumulator> OutputAccumulatorMap;
+    typedef map<int, OutputAccumulator> OutputAccumulatorMap;
     OutputAccumulatorMap m_accumulators; // output number -> accumulator
 
-    typedef std::map<RealTime, OutputAccumulator> SegmentAccumulatorMap;
-    typedef std::map<int, SegmentAccumulatorMap> OutputSegmentAccumulatorMap;
+    typedef map<RealTime, OutputAccumulator> SegmentAccumulatorMap;
+    typedef map<int, SegmentAccumulatorMap> OutputSegmentAccumulatorMap;
     OutputSegmentAccumulatorMap m_segmentedAccumulators; // output -> segmented
 
-    typedef std::map<int, RealTime> OutputTimestampMap;
+    typedef map<int, RealTime> OutputTimestampMap;
     OutputTimestampMap m_prevTimestamps; // output number -> timestamp
     OutputTimestampMap m_prevDurations; // output number -> durations
 
@@ -128,9 +130,9 @@
         double variance_c;
     };
 
-    typedef std::map<int, OutputBinSummary> OutputSummary;
-    typedef std::map<RealTime, OutputSummary> SummarySegmentMap;
-    typedef std::map<int, SummarySegmentMap> OutputSummarySegmentMap;
+    typedef map<int, OutputBinSummary> OutputSummary;
+    typedef map<RealTime, OutputSummary> SummarySegmentMap;
+    typedef map<int, SummarySegmentMap> OutputSummarySegmentMap;
 
     OutputSummarySegmentMap m_summaries;
 
@@ -144,7 +146,7 @@
     void segment();
     void reduce();
 
-    std::string getSummaryLabel(SummaryType type, AveragingMethod avg);
+    string getSummaryLabel(SummaryType type, AveragingMethod avg);
 };
 
 static RealTime INVALID_DURATION(INT_MIN, INT_MIN);
@@ -245,12 +247,16 @@
                                         RealTime timestamp)
 {
     if (m_reduced) {
-        std::cerr << "WARNING: Cannot call PluginSummarisingAdapter::process() or getRemainingFeatures() after one of the getSummary methods" << std::endl;
+        cerr << "WARNING: Cannot call PluginSummarisingAdapter::process() or getRemainingFeatures() after one of the getSummary methods" << endl;
     }
     FeatureSet fs = m_plugin->process(inputBuffers, timestamp);
     accumulate(fs, timestamp, false);
     m_endTime = timestamp + 
         RealTime::frame2RealTime(m_stepSize, int(m_inputSampleRate + 0.5));
+#ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
+    cerr << "timestamp = " << timestamp << ", end time becomes " << m_endTime
+         << endl;
+#endif
     return fs;
 }
 
@@ -258,7 +264,7 @@
 PluginSummarisingAdapter::Impl::getRemainingFeatures()
 {
     if (m_reduced) {
-        std::cerr << "WARNING: Cannot call PluginSummarisingAdapter::process() or getRemainingFeatures() after one of the getSummary methods" << std::endl;
+        cerr << "WARNING: Cannot call PluginSummarisingAdapter::process() or getRemainingFeatures() after one of the getSummary methods" << endl;
     }
     FeatureSet fs = m_plugin->getRemainingFeatures();
     accumulate(fs, m_endTime, true);
@@ -270,12 +276,12 @@
 {
     m_boundaries = b;
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-    std::cerr << "PluginSummarisingAdapter::setSummarySegmentBoundaries: boundaries are:" << std::endl;
+    cerr << "PluginSummarisingAdapter::setSummarySegmentBoundaries: boundaries are:" << endl;
     for (SegmentBoundaries::const_iterator i = m_boundaries.begin();
          i != m_boundaries.end(); ++i) {
-        std::cerr << *i << "  ";
+        cerr << *i << "  ";
     }
-    std::cerr << std::endl;
+    cerr << endl;
 #endif
 }
 
@@ -420,12 +426,12 @@
     }
 }
 
-std::string
+string
 PluginSummarisingAdapter::Impl::getSummaryLabel(SummaryType type,
                                                 AveragingMethod avg)
 {
-    std::string label;
-    std::string avglabel;
+    string label;
+    string avglabel;
 
     if (avg == SampleAverage) avglabel = ", sample average";
     else avglabel = ", continuous-time average";
@@ -450,7 +456,11 @@
 PluginSummarisingAdapter::Impl::accumulate(int output,
                                            const Feature &f,
                                            RealTime timestamp,
-                                           bool /* final */)
+                                           bool
+#ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
+                                           final
+#endif
+    )
 {
     // What should happen if a feature's duration spans a segment
     // boundary?  I think we probably want to chop it, and pretend
@@ -466,7 +476,7 @@
     // into segments).
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-    std::cerr << "output " << output << ": timestamp " << timestamp << ", prev timestamp " << m_prevTimestamps[output] << ", final " << final << std::endl;
+    cerr << "output " << output << ": timestamp " << timestamp << ", prev timestamp " << m_prevTimestamps[output] << ", final " << final << endl;
 #endif
 
     // At each process step, accumulate() is called once for each
@@ -507,19 +517,19 @@
         if (m_prevDurations[output] != INVALID_DURATION) {
             prevDuration = m_prevDurations[output];
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-            std::cerr << "Previous duration from previous feature: " << prevDuration << std::endl;
+            cerr << "Previous duration from previous feature: " << prevDuration << endl;
 #endif
         } else {
             prevDuration = timestamp - m_prevTimestamps[output];
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-            std::cerr << "Previous duration from diff: " << timestamp << " - "
-                      << m_prevTimestamps[output] << std::endl;
+            cerr << "Previous duration from diff: " << timestamp << " - "
+                      << m_prevTimestamps[output] << endl;
 #endif
         }
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-        std::cerr << "output " << output << ": ";
-        std::cerr << "Pushing previous duration as " << prevDuration << std::endl;
+        cerr << "output " << output << ": ";
+        cerr << "Pushing previous duration as " << prevDuration << endl;
 #endif
         
         m_accumulators[output].results
@@ -536,6 +546,9 @@
         RealTime et = timestamp;
         et = et + f.duration;
         if (et > m_endTime) m_endTime = et;
+#ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
+        cerr << "feature has duration, updating end time to " << m_endTime << endl;
+#endif
     }
 
     Result result;
@@ -566,14 +579,14 @@
         if (acount == 0) continue;
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-        std::cerr << "output " << output << ": ";
+        cerr << "output " << output << ": ";
 #endif
 
         if (m_prevDurations.find(output) != m_prevDurations.end() &&
             m_prevDurations[output] != INVALID_DURATION) {
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-            std::cerr << "Pushing final duration from feature as " << m_prevDurations[output] << std::endl;
+            cerr << "Pushing final duration from feature as " << m_prevDurations[output] << endl;
 #endif
 
             m_accumulators[output].results[acount - 1].duration =
@@ -582,7 +595,7 @@
         } else {
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-            std::cerr << "Pushing final duration from diff as " << m_endTime << " - " << m_prevTimestamps[output] << std::endl;
+            cerr << "Pushing final duration from diff as " << m_endTime << " - " << m_prevTimestamps[output] << endl;
 #endif
 
             m_accumulators[output].results[acount - 1].duration =
@@ -590,9 +603,9 @@
         }
         
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-        std::cerr << "so duration for result no " << acount-1 << " is "
+        cerr << "so duration for result no " << acount-1 << " is "
                   << m_accumulators[output].results[acount-1].duration
-                  << std::endl;
+                  << endl;
 #endif
     }
 }
@@ -603,10 +616,10 @@
                                                   RealTime &end)
 {
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER_SEGMENT
-    std::cerr << "findSegmentBounds: t = " << t <<  std::endl;
+    cerr << "findSegmentBounds: t = " << t <<  endl;
 #endif
 
-    SegmentBoundaries::const_iterator i = std::upper_bound
+    SegmentBoundaries::const_iterator i = upper_bound
         (m_boundaries.begin(), m_boundaries.end(), t);
 
     start = RealTime::zeroTime;
@@ -621,7 +634,7 @@
     }
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER_SEGMENT
-    std::cerr << "findSegmentBounds: " << t << " is in segment " << start << " -> " << end << std::endl;
+    cerr << "findSegmentBounds: " << t << " is in segment " << start << " -> " << end << endl;
 #endif
 }
 
@@ -629,7 +642,7 @@
 PluginSummarisingAdapter::Impl::segment()
 {
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER_SEGMENT
-    std::cerr << "segment: starting" << std::endl;
+    cerr << "segment: starting" << endl;
 #endif
 
     for (OutputAccumulatorMap::iterator i = m_accumulators.begin();
@@ -639,8 +652,8 @@
         OutputAccumulator &source = i->second;
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER_SEGMENT
-        std::cerr << "segment: total results for output " << output << " = "
-                  << source.results.size() << std::endl;
+        cerr << "segment: total results for output " << output << " = "
+                  << source.results.size() << endl;
 #endif
 
         // This is basically nonsense if the results have no values
@@ -658,7 +671,7 @@
             RealTime resultEnd = resultStart + source.results[n].duration;
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER_SEGMENT
-            std::cerr << "output: " << output << ", result start = " << resultStart << ", end = " << resultEnd << std::endl;
+            cerr << "output: " << output << ", result start = " << resultStart << ", end = " << resultEnd << endl;
 #endif
 
             RealTime segmentStart = RealTime::zeroTime;
@@ -669,8 +682,8 @@
             while (segmentEnd < resultEnd) {
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER_SEGMENT
-                std::cerr << "segment end " << segmentEnd << " < result end "
-                          << resultEnd << " (with result start " << resultStart << ")" <<  std::endl;
+                cerr << "segment end " << segmentEnd << " < result end "
+                          << resultEnd << " (with result start " << resultStart << ")" <<  endl;
 #endif
 
                 findSegmentBounds(resultStart, segmentStart, segmentEnd);
@@ -697,7 +710,7 @@
                 chunk.values = source.results[n].values;
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER_SEGMENT
-                std::cerr << "chunk for segment " << segmentStart << ": from " << chunk.time << ", duration " << chunk.duration << std::endl;
+                cerr << "chunk for segment " << segmentStart << ": from " << chunk.time << ", duration " << chunk.duration << endl;
 #endif
 
                 m_segmentedAccumulators[output][segmentStart].results
@@ -750,18 +763,18 @@
             int sz = accumulator.results.size();
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-            std::cerr << "reduce: segment starting at " << segmentStart
-                      << " on output " << output << " has " << sz << " result(s)" << std::endl;
+            cerr << "reduce: segment starting at " << segmentStart
+                      << " on output " << output << " has " << sz << " result(s)" << endl;
 #endif
 
             double totalDuration = 0.0;
             //!!! is this right?
             if (sz > 0) {
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-                std::cerr << "last time = " << accumulator.results[sz-1].time 
+                cerr << "last time = " << accumulator.results[sz-1].time 
                           << ", duration = " << accumulator.results[sz-1].duration
                           << " (step = " << m_stepSize << ", block = " << m_blockSize << ")"
-                          << std::endl;
+                          << endl;
 #endif
                 totalDuration = toSec((accumulator.results[sz-1].time +
                                        accumulator.results[sz-1].duration) -
@@ -772,6 +785,10 @@
 
                 // work on all values over time for a single bin
 
+#ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
+                cerr << "bin " << bin << ":" << endl;
+#endif
+                
                 OutputBinSummary summary;
 
                 summary.count = sz;
@@ -791,7 +808,7 @@
 
                 if (sz == 0) continue;
 
-                std::vector<ValueDurationFloatPair> valvec;
+                vector<ValueDurationFloatPair> valvec;
 
                 for (int k = 0; k < sz; ++k) {
                     while (int(accumulator.results[k].values.size()) <
@@ -807,22 +824,22 @@
                                       toSec(accumulator.results[k].duration)));
                 }
 
-                std::sort(valvec.begin(), valvec.end());
+                sort(valvec.begin(), valvec.end());
 
                 summary.minimum = valvec[0].value;
                 summary.maximum = valvec[sz-1].value;
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-                std::cerr << "total duration = " << totalDuration << std::endl;
+                cerr << "total duration = " << totalDuration << endl;
 #endif
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
 /*
-                std::cerr << "value vector for medians:" << std::endl;
+                cerr << "value vector for medians:" << endl;
                 for (int k = 0; k < sz; ++k) {
-                    std::cerr << "(" << valvec[k].value << "," << valvec[k].duration << ") ";
+                    cerr << "(" << valvec[k].value << "," << valvec[k].duration << ") ";
                 }
-                std::cerr << std::endl;
+                cerr << endl;
 */
 #endif
 
@@ -844,11 +861,11 @@
                 }
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-                std::cerr << "median_c = " << summary.median_c << std::endl;
-                std::cerr << "median = " << summary.median << std::endl;
+                cerr << "median_c = " << summary.median_c << endl;
+                cerr << "median = " << summary.median << endl;
 #endif
                 
-                std::map<float, int> distribution;
+                map<float, int> distribution;
 
                 for (int k = 0; k < sz; ++k) {
                     summary.sum += accumulator.results[k].values[bin];
@@ -857,7 +874,7 @@
 
                 int md = 0;
 
-                for (std::map<float, int>::iterator di = distribution.begin();
+                for (map<float, int>::iterator di = distribution.begin();
                      di != distribution.end(); ++di) {
                     if (di->second > md) {
                         md = di->second;
@@ -867,7 +884,7 @@
 
                 distribution.clear();
 
-                std::map<float, double> distribution_c;
+                map<float, double> distribution_c;
 
                 for (int k = 0; k < sz; ++k) {
                     distribution_c[accumulator.results[k].values[bin]]
@@ -876,7 +893,7 @@
 
                 double mrd = 0.0;
 
-                for (std::map<float, double>::iterator di = distribution_c.begin();
+                for (map<float, double>::iterator di = distribution_c.begin();
                      di != distribution_c.end(); ++di) {
                     if (di->second > mrd) {
                         mrd = di->second;
@@ -897,8 +914,8 @@
                     }
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-                    std::cerr << "mean_c = " << sum_c << " / " << totalDuration << " = "
-                              << sum_c / totalDuration << " (sz = " << sz << ")" << std::endl;
+                    cerr << "mean_c = " << sum_c << " / " << totalDuration << " = "
+                              << sum_c / totalDuration << " (sz = " << sz << ")" << endl;
 #endif
                 
                     summary.mean_c = sum_c / totalDuration;
@@ -918,8 +935,8 @@
                 double mean = summary.sum / summary.count;
 
 #ifdef DEBUG_PLUGIN_SUMMARISING_ADAPTER
-                std::cerr << "mean = " << summary.sum << " / " << summary.count << " = "
-                          << summary.sum / summary.count << std::endl;
+                cerr << "mean = " << summary.sum << " / " << summary.count << " = "
+                          << summary.sum / summary.count << endl;
 #endif
 
                 for (int k = 0; k < sz; ++k) {