annotate data/model/DenseTimeValueModel.h @ 299:576be0d0d218

* Merge transform directory from sv-match-alignment branch (the previous comment included notes for this stuff, but I missed it in the actual merge) * Fix crash when a transform fails to create an output model and the thread that created the transform then deletes its input model thinking it's no longer needed, even though the transform run thread is still using it -- fix is to wait() on the transform before returning the null output model
author Chris Cannam
date Fri, 28 Sep 2007 16:15:06 +0000
parents 0ed2b2e26b44
children 5877d68815c7
rev   line source
Chris@147 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@147 2
Chris@147 3 /*
Chris@147 4 Sonic Visualiser
Chris@147 5 An audio file viewer and annotation editor.
Chris@147 6 Centre for Digital Music, Queen Mary, University of London.
Chris@147 7 This file copyright 2006 Chris Cannam.
Chris@147 8
Chris@147 9 This program is free software; you can redistribute it and/or
Chris@147 10 modify it under the terms of the GNU General Public License as
Chris@147 11 published by the Free Software Foundation; either version 2 of the
Chris@147 12 License, or (at your option) any later version. See the file
Chris@147 13 COPYING included with this distribution for more information.
Chris@147 14 */
Chris@147 15
Chris@147 16 #ifndef _DENSE_TIME_VALUE_MODEL_H_
Chris@147 17 #define _DENSE_TIME_VALUE_MODEL_H_
Chris@147 18
Chris@147 19 #include <QObject>
Chris@147 20
Chris@150 21 #include "Model.h"
Chris@147 22
Chris@147 23 /**
Chris@147 24 * Base class for models containing dense two-dimensional data (value
Chris@147 25 * against time). For example, audio waveform data.
Chris@147 26 */
Chris@147 27
Chris@179 28 class DenseTimeValueModel : public Model
Chris@147 29 {
Chris@147 30 Q_OBJECT
Chris@147 31
Chris@147 32 public:
Chris@147 33 DenseTimeValueModel();
Chris@147 34
Chris@147 35 /**
Chris@147 36 * Return the minimum possible value found in this model type.
Chris@147 37 * (That is, the minimum that would be valid, not the minimum
Chris@147 38 * actually found in a particular model).
Chris@147 39 */
Chris@147 40 virtual float getValueMinimum() const = 0;
Chris@147 41
Chris@147 42 /**
Chris@147 43 * Return the minimum possible value found in this model type.
Chris@147 44 * (That is, the minimum that would be valid, not the minimum
Chris@147 45 * actually found in a particular model).
Chris@147 46 */
Chris@147 47 virtual float getValueMaximum() const = 0;
Chris@147 48
Chris@147 49 /**
Chris@147 50 * Return the number of distinct channels for this model.
Chris@147 51 */
Chris@147 52 virtual size_t getChannelCount() const = 0;
Chris@147 53
Chris@147 54 /**
Chris@147 55 * Get the specified set of samples from the given channel of the
Chris@147 56 * model in single-precision floating-point format. Return the
Chris@147 57 * number of samples actually retrieved.
Chris@147 58 * If the channel is given as -1, mix all available channels and
Chris@147 59 * return the result.
Chris@147 60 */
Chris@147 61 virtual size_t getValues(int channel, size_t start, size_t end,
Chris@147 62 float *buffer) const = 0;
Chris@147 63
Chris@147 64 /**
Chris@147 65 * Get the specified set of samples from the given channel of the
Chris@147 66 * model in double-precision floating-point format. Return the
Chris@147 67 * number of samples actually retrieved.
Chris@147 68 * If the channel is given as -1, mix all available channels and
Chris@147 69 * return the result.
Chris@147 70 */
Chris@147 71 virtual size_t getValues(int channel, size_t start, size_t end,
Chris@147 72 double *buffer) const = 0;
Chris@147 73 };
Chris@147 74
Chris@147 75 #endif