annotate audioio/AudioCallbackPlayTarget.h @ 6:f3d777b693f7

* Introduce potentially-separate read and write ring buffers, so we can swap in a new set when something changes -- thus allowing us to respond quickly when something changes during playback, without losing the long buffers * Some fixes for display & editing
author Chris Cannam
date Fri, 27 Jan 2006 18:04:07 +0000
parents 97c69acdcb82
children c606d3ffa397
rev   line source
Chris@0 1 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@0 4 A waveform viewer and audio annotation editor.
Chris@1 5 Chris Cannam, Queen Mary University of London, 2005-2006
Chris@0 6
Chris@0 7 This is experimental software. Not for distribution.
Chris@0 8 */
Chris@0 9
Chris@0 10 #ifndef _AUDIO_CALLBACK_PLAY_TARGET_H_
Chris@0 11 #define _AUDIO_CALLBACK_PLAY_TARGET_H_
Chris@0 12
Chris@0 13 #include <QObject>
Chris@0 14
Chris@0 15 class AudioCallbackPlaySource;
Chris@0 16
Chris@0 17 class AudioCallbackPlayTarget : public QObject
Chris@0 18 {
Chris@0 19 Q_OBJECT
Chris@0 20
Chris@0 21 public:
Chris@0 22 AudioCallbackPlayTarget(AudioCallbackPlaySource *source);
Chris@0 23 virtual ~AudioCallbackPlayTarget();
Chris@0 24
Chris@0 25 virtual bool isOK() const = 0;
Chris@0 26
Chris@0 27 float getOutputGain() const {
Chris@0 28 return m_outputGain;
Chris@0 29 }
Chris@0 30
Chris@0 31 public slots:
Chris@0 32 /**
Chris@0 33 * Set the playback gain (0.0 = silence, 1.0 = levels unmodified)
Chris@0 34 */
Chris@0 35 virtual void setOutputGain(float gain);
Chris@0 36
Chris@1 37 /**
Chris@1 38 * The main source model (providing the playback sample rate) has
Chris@1 39 * been changed. The target should query the source's sample
Chris@1 40 * rate, set its output sample rate accordingly, and call back on
Chris@1 41 * the source's setTargetSampleRate to indicate what sample rate
Chris@1 42 * it succeeded in setting at the output. If this differs from
Chris@1 43 * the model rate, the source will resample.
Chris@1 44 */
Chris@0 45 virtual void sourceModelReplaced() = 0;
Chris@0 46
Chris@0 47 protected:
Chris@0 48 AudioCallbackPlaySource *m_source;
Chris@0 49 float m_outputGain;
Chris@0 50 };
Chris@0 51
Chris@0 52 #endif
Chris@0 53