annotate data/fileio/MatchFileReader.h @ 1008:d9e0e59a1581

When using an aggregate model to pass data to a transform, zero-pad the shorter input to the duration of the longer rather than truncating the longer. (This is better behaviour for e.g. MATCH, and in any case the code was previously truncating incorrectly and ending up with garbage data at the end.)
author Chris Cannam
date Fri, 14 Nov 2014 13:51:33 +0000
parents 06f13a3b9e9e
children
rev   line source
Chris@297 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@297 2
Chris@297 3 /*
Chris@297 4 Sonic Visualiser
Chris@297 5 An audio file viewer and annotation editor.
Chris@297 6 Centre for Digital Music, Queen Mary, University of London.
Chris@297 7 This file copyright 2007 QMUL.
Chris@297 8
Chris@297 9 This program is free software; you can redistribute it and/or
Chris@297 10 modify it under the terms of the GNU General Public License as
Chris@297 11 published by the Free Software Foundation; either version 2 of the
Chris@297 12 License, or (at your option) any later version. See the file
Chris@297 13 COPYING included with this distribution for more information.
Chris@297 14 */
Chris@297 15
Chris@297 16 #ifndef _MATCH_FILE_READER_H_
Chris@297 17 #define _MATCH_FILE_READER_H_
Chris@297 18
Chris@297 19 #include <vector>
Chris@297 20 #include <QString>
Chris@687 21 #include "base/Debug.h"
Chris@297 22
Chris@297 23 class QFile;
Chris@297 24 class Model;
Chris@297 25
Chris@297 26 class Alignment
Chris@297 27 {
Chris@297 28 public:
Chris@297 29 Alignment();
Chris@297 30
Chris@297 31 typedef std::vector<int> FrameArray;
Chris@297 32
Chris@297 33 double thisHopTime;
Chris@297 34 double refHopTime;
Chris@297 35
Chris@297 36 FrameArray thisIndex;
Chris@297 37 FrameArray refIndex;
Chris@297 38
Chris@297 39 double fromReference(double) const;
Chris@297 40 double toReference(double) const;
Chris@297 41
Chris@297 42 //!!! blah
Chris@297 43 void setMainModel(Model *m) { m_mainModel = m; }
Chris@297 44 bool isMainModel(Model *m) const { return m == m_mainModel; }
Chris@297 45
Chris@297 46 int search(const FrameArray &arr, int val) const;
Chris@297 47
Chris@297 48 protected:
Chris@297 49 Model *m_mainModel;
Chris@297 50 };
Chris@297 51
Chris@297 52 class MatchFileReader
Chris@297 53 {
Chris@297 54 public:
Chris@297 55 MatchFileReader(QString path);
Chris@297 56 virtual ~MatchFileReader();
Chris@297 57
Chris@297 58 virtual bool isOK() const;
Chris@297 59 virtual QString getError() const;
Chris@297 60 virtual Alignment load() const;
Chris@297 61
Chris@297 62 protected:
Chris@297 63 QFile *m_file;
Chris@297 64 QString m_error;
Chris@297 65 };
Chris@297 66
Chris@297 67 #endif
Chris@297 68