Mercurial > hg > vamp-live-host
diff audioio/BufferingAudioCallbackRecordTarget.h @ 0:a6020bf991cd
* Initial import of what may or may not become a simple live visual-response
host for causal Vamp plugins
author | cannam |
---|---|
date | Thu, 19 Oct 2006 16:53:48 +0000 |
parents | |
children | b8f6bbf172e7 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audioio/BufferingAudioCallbackRecordTarget.h Thu Oct 19 16:53:48 2006 +0000 @@ -0,0 +1,44 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +#ifndef _BUFFERING_AUDIO_CALLBACK_RECORD_TARGET_H_ +#define _BUFFERING_AUDIO_CALLBACK_RECORD_TARGET_H_ + +#include "AudioCallbackRecordTarget.h" +#include "base/RingBuffer.h" + +class BufferingAudioCallbackRecordTarget : public AudioCallbackRecordTarget +{ +public: + BufferingAudioCallbackRecordTarget(); + virtual ~BufferingAudioCallbackRecordTarget(); + + virtual size_t getPreferredSampleRate() const { return 0; } + virtual size_t getChannelCount() const { return 2; } + + virtual void setSourceBlockSize(size_t bs) { m_sourceBlockSize = bs; } + virtual void setSourceSampleRate(size_t sr) { m_sourceSampleRate = sr; } + virtual void setSourceRecordLatency(size_t rl) { m_sourceRecordLatency = rl; } + + size_t getSourceBlockSize() const { return m_sourceBlockSize; } + size_t getSourceSampleRate() const { return m_sourceSampleRate; } + size_t getSourceRecordLatency() const { return m_sourceRecordLatency; } + + virtual void putSamples(size_t nframes, float **samples); + + virtual size_t samplesReady() const; + virtual size_t getSamples(size_t channel, size_t nframes, float *samples); + + virtual void setInputLevels(float, float) { } + + virtual void audioProcessingOverload() { } + +protected: + std::vector<RingBuffer<float> *> m_buffers; + + size_t m_sourceBlockSize; + size_t m_sourceSampleRate; + size_t m_sourceRecordLatency; +}; + +#endif +