Mercurial > hg > svcore
view transform/TransformDescription.h @ 537:3cc4b7cd2aa5
* Merge from one-fftdataserver-per-fftmodel branch. This bit of
reworking (which is not described very accurately by the title of
the branch) turns the MatrixFile object into something that either
reads or writes, but not both, and separates the FFT file cache
reader and writer implementations separately. This allows the
FFT data server to have a single thread owning writers and one reader
per "customer" thread, and for all locking to be vastly simplified
and concentrated in the data server alone (because none of the
classes it makes use of is used in more than one thread at a time).
The result is faster and more trustworthy code.
author | Chris Cannam |
---|---|
date | Tue, 27 Jan 2009 13:25:10 +0000 |
parents | c45e6c6722e0 |
children | 45e95de8b11d |
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ /* Sonic Visualiser An audio file viewer and annotation editor. Centre for Digital Music, Queen Mary, University of London. This file copyright 2006-2007 Chris Cannam and 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 _TRANSFORM_DESCRIPTION_H_ #define _TRANSFORM_DESCRIPTION_H_ #include "Transform.h" #include <QString> #include <vector> /** * Metadata associated with a transform. * * The transform ID is the same as that used in the Transform class. * It is intended to be computer-referenceable and unique within the * application. * * The name is intended to be human readable. In principle it doesn't * have to be unique, but the factory that creates these objects * should add suffixes to ensure that it is, all the same (just to * avoid user confusion). * * The friendly name is a shorter version of the name. * * The type is also intended to be user-readable, for use in menus. * * To obtain these objects, use * TransformFactory::getAllTransformDescriptions and * TransformFactory::getTransformDescription. */ struct TransformDescription { enum Type { Analysis, // e.g. vamp plugin output Effects, // e.g. ladspa plugin with audio in and out EffectsData, // e.g. control output of ladspa plugin Generator, // e.g. audio out of ladspa plugin with no audio in UnknownType }; TransformDescription() { } TransformDescription(Type _type, QString _category, TransformId _identifier, QString _name, QString _friendlyName, QString _description, QString _longDescription, QString _maker, QString _units, bool _configurable) : type(_type), category(_category), identifier(_identifier), name(_name), friendlyName(_friendlyName), description(_description), longDescription(_longDescription), maker(_maker), units(_units), configurable(_configurable) { } Type type; QString category; // e.g. time > onsets TransformId identifier; // e.g. vamp:vamp-aubio:aubioonset QString name; // plugin's name if 1 output, else "name: output" QString friendlyName; // short text for layer name QString description; // sentence describing transform QString longDescription; // description "using" plugin name "by" maker QString maker; QString infoUrl; QString units; bool configurable; bool operator<(const TransformDescription &od) const { return (name < od.name) || (name == od.name && identifier < od.identifier); }; }; typedef std::vector<TransformDescription> TransformList; #endif