comparison plugins/Silence.cpp @ 24:eb246395f576

* Fix substantial amount of wrongness in getRemainingFeatures
author Chris Cannam <cannam@all-day-breakfast.com>
date Wed, 29 Oct 2008 12:38:06 +0000
parents a83125c623f0
children 2e979622bd93
comparison
equal deleted inserted replaced
23:1a7563c56d88 24:eb246395f576
288 288
289 feature.values.clear(); 289 feature.values.clear();
290 290
291 if (m_apiVersion == 1) { 291 if (m_apiVersion == 1) {
292 if (silent) { 292 if (silent) {
293 // silencestart feature
293 returnFeatures[0].push_back(feature); 294 returnFeatures[0].push_back(feature);
294 } else { 295 } else {
296 // silenceend feature
295 returnFeatures[1].push_back(feature); 297 returnFeatures[1].push_back(feature);
296 } 298 }
297 } else { 299 } else {
298 if (!m_first) { 300 if (!m_first) {
299 feature.timestamp = m_lastChange; 301 feature.timestamp = m_lastChange;
300 feature.hasDuration = true; 302 feature.hasDuration = true;
301 feature.duration = featureStamp - m_lastChange; 303 feature.duration = featureStamp - m_lastChange;
302 if (silent) { 304 if (silent) {
303 // becoming silent, so this is a non-silent region 305 // non-silent regions feature
306 // (becoming silent, so this is a non-silent region)
304 returnFeatures[1].push_back(feature); 307 returnFeatures[1].push_back(feature);
305 } else { 308 } else {
306 // becoming non-silent, so this is a silent region 309 // silent regions feature
310 // (becoming non-silent, so this is a silent region)
307 returnFeatures[0].push_back(feature); 311 returnFeatures[0].push_back(feature);
308 } 312 }
309 } 313 }
310 m_lastChange = featureStamp; 314 m_lastChange = featureStamp;
311 } 315 }
329 Silence::FeatureSet 333 Silence::FeatureSet
330 Silence::getRemainingFeatures() 334 Silence::getRemainingFeatures()
331 { 335 {
332 FeatureSet returnFeatures; 336 FeatureSet returnFeatures;
333 337
334 if (m_prevSilent) { 338 // std::cerr << "Silence::getRemainingFeatures: m_lastTimestamp = " << m_lastTimestamp << ", m_lastChange = " << m_lastChange << ", m_apiVersion = " << m_apiVersion << ", m_prevSilent = " << m_prevSilent << std::endl;
335 if (m_lastTimestamp > m_lastChange) { 339
336 Feature feature; 340 if (m_lastTimestamp > m_lastChange) {
337 feature.hasTimestamp = true; 341
342 Feature feature;
343 feature.hasTimestamp = true;
344
345 if (m_apiVersion == 1) {
346 if (m_prevSilent) {
347 // silenceend feature
348 feature.timestamp = m_lastTimestamp;
349 returnFeatures[1].push_back(feature);
350 }
351 } else {
352
338 feature.timestamp = m_lastChange; 353 feature.timestamp = m_lastChange;
339 feature.hasDuration = true; 354 feature.hasDuration = true;
340 feature.duration = m_lastTimestamp - m_lastChange; 355 feature.duration = m_lastTimestamp - m_lastChange;
341 if (m_prevSilent) { 356 if (m_prevSilent) {
357 // silent regions feature
342 returnFeatures[0].push_back(feature); 358 returnFeatures[0].push_back(feature);
343 } else { 359 } else {
360 // non-silent regions feature
344 returnFeatures[1].push_back(feature); 361 returnFeatures[1].push_back(feature);
345 } 362 }
346 } 363 }
347 } 364
348 365 if (!m_prevSilent) {
349 return FeatureSet(); 366 Feature silenceTestFeature;
350 } 367 silenceTestFeature.hasTimestamp = true;
351 368 silenceTestFeature.timestamp = m_lastTimestamp;
369 silenceTestFeature.values.push_back(0);
370 returnFeatures[2].push_back(silenceTestFeature);
371 }
372 }
373
374 return returnFeatures;
375 }
376