# HG changeset patch # User Chris Cannam # Date 1225283886 0 # Node ID eb246395f5761f5b87d96ceceb328b3ca59be5f2 # Parent 1a7563c56d8807df73a6a2e4857aa8bf4ca4c0ed * Fix substantial amount of wrongness in getRemainingFeatures diff -r 1a7563c56d88 -r eb246395f576 plugins/Silence.cpp --- a/plugins/Silence.cpp Fri Oct 24 14:51:44 2008 +0000 +++ b/plugins/Silence.cpp Wed Oct 29 12:38:06 2008 +0000 @@ -290,8 +290,10 @@ if (m_apiVersion == 1) { if (silent) { + // silencestart feature returnFeatures[0].push_back(feature); } else { + // silenceend feature returnFeatures[1].push_back(feature); } } else { @@ -300,10 +302,12 @@ feature.hasDuration = true; feature.duration = featureStamp - m_lastChange; if (silent) { - // becoming silent, so this is a non-silent region + // non-silent regions feature + // (becoming silent, so this is a non-silent region) returnFeatures[1].push_back(feature); } else { - // becoming non-silent, so this is a silent region + // silent regions feature + // (becoming non-silent, so this is a silent region) returnFeatures[0].push_back(feature); } } @@ -331,21 +335,42 @@ { FeatureSet returnFeatures; - if (m_prevSilent) { - if (m_lastTimestamp > m_lastChange) { - Feature feature; - feature.hasTimestamp = true; +// std::cerr << "Silence::getRemainingFeatures: m_lastTimestamp = " << m_lastTimestamp << ", m_lastChange = " << m_lastChange << ", m_apiVersion = " << m_apiVersion << ", m_prevSilent = " << m_prevSilent << std::endl; + + if (m_lastTimestamp > m_lastChange) { + + Feature feature; + feature.hasTimestamp = true; + + if (m_apiVersion == 1) { + if (m_prevSilent) { + // silenceend feature + feature.timestamp = m_lastTimestamp; + returnFeatures[1].push_back(feature); + } + } else { + feature.timestamp = m_lastChange; feature.hasDuration = true; feature.duration = m_lastTimestamp - m_lastChange; if (m_prevSilent) { + // silent regions feature returnFeatures[0].push_back(feature); } else { + // non-silent regions feature returnFeatures[1].push_back(feature); } } + + if (!m_prevSilent) { + Feature silenceTestFeature; + silenceTestFeature.hasTimestamp = true; + silenceTestFeature.timestamp = m_lastTimestamp; + silenceTestFeature.values.push_back(0); + returnFeatures[2].push_back(silenceTestFeature); + } } - return FeatureSet(); + return returnFeatures; }