view runner/BinaryFeatureWriter.h @ 71:9600f5b8076f tip

latest version before copying fextractor
author gyorgyf
date Sun, 22 Sep 2013 21:55:40 +0200
parents 0ef80ae6493c
children
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*
    Sonic Annotator
    A utility for batch feature extraction from audio files.
    Mark Levy, Chris Sutton and Chris Cannam, Queen Mary, University of London.
    Copyright 2007-2008 QMUL.

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of the
    License, or (at your option) any later version.  See the file
    COPYING included with this distribution for more information.
*/

#ifndef _BINARY_FEATURE_WRITER_H_
#define _BINARY_FEATURE_WRITER_H_

#include <string>
#include <map>
#include <fstream>

using std::string;
using std::map;

#include "transform/FeatureWriter.h"

class BinaryFeatureWriter : public FeatureWriter
{
public:
    BinaryFeatureWriter();
    virtual ~BinaryFeatureWriter();

    virtual ParameterList getSupportedParameters() const;
    virtual void setParameters(map<string, string> &params);

    virtual void setOutputFile(const string &);

    virtual void write(QString trackid,
                       const Transform &transform,
                       const Vamp::Plugin::OutputDescriptor &output,
                       const Vamp::Plugin::FeatureList &features,
                       std::string summaryType = "");
    
    virtual void finish();

    virtual QString getWriterTag() const { return "binary"; }

private:
	// Parameters
	string outputFile;
	
	// Parameter names (class vars)
    static string outputFileParam;
    
	struct OutputStream;
	/*
	struct BinaryFeatureWriter::TrackStream
	{
	    QString trackid;
	    ofstream* ofs;
	};
	*/
	typedef std::map<QString, float> ParameterMap;
	
	OutputStream *binary;
    
	bool openBinaryFile();
	long feature_count;      // number of features per output
	long data_size_pos;      // temporary storage for file positioning
	long output_binCount;    // element count of each feature
	long element_count;      // total number of elements (e.g. float numbers) written per output
};

#endif