00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef CL_RECORD_QUEUE_H
00021 #define CL_RECORD_QUEUE_H
00022
00023 #include "CL_API.h"
00024 #define CL_RECORD_MODE_OVERWRITE 0
00025 #define CL_RECORD_MODE_EXTEND 1
00026 #define CL_RECORD_MODE_ADD 2
00027 #define CL_RECORD_MODE_CYCLE 3
00028
00029 class CL_API CL_RecordQueue
00030 {
00031 public:
00032 CL_RecordQueue(int mode, int size);
00033 virtual ~CL_RecordQueue();
00034
00035 void reset();
00036
00037 void setRecordMode(int mode);
00038 void addSamples(int num, const float *samples);
00039
00040 int getFullRangeSize();
00041 int getTimeSliceSize();
00042
00043 int getFullRange(int max, float *samples);
00044 int getTimeSlice(int max, float *samples);
00045 float getCurrentFrame();
00046
00047 float getSample(float index);
00048
00049 float *getData() { return myData; }
00050 int size() { return myRecordPos+1; }
00051 int actualSize() { return mySize; }
00052
00053 void resize(int size, int clear = 0);
00054
00055 void save(ostream &os, int binary);
00056 bool load(UT_IStream &is, int version);
00057
00058 private:
00059
00060
00061 int myRecordMode;
00062 int mySize;
00063 int myChunk;
00064 int myRecordPos;
00065 int myLastRecordPos;
00066 int myLastTimeSliceLength;
00067 int myCumulativeLength;
00068 float *myData;
00069 };
00070
00071
00072 #endif