annotate data/fileio/AudioFileReader.h @ 263:71dfc6ab3b54

* Threaded mp3/ogg file reading. Not activated yet, as it doesn't work in context (SV needs to know the duration of its main model at the outset)
author Chris Cannam
date Thu, 24 May 2007 16:20:22 +0000
parents 570794f6f6a7
children e08f486e8d8c
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@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@148 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@148 37 /**
Chris@148 38 * The subclass implementations of this function must be
Chris@148 39 * thread-safe -- that is, safe to call from multiple threads with
Chris@148 40 * different arguments on the same object at the same time.
Chris@148 41 */
Chris@148 42 virtual void getInterleavedFrames(size_t start, size_t count,
Chris@148 43 SampleBlock &frames) const = 0;
Chris@175 44
Chris@176 45 virtual bool isUpdating() const { return false; }
Chris@176 46
Chris@175 47 signals:
Chris@175 48 void frameCountChanged();
Chris@148 49
Chris@148 50 protected:
Chris@148 51 size_t m_frameCount;
Chris@148 52 size_t m_channelCount;
Chris@148 53 size_t m_sampleRate;
Chris@148 54 };
Chris@148 55
Chris@148 56 #endif