Mercurial > hg > sonic-annotator
diff runner/DefaultFeatureWriter.cpp @ 1:92911f967a16
* some reorganisation
author | Chris Cannam |
---|---|
date | Thu, 11 Dec 2008 10:26:12 +0000 |
parents | DefaultFeatureWriter.cpp@581b1b150a4d |
children | ee56e3e9eeb5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/runner/DefaultFeatureWriter.cpp Thu Dec 11 10:26:12 2008 +0000 @@ -0,0 +1,77 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + Sonic Annotator + A utility for batch feature extraction from audio files. + Mark Levy, Chris Sutton and Chris Cannam, Queen Mary, University of London. + Copyright 2007-2008 QMUL. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#include <iostream> +#include <map> + +using namespace std; + +#include "DefaultFeatureWriter.h" + +void DefaultFeatureWriter::write(QString trackid, + const Transform &transform, + const Vamp::Plugin::OutputDescriptor& output, + const Vamp::Plugin::FeatureList& featureList, + std::string summaryType) +{ + // generic XML output + + /* + + <feature> + <name>output.name</name> + <timestamp>feature.timestamp</timestamp> + <values>output.binName[0]:feature.value[0]...</values> + <label>feature.label</label> + </feature> + + */ + + for (int i = 0; i < featureList.size(); ++i) + { + if (summaryType == "") { + cout << "<feature>" << endl; + } else { + cout << "<summary type=\"" << summaryType << "\">" << endl; + } + cout << "\t<name>" << output.name << "</name>" << endl; + if (featureList[i].hasTimestamp) { + cout << "\t<timestamp>" << featureList[i].timestamp << "</timestamp>" << endl; + } + if (featureList[i].hasDuration) { + cout << "\t<duration>" << featureList[i].duration << "</duration>" << endl; + } + if (featureList[i].values.size() > 0) + { + cout << "\t<values>"; + for (int j = 0; j < featureList[i].values.size(); ++j) + { + if (j > 0) + cout << " "; + if (output.binNames.size() > 0) + cout << output.binNames[j] << ":"; + cout << featureList[i].values[j]; + } + cout << "</values>" << endl; + } + if (featureList[i].label.length() > 0) + cout << "\t<label>" << featureList[i].label << "</label>" << endl; + if (summaryType == "") { + cout << "</feature>" << endl; + } else { + cout << "</summary>" << endl; + } + } +}