annotate rdf/RDFFeatureWriter.h @ 498:fdf5930b7ccc

* Bring FeatureWriter and RDFFeatureWriter into the fold (from Runner) so that we can use them to export features from SV as well
author Chris Cannam
date Fri, 28 Nov 2008 13:47:11 +0000
parents
children 3376dc26dece
rev   line source
Chris@498 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@498 2
Chris@498 3 /*
Chris@498 4 Sonic Visualiser
Chris@498 5 An audio file viewer and annotation editor.
Chris@498 6
Chris@498 7 Sonic Annotator
Chris@498 8 A utility for batch feature extraction from audio files.
Chris@498 9
Chris@498 10 Mark Levy, Chris Sutton and Chris Cannam, Queen Mary, University of London.
Chris@498 11 Copyright 2007-2008 QMUL.
Chris@498 12
Chris@498 13 This program is free software; you can redistribute it and/or
Chris@498 14 modify it under the terms of the GNU General Public License as
Chris@498 15 published by the Free Software Foundation; either version 2 of the
Chris@498 16 License, or (at your option) any later version. See the file
Chris@498 17 COPYING included with this distribution for more information.
Chris@498 18 */
Chris@498 19
Chris@498 20 #ifndef _RDF_FEATURE_WRITER_H_
Chris@498 21 #define _RDF_FEATURE_WRITER_H_
Chris@498 22
Chris@498 23 #include <string>
Chris@498 24 #include <map>
Chris@498 25 #include <set>
Chris@498 26
Chris@498 27 #include <QString>
Chris@498 28
Chris@498 29 #include "transform/FileFeatureWriter.h"
Chris@498 30
Chris@498 31 #include "PluginRDFDescription.h"
Chris@498 32
Chris@498 33 using std::string;
Chris@498 34 using std::map;
Chris@498 35 using std::set;
Chris@498 36 using std::pair;
Chris@498 37
Chris@498 38 class QTextStream;
Chris@498 39 class QFile;
Chris@498 40
Chris@498 41 class RDFFeatureWriter : public FileFeatureWriter
Chris@498 42 {
Chris@498 43 public:
Chris@498 44 RDFFeatureWriter();
Chris@498 45 virtual ~RDFFeatureWriter();
Chris@498 46
Chris@498 47 virtual ParameterList getSupportedParameters() const;
Chris@498 48 virtual void setParameters(map<string, string> &params);
Chris@498 49
Chris@498 50 virtual void write(QString trackid,
Chris@498 51 const Transform &transform,
Chris@498 52 const Vamp::Plugin::OutputDescriptor &output,
Chris@498 53 const Vamp::Plugin::FeatureList &features,
Chris@498 54 std::string summaryType = "");
Chris@498 55
Chris@498 56 virtual void finish();
Chris@498 57
Chris@498 58 private:
Chris@498 59 typedef map<QString, PluginRDFDescription> RDFDescriptionMap; // by plugin id
Chris@498 60 RDFDescriptionMap m_rdfDescriptions;
Chris@498 61
Chris@498 62 void writePrefixes(QTextStream *);
Chris@498 63 void writeSignalDescription(QTextStream *, QString);
Chris@498 64 void writeLocalFeatureTypes(QTextStream *,
Chris@498 65 const Transform &,
Chris@498 66 const Vamp::Plugin::OutputDescriptor &,
Chris@498 67 PluginRDFDescription &);
Chris@498 68
Chris@498 69 void writeSparseRDF(QTextStream *stream,
Chris@498 70 const Transform &transform,
Chris@498 71 const Vamp::Plugin::OutputDescriptor &output,
Chris@498 72 const Vamp::Plugin::FeatureList &features,
Chris@498 73 PluginRDFDescription &desc,
Chris@498 74 QString timelineURI);
Chris@498 75
Chris@498 76 void writeDenseRDF(QTextStream *stream,
Chris@498 77 const Transform &transform,
Chris@498 78 const Vamp::Plugin::OutputDescriptor &output,
Chris@498 79 const Vamp::Plugin::FeatureList &features,
Chris@498 80 PluginRDFDescription &desc,
Chris@498 81 QString signalURI,
Chris@498 82 QString timelineURI);
Chris@498 83
Chris@498 84 set<QString> m_startedTrackIds;
Chris@498 85
Chris@498 86 map<QTextStream *, set<Transform> > m_startedStreamTransforms;
Chris@498 87
Chris@498 88 map<QString, QString> m_trackTimelineURIs;
Chris@498 89 map<QString, QString> m_trackSignalURIs;
Chris@498 90
Chris@498 91 map<Transform, QString> m_transformURIs;
Chris@498 92 map<Transform, QString> m_syntheticEventTypeURIs;
Chris@498 93 map<Transform, QString> m_syntheticSignalTypeURIs;
Chris@498 94
Chris@498 95 typedef pair<QString, Transform> StringTransformPair;
Chris@498 96 typedef pair<QTextStream *, QString> StreamBuffer;
Chris@498 97 map<StringTransformPair, StreamBuffer> m_openDenseFeatures; // signal URI + transform -> stream + text
Chris@498 98 QString m_suri;
Chris@498 99
Chris@498 100 bool m_plain;
Chris@498 101
Chris@498 102 uint64_t m_count;
Chris@498 103 };
Chris@498 104
Chris@498 105 #endif