annotate data/fileio/AudioFileReader.h @ 167:665342c6ec57

* Add a bit of resistance to pane dragging so as to make it harder to inadvertently drag in the other axis from the one you intended
author Chris Cannam
date Fri, 22 Sep 2006 16:46:10 +0000
parents 4b2ea82fd0ed
children b0f4555b625e
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@148 19 #include <QString>
Chris@150 20 #include "model/Model.h" // for SampleBlock
Chris@148 21
Chris@148 22 class AudioFileReader
Chris@148 23 {
Chris@148 24 public:
Chris@148 25 virtual ~AudioFileReader() { }
Chris@148 26
Chris@148 27 bool isOK() const { return (m_channelCount > 0); }
Chris@148 28
Chris@148 29 virtual QString getError() const { return ""; }
Chris@148 30
Chris@148 31 size_t getFrameCount() const { return m_frameCount; }
Chris@148 32 size_t getChannelCount() const { return m_channelCount; }
Chris@148 33 size_t getSampleRate() const { return m_sampleRate; }
Chris@148 34
Chris@148 35 /**
Chris@148 36 * The subclass implementations of this function must be
Chris@148 37 * thread-safe -- that is, safe to call from multiple threads with
Chris@148 38 * different arguments on the same object at the same time.
Chris@148 39 */
Chris@148 40 virtual void getInterleavedFrames(size_t start, size_t count,
Chris@148 41 SampleBlock &frames) const = 0;
Chris@148 42
Chris@148 43 protected:
Chris@148 44 size_t m_frameCount;
Chris@148 45 size_t m_channelCount;
Chris@148 46 size_t m_sampleRate;
Chris@148 47 };
Chris@148 48
Chris@148 49 #endif