view audioio/BufferingAudioCallbackRecordTarget.h @ 17:3cbd40805795 tip

Remove obsolete stuff from README
author Chris Cannam
date Tue, 03 Dec 2013 16:33:08 +0000
parents dbbd2b473eee
children
line wrap: on
line source
/* -*- 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 "RingBuffer.h"

#define MAX_DISTINCT_STEP_SIZES 16

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(int reader = 0) const;
    virtual size_t getSamples(size_t channel, size_t nframes, float *samples,
                              int reader = 0);
    virtual size_t peekSamples(size_t channel, size_t nframes, float *samples,
                               int reader = 0);
    virtual size_t skipSamples(size_t channel, size_t nframes, int reader = 0);
    virtual size_t skipAllSamples(size_t channel, int reader = 0);
    
    virtual void setInputLevels(float, float) { }

    virtual void audioProcessingOverload() { }

protected:
    std::vector<RingBuffer<float, MAX_DISTINCT_STEP_SIZES> *> m_buffers;
    
    size_t m_sourceBlockSize;
    size_t m_sourceSampleRate;
    size_t m_sourceRecordLatency;
};

#endif