Mercurial > hg > vamp-plugin-sdk
diff src/vamp-hostsdk/PluginBufferingAdapter.cpp @ 419:55de53d7c777
Merge
author | Chris Cannam |
---|---|
date | Tue, 01 Mar 2016 12:21:23 +0000 |
parents | 1522e2f6d700 |
children | 35fa4733bc5d |
line wrap: on
line diff
--- a/src/vamp-hostsdk/PluginBufferingAdapter.cpp Tue Mar 01 12:10:29 2016 +0000 +++ b/src/vamp-hostsdk/PluginBufferingAdapter.cpp Tue Mar 01 12:21:23 2016 +0000 @@ -41,6 +41,10 @@ #include <vamp-hostsdk/PluginBufferingAdapter.h> #include <vamp-hostsdk/PluginInputDomainAdapter.h> +#include <iostream> +using std::cerr; +using std::endl; + using std::vector; using std::map; @@ -512,13 +516,13 @@ case OutputDescriptor::OneSamplePerStep: outs[i].sampleType = OutputDescriptor::FixedSampleRate; - outs[i].sampleRate = (1.f / m_inputSampleRate) * m_stepSize; + outs[i].sampleRate = m_inputSampleRate / m_stepSize; m_rewriteOutputTimes[i] = true; break; case OutputDescriptor::FixedSampleRate: if (outs[i].sampleRate == 0.f) { - outs[i].sampleRate = (1.f / m_inputSampleRate) * m_stepSize; + outs[i].sampleRate = m_inputSampleRate / m_stepSize; } // We actually only need to rewrite output times for // features that don't have timestamps already, but we @@ -615,16 +619,25 @@ PluginBufferingAdapter::Impl::adjustFixedRateFeatureTime(int outputNo, Feature &feature) { +// cerr << "adjustFixedRateFeatureTime: from " << feature.timestamp; + + double rate = m_outputs[outputNo].sampleRate; + if (rate == 0.0) { + rate = m_inputSampleRate / m_stepSize; + } + if (feature.hasTimestamp) { double secs = feature.timestamp.sec; secs += feature.timestamp.nsec / 1e9; - m_fixedRateFeatureNos[outputNo] = - int(secs * double(m_outputs[outputNo].sampleRate) + 0.5); + m_fixedRateFeatureNos[outputNo] = int(secs * rate + 0.5); +// cerr << " [secs = " << secs << ", no = " << m_fixedRateFeatureNos[outputNo] << "]"; } feature.timestamp = RealTime::fromSeconds - (m_fixedRateFeatureNos[outputNo] / double(m_outputs[outputNo].sampleRate)); + (m_fixedRateFeatureNos[outputNo] / rate); +// cerr << " to " << feature.timestamp << " (rate = " << rate << ", hasTimestamp = " << feature.hasTimestamp << ")" << endl; + feature.hasTimestamp = true; m_fixedRateFeatureNos[outputNo] = m_fixedRateFeatureNos[outputNo] + 1;