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
+