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