svcore
1.9
|
00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ 00002 00003 /* 00004 Sonic Visualiser 00005 An audio file viewer and annotation editor. 00006 00007 Sonic Annotator 00008 A utility for batch feature extraction from audio files. 00009 00010 Mark Levy, Chris Sutton and Chris Cannam, Queen Mary, University of London. 00011 Copyright 2007-2008 QMUL. 00012 00013 This program is free software; you can redistribute it and/or 00014 modify it under the terms of the GNU General Public License as 00015 published by the Free Software Foundation; either version 2 of the 00016 License, or (at your option) any later version. See the file 00017 COPYING included with this distribution for more information. 00018 */ 00019 00020 #ifndef _RDF_FEATURE_WRITER_H_ 00021 #define _RDF_FEATURE_WRITER_H_ 00022 00023 #include <string> 00024 #include <map> 00025 #include <set> 00026 00027 #include <QString> 00028 00029 #include "transform/FileFeatureWriter.h" 00030 00031 #include "PluginRDFDescription.h" 00032 00033 using std::string; 00034 using std::map; 00035 using std::set; 00036 using std::pair; 00037 00038 class QTextStream; 00039 class QFile; 00040 00041 class RDFFeatureWriter : public FileFeatureWriter 00042 { 00043 public: 00044 RDFFeatureWriter(); 00045 virtual ~RDFFeatureWriter(); 00046 00047 virtual ParameterList getSupportedParameters() const; 00048 virtual void setParameters(map<string, string> ¶ms); 00049 00050 virtual void setTrackMetadata(QString trackid, TrackMetadata metadata); 00051 00052 virtual void write(QString trackid, 00053 const Transform &transform, 00054 const Vamp::Plugin::OutputDescriptor &output, 00055 const Vamp::Plugin::FeatureList &features, 00056 std::string summaryType = ""); 00057 00058 virtual void setFixedEventTypeURI(QString uri); // something of a hack 00059 00060 virtual void finish(); 00061 00062 virtual QString getWriterTag() const { return "rdf"; } 00063 00064 private: 00065 typedef map<QString, PluginRDFDescription> RDFDescriptionMap; // by plugin id 00066 RDFDescriptionMap m_rdfDescriptions; 00067 00068 typedef map<QString, TrackMetadata> TrackMetadataMap; 00069 TrackMetadataMap m_metadata; 00070 00071 QString m_fixedEventTypeURI; 00072 00073 virtual void reviewFileForAppending(QString filename); 00074 00075 void writePrefixes(QTextStream *); 00076 void writeSignalDescription(QTextStream *, QString); 00077 void writeLocalFeatureTypes(QTextStream *, 00078 const Transform &, 00079 const Vamp::Plugin::OutputDescriptor &, 00080 PluginRDFDescription &, 00081 std::string summaryType); 00082 00083 void writeSparseRDF(QTextStream *stream, 00084 const Transform &transform, 00085 const Vamp::Plugin::OutputDescriptor &output, 00086 const Vamp::Plugin::FeatureList &features, 00087 PluginRDFDescription &desc, 00088 QString timelineURI); 00089 00090 void writeTrackLevelRDF(QTextStream *stream, 00091 const Transform &transform, 00092 const Vamp::Plugin::OutputDescriptor &output, 00093 const Vamp::Plugin::FeatureList &features, 00094 PluginRDFDescription &desc, 00095 QString signalURI); 00096 00097 void writeDenseRDF(QTextStream *stream, 00098 const Transform &transform, 00099 const Vamp::Plugin::OutputDescriptor &output, 00100 const Vamp::Plugin::FeatureList &features, 00101 PluginRDFDescription &desc, 00102 QString signalURI, 00103 QString timelineURI); 00104 00105 set<QString> m_startedTrackIds; 00106 00107 map<QTextStream *, set<Transform> > m_startedStreamTransforms; 00108 00109 map<QString, QString> m_trackTrackURIs; 00110 map<QString, QString> m_trackTimelineURIs; 00111 map<QString, QString> m_trackSignalURIs; 00112 00113 map<Transform, QString> m_transformURIs; 00114 map<Transform, QString> m_syntheticEventTypeURIs; 00115 map<Transform, QString> m_syntheticSignalTypeURIs; 00116 00117 typedef pair<QString, Transform> StringTransformPair; 00118 typedef pair<QTextStream *, QString> StreamBuffer; 00119 map<StringTransformPair, StreamBuffer> m_openDenseFeatures; // signal URI + transform -> stream + text 00120 QString m_userAudioFileUri; 00121 QString m_userTrackUri; 00122 QString m_userMakerUri; 00123 00124 bool m_plain; 00125 00126 bool m_network; 00127 bool m_networkRetrieved; 00128 00129 long m_count; 00130 }; 00131 00132 #endif