Mercurial > hg > sonic-annotator
diff runner/FeatureExtractionManager.cpp @ 8:f98b58fb294f
* Set block & step sizes if not properly specified
author | Chris Cannam |
---|---|
date | Fri, 12 Dec 2008 14:29:42 +0000 |
parents | b6431f86f307 |
children | 12f250173bf2 |
line wrap: on
line diff
--- a/runner/FeatureExtractionManager.cpp Thu Dec 11 15:19:07 2008 +0000 +++ b/runner/FeatureExtractionManager.cpp Fri Dec 12 14:29:42 2008 +0000 @@ -19,6 +19,7 @@ #include <vamp-hostsdk/PluginBufferingAdapter.h> #include <vamp-hostsdk/PluginInputDomainAdapter.h> #include <vamp-hostsdk/PluginSummarisingAdapter.h> +#include <vamp-hostsdk/PluginWrapper.h> #include <vamp-hostsdk/PluginLoader.h> #include <iostream> @@ -32,6 +33,7 @@ using Vamp::HostExt::PluginBufferingAdapter; using Vamp::HostExt::PluginInputDomainAdapter; using Vamp::HostExt::PluginSummarisingAdapter; +using Vamp::HostExt::PluginWrapper; #include "data/fileio/FileSource.h" #include "data/fileio/AudioFileReader.h" @@ -255,6 +257,29 @@ cerr << "NOTE: Loaded and initialised plugin " << plugin << " for transform \"" << transform.getIdentifier().toStdString() << "\"" << endl; + + } else { + + if (transform.getStepSize() == 0 || transform.getBlockSize() == 0) { + + PluginWrapper *pw = dynamic_cast<PluginWrapper *>(plugin); + if (pw) { + PluginBufferingAdapter *pba = + pw->getWrapper<PluginBufferingAdapter>(); + if (pba) { + size_t actualStepSize = 0; + size_t actualBlockSize = 0; + pba->getActualStepAndBlockSizes(actualStepSize, + actualBlockSize); + if (transform.getStepSize() == 0) { + transform.setStepSize(actualStepSize); + } + if (transform.getBlockSize() == 0) { + transform.setBlockSize(actualBlockSize); + } + } + } + } } if (transform.getOutput() == "") {