Mercurial > hg > vamp-aubio-plugins
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 |