Mercurial > hg > svcore
diff transform/CSVFeatureWriter.cpp @ 1000:ec6e69373997
Implement end-times option for CSV writer (not yet tested)
author | Chris Cannam |
---|---|
date | Tue, 14 Oct 2014 17:30:37 +0100 |
parents | e25dc8d57565 |
children | 51bf067de517 |
line wrap: on
line diff
--- a/transform/CSVFeatureWriter.cpp Tue Oct 14 10:07:02 2014 +0100 +++ b/transform/CSVFeatureWriter.cpp Tue Oct 14 17:30:37 2014 +0100 @@ -33,7 +33,8 @@ SupportStdOut, "csv"), m_separator(","), - m_sampleTiming(false) + m_sampleTiming(false), + m_endTimes(false) { } @@ -62,6 +63,11 @@ p.description = "Show timings as sample frame counts instead of in seconds."; p.hasArg = false; pl.push_back(p); + + p.name = "end-times"; + p.description = "Show start and end time instead of start and duration, for features with duration."; + p.hasArg = false; + pl.push_back(p); return pl; } @@ -79,6 +85,8 @@ m_separator = i->second.c_str(); } else if (i->first == "sample-timing") { m_sampleTiming = true; + } else if (i->first == "end-times") { + m_endTimes = true; } } } @@ -118,8 +126,14 @@ if (features[i].hasDuration) { stream << m_separator; - stream << Vamp::RealTime::realTime2Frame - (features[i].duration, transform.getSampleRate()); + if (m_endTimes) { + stream << Vamp::RealTime::realTime2Frame + (features[i].timestamp + features[i].duration, + transform.getSampleRate()); + } else { + stream << Vamp::RealTime::realTime2Frame + (features[i].duration, transform.getSampleRate()); + } } } else { @@ -129,9 +143,17 @@ stream << timestamp; if (features[i].hasDuration) { - QString duration = features[i].duration.toString().c_str(); - duration.replace(QRegExp("^ +"), ""); - stream << m_separator << duration; + if (m_endTimes) { + QString endtime = + (features[i].timestamp + features[i].duration) + .toString().c_str(); + endtime.replace(QRegExp("^ +"), ""); + stream << m_separator << endtime; + } else { + QString duration = features[i].duration.toString().c_str(); + duration.replace(QRegExp("^ +"), ""); + stream << m_separator << duration; + } } }