gyorgyf@60: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ gyorgyf@60: gyorgyf@60: /* gyorgyf@60: Sonic Annotator gyorgyf@60: A utility for batch feature extraction from audio files. gyorgyf@60: Mark Levy, Chris Sutton and Chris Cannam, Queen Mary, University of London. gyorgyf@60: Copyright 2007-2008 QMUL. gyorgyf@60: gyorgyf@60: This program is free software; you can redistribute it and/or gyorgyf@60: modify it under the terms of the GNU General Public License as gyorgyf@60: published by the Free Software Foundation; either version 2 of the gyorgyf@60: License, or (at your option) any later version. See the file gyorgyf@60: COPYING included with this distribution for more information. gyorgyf@60: */ gyorgyf@60: gyorgyf@60: #ifndef _BINARY_FEATURE_WRITER_H_ gyorgyf@60: #define _BINARY_FEATURE_WRITER_H_ gyorgyf@60: gyorgyf@60: #include gyorgyf@60: #include gyorgyf@60: #include gyorgyf@60: gyorgyf@60: using std::string; gyorgyf@60: using std::map; gyorgyf@60: gyorgyf@60: #include "transform/FeatureWriter.h" gyorgyf@60: gyorgyf@60: class BinaryFeatureWriter : public FeatureWriter gyorgyf@60: { gyorgyf@60: public: gyorgyf@60: BinaryFeatureWriter(); gyorgyf@60: virtual ~BinaryFeatureWriter(); gyorgyf@60: gyorgyf@60: virtual ParameterList getSupportedParameters() const; gyorgyf@60: virtual void setParameters(map ¶ms); gyorgyf@60: gyorgyf@60: virtual void setOutputFile(const string &); gyorgyf@60: gyorgyf@60: virtual void write(QString trackid, gyorgyf@60: const Transform &transform, gyorgyf@60: const Vamp::Plugin::OutputDescriptor &output, gyorgyf@60: const Vamp::Plugin::FeatureList &features, gyorgyf@60: std::string summaryType = ""); gyorgyf@60: gyorgyf@60: virtual void finish(); gyorgyf@60: gyorgyf@60: virtual QString getWriterTag() const { return "binary"; } gyorgyf@60: gyorgyf@60: private: gyorgyf@60: // Parameters gyorgyf@60: string outputFile; gyorgyf@60: gyorgyf@60: // Parameter names (class vars) gyorgyf@60: static string outputFileParam; gyorgyf@60: gyorgyf@60: struct OutputStream; gyorgyf@60: /* gyorgyf@60: struct BinaryFeatureWriter::TrackStream gyorgyf@60: { gyorgyf@60: QString trackid; gyorgyf@60: ofstream* ofs; gyorgyf@60: }; gyorgyf@60: */ gyorgyf@60: typedef std::map ParameterMap; gyorgyf@60: gyorgyf@60: OutputStream *binary; gyorgyf@60: gyorgyf@60: bool openBinaryFile(); gyorgyf@69: long feature_count; // number of features per output gyorgyf@69: long data_size_pos; // temporary storage for file positioning gyorgyf@69: long output_binCount; // element count of each feature gyorgyf@69: long element_count; // total number of elements (e.g. float numbers) written per output gyorgyf@60: }; gyorgyf@60: gyorgyf@60: #endif