annotate data/fileio/AudioFileReader.h @ 295:a2dc34ce146a

* Window should be centred on its nominal time. I'm not sure what the reasoning was behind the previous formulations of these two lines.
author Chris Cannam
date Thu, 06 Sep 2007 15:14:47 +0000
parents 92e8dbde73cd
children c022976d18e8
rev   line source
Chris@148 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@148 2
Chris@148 3 /*
Chris@148 4 Sonic Visualiser
Chris@148 5 An audio file viewer and annotation editor.
Chris@148 6 Centre for Digital Music, Queen Mary, University of London.
Chris@148 7 This file copyright 2006 Chris Cannam.
Chris@148 8
Chris@148 9 This program is free software; you can redistribute it and/or
Chris@148 10 modify it under the terms of the GNU General Public License as
Chris@148 11 published by the Free Software Foundation; either version 2 of the
Chris@148 12 License, or (at your option) any later version. See the file
Chris@148 13 COPYING included with this distribution for more information.
Chris@148 14 */
Chris@148 15
Chris@148 16 #ifndef _AUDIO_FILE_READER_H_
Chris@148 17 #define _AUDIO_FILE_READER_H_
Chris@148 18
Chris@290 19 #include <QString>
Chris@290 20 #include "model/Model.h" // for SampleBlock
Chris@148 21
Chris@175 22 class AudioFileReader : public QObject
Chris@148 23 {
Chris@175 24 Q_OBJECT
Chris@175 25
Chris@148 26 public:
Chris@148 27 virtual ~AudioFileReader() { }
Chris@148 28
Chris@148 29 bool isOK() const { return (m_channelCount > 0); }
Chris@148 30
Chris@290 31 virtual QString getError() const { return ""; }
Chris@148 32
Chris@148 33 size_t getFrameCount() const { return m_frameCount; }
Chris@148 34 size_t getChannelCount() const { return m_channelCount; }
Chris@148 35 size_t getSampleRate() const { return m_sampleRate; }
Chris@148 36
Chris@271 37 /**
Chris@271 38 * Return the title of the work in the audio file, if known. This
Chris@271 39 * may be implemented by subclasses that support file tagging.
Chris@271 40 * This is not the same thing as the file name.
Chris@271 41 */
Chris@290 42 virtual QString getTitle() const { return ""; }
Chris@271 43
Chris@148 44 /**
Chris@148 45 * The subclass implementations of this function must be
Chris@148 46 * thread-safe -- that is, safe to call from multiple threads with
Chris@148 47 * different arguments on the same object at the same time.
Chris@148 48 */
Chris@148 49 virtual void getInterleavedFrames(size_t start, size_t count,
Chris@148 50 SampleBlock &frames) const = 0;
Chris@175 51
Chris@265 52 // only subclasses that do not know exactly how long the audio
Chris@265 53 // file is until it's been completely decoded should implement this
Chris@265 54 virtual int getDecodeCompletion() const { return 100; } // %
Chris@265 55
Chris@176 56 virtual bool isUpdating() const { return false; }
Chris@176 57
Chris@175 58 signals:
Chris@175 59 void frameCountChanged();
Chris@148 60
Chris@148 61 protected:
Chris@148 62 size_t m_frameCount;
Chris@148 63 size_t m_channelCount;
Chris@148 64 size_t m_sampleRate;
Chris@148 65 };
Chris@148 66
Chris@148 67 #endif