annotate data/fileio/DecodingWavFileReader.h @ 1346:75ad55315db4 3.0-integration

More work on getting tests (especially file encoding ones) running on Windows. Various problems here to do with interaction with test filenames in Hg repos
author Chris Cannam
date Fri, 06 Jan 2017 15:44:55 +0000
parents 54af1e21705c
children c01cbe41aeb5 f8e3dcbafb4d
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@823 16 #ifndef _DECODING_WAV_FILE_READER_H_
Chris@823 17 #define _DECODING_WAV_FILE_READER_H_
Chris@297 18
Chris@297 19 #include "CodedAudioFileReader.h"
Chris@297 20
Chris@297 21 #include "base/Thread.h"
Chris@297 22
Chris@297 23 #include <set>
Chris@297 24
Chris@297 25 class WavFileReader;
Chris@392 26 class ProgressReporter;
Chris@297 27
Chris@823 28 class DecodingWavFileReader : public CodedAudioFileReader
Chris@297 29 {
Chris@392 30 Q_OBJECT
Chris@297 31 public:
Chris@823 32 DecodingWavFileReader(FileSource source,
Chris@1097 33 DecodeMode decodeMode, // determines when to resample
Chris@920 34 CacheMode cacheMode,
Chris@1040 35 sv_samplerate_t targetRate = 0,
Chris@920 36 bool normalised = false,
Chris@920 37 ProgressReporter *reporter = 0);
Chris@823 38 virtual ~DecodingWavFileReader();
Chris@297 39
Chris@297 40 virtual QString getError() const { return m_error; }
Chris@345 41 virtual QString getLocation() const { return m_source.getLocation(); }
Chris@297 42 static void getSupportedExtensions(std::set<QString> &extensions);
Chris@316 43 static bool supportsExtension(QString ext);
Chris@316 44 static bool supportsContentType(QString type);
Chris@317 45 static bool supports(FileSource &source);
Chris@297 46
Chris@297 47 virtual int getDecodeCompletion() const { return m_completion; }
Chris@297 48
Chris@297 49 virtual bool isUpdating() const {
Chris@297 50 return m_decodeThread && m_decodeThread->isRunning();
Chris@297 51 }
Chris@297 52
Chris@392 53 public slots:
Chris@392 54 void cancelled();
Chris@392 55
Chris@297 56 protected:
Chris@317 57 FileSource m_source;
Chris@297 58 QString m_path;
Chris@297 59 QString m_error;
Chris@297 60 bool m_cancelled;
Chris@1038 61 sv_frame_t m_processed;
Chris@297 62 int m_completion;
Chris@297 63
Chris@297 64 WavFileReader *m_original;
Chris@392 65 ProgressReporter *m_reporter;
Chris@297 66
Chris@1326 67 void addBlock(const floatvec_t &frames);
Chris@297 68
Chris@297 69 class DecodeThread : public Thread
Chris@297 70 {
Chris@297 71 public:
Chris@823 72 DecodeThread(DecodingWavFileReader *reader) : m_reader(reader) { }
Chris@297 73 virtual void run();
Chris@297 74
Chris@297 75 protected:
Chris@823 76 DecodingWavFileReader *m_reader;
Chris@297 77 };
Chris@297 78
Chris@297 79 DecodeThread *m_decodeThread;
Chris@297 80 };
Chris@297 81
Chris@297 82 #endif
Chris@297 83