1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-02-21 21:51:58 +01:00
Files
audacity/lib-src/sbsms/src/track.h
2010-01-24 09:19:39 +00:00

89 lines
1.6 KiB
C++

#ifndef TRACK_H
#define TRACK_H
#include "buffer.h"
#include "trackpoint.h"
#include "config.h"
#ifdef MULTITHREADED
#include "pthread.h"
#endif
#include <stack>
#include <vector>
using namespace std;
namespace _sbsms_ {
class sms;
class track {
public:
void endTrack(bool bTail);
bool isEnded();
bool isDone();
void startTrack(trackpoint *p, bool bTail);
void push_back(trackpoint *p);
void push_back_tpoint(tpoint *p);
real advance(long time, int steps);
long size();
void synth(SampleBuf *out,
long writePos,
int c,
long synthtime,
int steps);
trackpoint *getTrackPoint(long time);
bool isStart(long synthtime);
bool isEnd(long synthtime);
trackpoint *back();
vector<tpoint*> point;
unsigned short index;
bool bEnd;
track *descendant;
track *precursor;
long tailEnd;
long tailStart;
long currtime;
real rise;
real fall;
long start;
long end;
real m_p;
real m_pDescendant;
int res;
sms *owner;
protected:
friend class TrackAllocator;
track(track *precursor,sms *owner,int res);
~track();
};
class TrackAllocator {
public:
TrackAllocator(bool bManageIndex);
TrackAllocator(bool bManageIndex, unsigned short maxtrackindex);
void init();
int size();
~TrackAllocator();
track *getTrack(unsigned short index);
track *create(track *precursor,sms *owner, int res, unsigned short index);
track *create(track *precursor,sms *owner, int res);
void destroy(track *t);
protected:
#ifdef MULTITHREADED
pthread_mutex_t taMutex;
#endif
long gIdCount;
stack<unsigned short> gTrackIndex;
vector<track*> gTrack;
bool bManageIndex;
};
}
#endif