changeset 451:3c5252e7cefd

* Fix (kinda) display of fixed-sample-rate features with sample rate different from the input model's rate
author Chris Cannam
date Wed, 08 Oct 2008 15:27:31 +0000 (2008-10-08)
parents d8a2c28ba9f6
children 325112751f0e
files transform/FeatureExtractionModelTransformer.cpp
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/transform/FeatureExtractionModelTransformer.cpp	Tue Oct 07 12:59:55 2008 +0000
+++ b/transform/FeatureExtractionModelTransformer.cpp	Wed Oct 08 15:27:31 2008 +0000
@@ -203,7 +203,18 @@
 	break;
 
     case Vamp::Plugin::OutputDescriptor::FixedSampleRate:
-	modelRate = size_t(m_descriptor->sampleRate + 0.001);
+        //!!! SV doesn't actually support display of models that have
+        //!!! different underlying rates together -- so we always set
+        //!!! the model rate to be the input model's rate, and adjust
+        //!!! the resolution appropriately.  We can't properly display
+        //!!! data with a higher resolution than the base model at all
+//	modelRate = size_t(m_descriptor->sampleRate + 0.001);
+        if (m_descriptor->sampleRate > input->getSampleRate()) {
+            modelResolution = 1;
+        } else {
+            modelResolution = size_t(input->getSampleRate() /
+                                     m_descriptor->sampleRate);
+        }
 	break;
     }
 
@@ -598,7 +609,9 @@
 	if (feature.hasTimestamp) {
 	    //!!! warning: sampleRate may be non-integral
 	    frame = Vamp::RealTime::realTime2Frame(feature.timestamp,
-                                                   lrintf(m_descriptor->sampleRate));
+//!!! see comment above when setting up modelResolution and modelRate
+//                                                   lrintf(m_descriptor->sampleRate));
+                                                   inputRate);
 	} else {
 	    frame = m_output->getEndFrame();
 	}