diff transform/CSVFeatureWriter.cpp @ 1006:d954e03274e8

TransformId is not sufficient -- it could be ambiguous (same transform id, different parameters etc). Use the whole transform
author Chris Cannam
date Wed, 15 Oct 2014 17:02:48 +0100
parents c2316a3bbb81
children d74ebd2d2c49
line wrap: on
line diff
--- a/transform/CSVFeatureWriter.cpp	Wed Oct 15 16:05:15 2014 +0100
+++ b/transform/CSVFeatureWriter.cpp	Wed Oct 15 17:02:48 2014 +0100
@@ -134,11 +134,7 @@
 
     if (n == 0) return;
 
-    TrackTransformPair tt(trackId, transformId);
-
-    if (m_rates.find(transformId) == m_rates.end()) {
-        m_rates[transformId] = transform.getSampleRate();
-    }
+    DataId tt(trackId, transform);
 
     if (m_pending.find(tt) != m_pending.end()) {
         writeFeature(tt,
@@ -171,11 +167,11 @@
 {
     for (PendingFeatures::const_iterator i = m_pending.begin();
          i != m_pending.end(); ++i) {
-        TrackTransformPair tt = i->first;
+        DataId tt = i->first;
         Plugin::Feature f = i->second;
-        QTextStream *sptr = getOutputStream(tt.first, tt.second);
+        QTextStream *sptr = getOutputStream(tt.first, tt.second.getIdentifier());
         if (!sptr) {
-            throw FailedToOpenOutputStream(tt.first, tt.second);
+            throw FailedToOpenOutputStream(tt.first, tt.second.getIdentifier());
         }
         QTextStream &stream = *sptr;
         // final feature has its own time as end time (we can't
@@ -189,14 +185,14 @@
 }
 
 void
-CSVFeatureWriter::writeFeature(TrackTransformPair tt,
+CSVFeatureWriter::writeFeature(DataId tt,
                                QTextStream &stream,
                                const Plugin::Feature &f,
                                const Plugin::Feature *optionalNextFeature,
                                std::string summaryType)
 {
     QString trackId = tt.first;
-    TransformId transformId = tt.second;
+    Transform transform = tt.second;
 
     if (!m_omitFilename) {
         if (m_stdout || m_singleFileName != "") {
@@ -222,7 +218,7 @@
 
     if (m_sampleTiming) {
 
-        float rate = m_rates[transformId];
+        float rate = transform.getSampleRate();
 
         stream << Vamp::RealTime::realTime2Frame(f.timestamp, rate);