Chris@498: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@498: Chris@498: /* Chris@498: Sonic Visualiser Chris@498: An audio file viewer and annotation editor. Chris@498: Chris@498: Sonic Annotator Chris@498: A utility for batch feature extraction from audio files. Chris@498: Chris@498: Mark Levy, Chris Sutton and Chris Cannam, Queen Mary, University of London. Chris@498: Copyright 2007-2008 QMUL. Chris@498: Chris@498: This program is free software; you can redistribute it and/or Chris@498: modify it under the terms of the GNU General Public License as Chris@498: published by the Free Software Foundation; either version 2 of the Chris@498: License, or (at your option) any later version. See the file Chris@498: COPYING included with this distribution for more information. Chris@498: */ Chris@498: Chris@1581: #ifndef SV_CSV_FEATURE_WRITER_H Chris@1581: #define SV_CSV_FEATURE_WRITER_H Chris@498: Chris@498: #include Chris@498: #include Chris@498: #include Chris@498: Chris@498: #include Chris@498: Chris@498: #include "FileFeatureWriter.h" Chris@498: Chris@498: using std::string; Chris@498: using std::map; Chris@498: Chris@498: class QTextStream; Chris@498: class QFile; Chris@498: Chris@498: class CSVFeatureWriter : public FileFeatureWriter Chris@498: { Chris@498: public: Chris@498: CSVFeatureWriter(); Chris@498: virtual ~CSVFeatureWriter(); Chris@498: Chris@1580: string getDescription() const override; Chris@998: Chris@1580: ParameterList getSupportedParameters() const override; Chris@1580: void setParameters(map ¶ms) override; Chris@498: Chris@1580: void write(QString trackid, Chris@498: const Transform &transform, Chris@498: const Vamp::Plugin::OutputDescriptor &output, Chris@498: const Vamp::Plugin::FeatureList &features, Chris@1580: std::string summaryType = "") override; Chris@498: Chris@1580: void finish() override; Chris@1001: Chris@1580: QString getWriterTag() const override { return "csv"; } Chris@498: Chris@498: private: Chris@498: QString m_separator; Chris@669: bool m_sampleTiming; Chris@1000: bool m_endTimes; Chris@1001: bool m_forceEnd; Chris@1002: bool m_omitFilename; Chris@514: QString m_prevPrintedTrackId; Chris@1001: Chris@1006: typedef pair DataId; // track id, transform Chris@1006: typedef map PendingFeatures; Chris@1006: typedef map PendingSummaryTypes; Chris@1001: PendingFeatures m_pending; Chris@1001: PendingSummaryTypes m_pendingSummaryTypes; Chris@1001: Chris@1006: void writeFeature(DataId, Chris@1001: QTextStream &, Chris@1001: const Vamp::Plugin::Feature &f, Chris@1001: const Vamp::Plugin::Feature *optionalNextFeature, Chris@1001: std::string summaryType); Chris@1142: Chris@1142: int m_digits; Chris@498: }; Chris@498: Chris@498: #endif