59 lines
1.2 KiB
C++
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
|
|
|