audacia/src/RingBuffer.h

59 lines
1.2 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
RingBuffer.h
Dominic Mazzoni
*******************************************************************/
#ifndef __AUDACITY_RING_BUFFER__
#define __AUDACITY_RING_BUFFER__
#include "SampleFormat.h"
class RingBuffer {
public:
RingBuffer(sampleFormat format, int size);
~RingBuffer();
//
// For the writer only:
//
int AvailForPut();
int Put(samplePtr buffer, sampleFormat format, int samples);
//
// For the reader only:
//
int AvailForGet();
int Get(samplePtr buffer, sampleFormat format, int samples);
int Discard(int samples);
private:
int Len();
sampleFormat mFormat;
int mStart;
int mEnd;
int mBufferSize;
samplePtr mBuffer;
};
#endif /* __AUDACITY_RING_BUFFER__ */
// Indentation settings for Vim and Emacs and unique identifier for Arch, a
// version control system. Please do not modify past this point.
//
// Local Variables:
// c-basic-offset: 3
// indent-tabs-mode: nil
// End:
//
// vim: et sts=3 sw=3
// arch-tag: 43b69817-059c-4f4a-87e5-b19b2bcc75fb