annotate audioio/BufferingAudioCallbackRecordTarget.h @ 2:b8f6bbf172e7

...
author cannam
date Fri, 20 Oct 2006 15:32:33 +0000
parents a6020bf991cd
children 7fc28f7a935a
rev   line source
cannam@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@0 2
cannam@0 3 #ifndef _BUFFERING_AUDIO_CALLBACK_RECORD_TARGET_H_
cannam@0 4 #define _BUFFERING_AUDIO_CALLBACK_RECORD_TARGET_H_
cannam@0 5
cannam@0 6 #include "AudioCallbackRecordTarget.h"
cannam@0 7 #include "base/RingBuffer.h"
cannam@0 8
cannam@2 9 #define MAX_DISTINCT_STEP_SIZES 16
cannam@2 10
cannam@0 11 class BufferingAudioCallbackRecordTarget : public AudioCallbackRecordTarget
cannam@0 12 {
cannam@0 13 public:
cannam@0 14 BufferingAudioCallbackRecordTarget();
cannam@0 15 virtual ~BufferingAudioCallbackRecordTarget();
cannam@0 16
cannam@0 17 virtual size_t getPreferredSampleRate() const { return 0; }
cannam@0 18 virtual size_t getChannelCount() const { return 2; }
cannam@0 19
cannam@0 20 virtual void setSourceBlockSize(size_t bs) { m_sourceBlockSize = bs; }
cannam@0 21 virtual void setSourceSampleRate(size_t sr) { m_sourceSampleRate = sr; }
cannam@0 22 virtual void setSourceRecordLatency(size_t rl) { m_sourceRecordLatency = rl; }
cannam@0 23
cannam@0 24 size_t getSourceBlockSize() const { return m_sourceBlockSize; }
cannam@0 25 size_t getSourceSampleRate() const { return m_sourceSampleRate; }
cannam@0 26 size_t getSourceRecordLatency() const { return m_sourceRecordLatency; }
cannam@0 27
cannam@0 28 virtual void putSamples(size_t nframes, float **samples);
cannam@0 29
cannam@2 30 virtual size_t samplesReady(int reader = 0) const;
cannam@2 31 virtual size_t getSamples(size_t channel, size_t nframes, float *samples,
cannam@2 32 int reader = 0);
cannam@2 33 virtual size_t peekSamples(size_t channel, size_t nframes, float *samples,
cannam@2 34 int reader = 0);
cannam@2 35 virtual size_t skipSamples(size_t channel, size_t nframes, int reader = 0);
cannam@0 36
cannam@0 37 virtual void setInputLevels(float, float) { }
cannam@0 38
cannam@0 39 virtual void audioProcessingOverload() { }
cannam@0 40
cannam@0 41 protected:
cannam@2 42 std::vector<RingBuffer<float, MAX_DISTINCT_STEP_SIZES> *> m_buffers;
cannam@0 43
cannam@0 44 size_t m_sourceBlockSize;
cannam@0 45 size_t m_sourceSampleRate;
cannam@0 46 size_t m_sourceRecordLatency;
cannam@0 47 };
cannam@0 48
cannam@0 49 #endif
cannam@0 50