annotate audio/AudioRecordTarget.h @ 496:4f1d280903ad tony-2.0-integration

Update analysis stuff when recording starts (and when model is added) rather than when it ends. Not continuing to update during recording though...
author Chris Cannam
date Mon, 12 Oct 2015 17:10:43 +0100
parents 21d3cf5c8f21
children d1c70c680fa9 cd9dec2f47e8
rev   line source
Chris@476 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@476 2
Chris@476 3 /*
Chris@476 4 Sonic Visualiser
Chris@476 5 An audio file viewer and annotation editor.
Chris@476 6 Centre for Digital Music, Queen Mary, University of London.
Chris@476 7
Chris@476 8 This program is free software; you can redistribute it and/or
Chris@476 9 modify it under the terms of the GNU General Public License as
Chris@476 10 published by the Free Software Foundation; either version 2 of the
Chris@476 11 License, or (at your option) any later version. See the file
Chris@476 12 COPYING included with this distribution for more information.
Chris@476 13 */
Chris@476 14
Chris@476 15 #ifndef AUDIO_RECORD_TARGET_H
Chris@476 16 #define AUDIO_RECORD_TARGET_H
Chris@476 17
Chris@476 18 #include <bqaudioio/ApplicationRecordTarget.h>
Chris@476 19
Chris@476 20 #include <string>
Chris@476 21
Chris@476 22 #include <QObject>
Chris@476 23 #include <QMutex>
Chris@476 24
Chris@476 25 #include "base/BaseTypes.h"
Chris@476 26
Chris@476 27 class ViewManagerBase;
Chris@477 28 class WritableWaveFileModel;
Chris@476 29
Chris@476 30 class AudioRecordTarget : public QObject,
Chris@476 31 public breakfastquay::ApplicationRecordTarget
Chris@476 32 {
Chris@476 33 Q_OBJECT
Chris@476 34
Chris@476 35 public:
Chris@476 36 AudioRecordTarget(ViewManagerBase *, QString clientName);
Chris@476 37 virtual ~AudioRecordTarget();
Chris@476 38
Chris@476 39 virtual std::string getClientName() const { return m_clientName; }
Chris@476 40
Chris@476 41 virtual int getApplicationSampleRate() const { return 0; } // don't care
Chris@476 42 virtual int getApplicationChannelCount() const { return 2; }
Chris@476 43
Chris@476 44 virtual void setSystemRecordBlockSize(int);
Chris@476 45 virtual void setSystemRecordSampleRate(int);
Chris@476 46 virtual void setSystemRecordLatency(int);
Chris@476 47
Chris@476 48 virtual void putSamples(int nframes, float **samples);
Chris@476 49
Chris@476 50 virtual void setInputLevels(float peakLeft, float peakRight);
Chris@476 51
Chris@476 52 virtual void audioProcessingOverload() { }
Chris@476 53
Chris@483 54 QString getRecordFolder();
Chris@483 55
Chris@477 56 bool isRecording() const { return m_recording; }
Chris@477 57 WritableWaveFileModel *startRecording(); // caller takes ownership
Chris@476 58 void stopRecording();
Chris@477 59
Chris@477 60 signals:
Chris@477 61 void recordStatusChanged(bool recording);
Chris@485 62 void recordDurationChanged(sv_frame_t, sv_samplerate_t); // emitted occasionally
Chris@477 63
Chris@477 64 protected slots:
Chris@477 65 void modelAboutToBeDeleted();
Chris@476 66
Chris@476 67 private:
Chris@476 68 ViewManagerBase *m_viewManager;
Chris@476 69 std::string m_clientName;
Chris@476 70 bool m_recording;
Chris@476 71 sv_samplerate_t m_recordSampleRate;
Chris@485 72 sv_frame_t m_frameCount;
Chris@476 73 QString m_audioFileName;
Chris@477 74 WritableWaveFileModel *m_model;
Chris@476 75 QMutex m_mutex;
Chris@476 76 };
Chris@476 77
Chris@476 78 #endif