00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __JackEngineTiming__
00022 #define __JackEngineTiming__
00023
00024 #include "types.h"
00025 #include "JackTypes.h"
00026 #include "JackConstants.h"
00027
00028 namespace Jack
00029 {
00030
00031 #define TIME_POINTS 1000
00032
00037 struct JackTimingMeasureClient
00038 {
00039 int fRefNum;
00040 jack_time_t fSignaledAt;
00041 jack_time_t fAwakeAt;
00042 jack_time_t fFinishedAt;
00043 jack_client_state_t fStatus;
00044 };
00045
00050 struct JackTimingMeasure
00051 {
00052 unsigned int fAudioCycle;
00053 jack_time_t fEngineTime;
00054 JackTimingMeasureClient fClientTable[CLIENT_NUM];
00055 };
00056
00061 class JackClientInterface;
00062 class JackGraphManager;
00063
00064 class JackEngineTiming
00065 {
00066
00067 private:
00068
00069 JackTimingMeasure fMeasure[TIME_POINTS];
00070 unsigned int fAudioCycle;
00071 jack_time_t fPrevCycleTime;
00072 jack_time_t fCurCycleTime;
00073
00074 public:
00075
00076 JackEngineTiming():fAudioCycle(0),fPrevCycleTime(0),fCurCycleTime(0)
00077 {}
00078 ~JackEngineTiming()
00079 {}
00080
00081 void GetTimeMeasure(JackClientInterface** table, JackGraphManager* manager, jack_time_t cur_cycle_begin, jack_time_t prev_cycle_end);
00082 void ClearTimeMeasures();
00083 };
00084
00085 }
00086
00087 #endif