annotate data/fileio/DecodingWavFileReader.h @ 1248:58dd6a6fe414 piper

Update to use listargs variant of Piper stuff (so that the plugin winnowing feature from the penultimate commit actually works)
author Chris Cannam
date Thu, 03 Nov 2016 15:38:17 +0000
parents abc309f507ae
children 54af1e21705c
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@1096 67 void addBlock(const std::vector<float> &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