annotate runner/DefaultFeatureWriter.cpp @ 143:ad425b9096bd

Merge from branch 'midi'
author Chris Cannam
date Mon, 13 Oct 2014 13:53:09 +0100
parents ee56e3e9eeb5
children b3d73c08b6ce
rev   line source
Chris@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@0 4 Sonic Annotator
Chris@0 5 A utility for batch feature extraction from audio files.
Chris@0 6 Mark Levy, Chris Sutton and Chris Cannam, Queen Mary, University of London.
Chris@0 7 Copyright 2007-2008 QMUL.
Chris@0 8
Chris@0 9 This program is free software; you can redistribute it and/or
Chris@0 10 modify it under the terms of the GNU General Public License as
Chris@0 11 published by the Free Software Foundation; either version 2 of the
Chris@0 12 License, or (at your option) any later version. See the file
Chris@0 13 COPYING included with this distribution for more information.
Chris@0 14 */
Chris@0 15
Chris@0 16 #include <iostream>
Chris@0 17 #include <map>
Chris@0 18
Chris@0 19 using namespace std;
Chris@0 20
Chris@0 21 #include "DefaultFeatureWriter.h"
Chris@0 22
Chris@138 23 void DefaultFeatureWriter::write(QString,
Chris@138 24 const Transform &,
Chris@0 25 const Vamp::Plugin::OutputDescriptor& output,
Chris@0 26 const Vamp::Plugin::FeatureList& featureList,
Chris@0 27 std::string summaryType)
Chris@0 28 {
Chris@0 29 // generic XML output
Chris@0 30
Chris@0 31 /*
Chris@0 32
Chris@0 33 <feature>
Chris@0 34 <name>output.name</name>
Chris@0 35 <timestamp>feature.timestamp</timestamp>
Chris@0 36 <values>output.binName[0]:feature.value[0]...</values>
Chris@0 37 <label>feature.label</label>
Chris@0 38 </feature>
Chris@0 39
Chris@0 40 */
Chris@0 41
Chris@138 42 for (int i = 0; i < (int)featureList.size(); ++i) {
Chris@138 43
Chris@0 44 if (summaryType == "") {
Chris@0 45 cout << "<feature>" << endl;
Chris@0 46 } else {
Chris@0 47 cout << "<summary type=\"" << summaryType << "\">" << endl;
Chris@0 48 }
Chris@0 49 cout << "\t<name>" << output.name << "</name>" << endl;
Chris@0 50 if (featureList[i].hasTimestamp) {
Chris@0 51 cout << "\t<timestamp>" << featureList[i].timestamp << "</timestamp>" << endl;
Chris@0 52 }
Chris@0 53 if (featureList[i].hasDuration) {
Chris@0 54 cout << "\t<duration>" << featureList[i].duration << "</duration>" << endl;
Chris@0 55 }
Chris@0 56 if (featureList[i].values.size() > 0)
Chris@0 57 {
Chris@0 58 cout << "\t<values>";
Chris@138 59 for (int j = 0; j < (int)featureList[i].values.size(); ++j) {
Chris@0 60 if (j > 0)
Chris@0 61 cout << " ";
Chris@0 62 if (output.binNames.size() > 0)
Chris@0 63 cout << output.binNames[j] << ":";
Chris@0 64 cout << featureList[i].values[j];
Chris@0 65 }
Chris@0 66 cout << "</values>" << endl;
Chris@0 67 }
Chris@0 68 if (featureList[i].label.length() > 0)
Chris@0 69 cout << "\t<label>" << featureList[i].label << "</label>" << endl;
Chris@0 70 if (summaryType == "") {
Chris@0 71 cout << "</feature>" << endl;
Chris@0 72 } else {
Chris@0 73 cout << "</summary>" << endl;
Chris@0 74 }
Chris@0 75 }
Chris@0 76 }