Chris@476: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@476: Chris@476: /* Chris@476: Sonic Visualiser Chris@476: An audio file viewer and annotation editor. Chris@476: Centre for Digital Music, Queen Mary, University of London. Chris@476: Chris@476: This program is free software; you can redistribute it and/or Chris@476: modify it under the terms of the GNU General Public License as Chris@476: published by the Free Software Foundation; either version 2 of the Chris@476: License, or (at your option) any later version. See the file Chris@476: COPYING included with this distribution for more information. Chris@476: */ Chris@476: Chris@476: #ifndef AUDIO_RECORD_TARGET_H Chris@476: #define AUDIO_RECORD_TARGET_H Chris@476: Chris@476: #include Chris@476: Chris@476: #include Chris@476: Chris@476: #include Chris@476: #include Chris@476: Chris@476: #include "base/BaseTypes.h" Chris@476: Chris@476: class ViewManagerBase; Chris@477: class WritableWaveFileModel; Chris@476: Chris@476: class AudioRecordTarget : public QObject, Chris@476: public breakfastquay::ApplicationRecordTarget Chris@476: { Chris@476: Q_OBJECT Chris@476: Chris@476: public: Chris@476: AudioRecordTarget(ViewManagerBase *, QString clientName); Chris@476: virtual ~AudioRecordTarget(); Chris@476: Chris@476: virtual std::string getClientName() const { return m_clientName; } Chris@476: Chris@476: virtual int getApplicationSampleRate() const { return 0; } // don't care Chris@476: virtual int getApplicationChannelCount() const { return 2; } Chris@476: Chris@498: virtual void setSystemRecordSource(breakfastquay::SystemRecordSource *); Chris@498: Chris@476: virtual void setSystemRecordBlockSize(int); Chris@476: virtual void setSystemRecordSampleRate(int); Chris@476: virtual void setSystemRecordLatency(int); Chris@476: Chris@476: virtual void putSamples(int nframes, float **samples); Chris@476: Chris@476: virtual void setInputLevels(float peakLeft, float peakRight); Chris@476: Chris@476: virtual void audioProcessingOverload() { } Chris@476: Chris@483: QString getRecordFolder(); Chris@483: Chris@477: bool isRecording() const { return m_recording; } Chris@477: WritableWaveFileModel *startRecording(); // caller takes ownership Chris@476: void stopRecording(); Chris@477: Chris@477: signals: Chris@477: void recordStatusChanged(bool recording); Chris@486: void recordDurationChanged(sv_frame_t, sv_samplerate_t); // emitted occasionally Chris@477: Chris@477: protected slots: Chris@477: void modelAboutToBeDeleted(); Chris@476: Chris@476: private: Chris@476: ViewManagerBase *m_viewManager; Chris@498: breakfastquay::SystemRecordSource *m_source; Chris@476: std::string m_clientName; Chris@476: bool m_recording; Chris@476: sv_samplerate_t m_recordSampleRate; Chris@486: sv_frame_t m_frameCount; Chris@476: QString m_audioFileName; Chris@477: WritableWaveFileModel *m_model; Chris@476: QMutex m_mutex; Chris@476: }; Chris@476: Chris@476: #endif