41 #ifndef __AUTimestampGenerator_h__
42 #define __AUTimestampGenerator_h__
45 #include "CAHostTimeBase.h"
48 #define TSGFMT "0x%10qx"
56 class AUTimestampGenerator {
58 AUTimestampGenerator(
bool hostTimeDiscontinuityCorrection =
false) :
59 mStartInputAtZero(true),
61 mHostTimeDiscontinuityCorrection(hostTimeDiscontinuityCorrection)
65 sprintf(mDebugName,
"tsg @ %p",
this);
70 CAHostTimeBase::GetFrequency();
74 void SetStartInputAtZero(
bool b) { mStartInputAtZero = b; }
75 bool GetStartInputAtZero()
const {
return mStartInputAtZero; }
78 void SetBypassed(
bool b) { mBypassed = b; }
79 bool GetBypassed()
const {
return mBypassed; }
84 mCurrentInputTime.mSampleTime = 0.;
85 mNextInputSampleTime = 0.;
86 mCurrentOutputTime.mSampleTime = 0.;
87 mNextOutputSampleTime = 0.;
88 mLastOutputTime.mFlags = 0;
93 printf(
"%-20.20s: Reset\n", mDebugName);
101 void AddOutputTime(
const AudioTimeStamp &inTimeStamp, Float64 expectedDeltaFrames,
double outputSampleRate,
double rateScalarAdj=1.0);
107 const AudioTimeStamp & GenerateInputTime(Float64 framesToAdvance,
double inputSampleRate);
110 void Advance(Float64 framesToAdvance)
114 printf(
"%-20.20s: ADVANCE in = "TSGFMT
" advance = "TSGFMT
"\n", mDebugName, (SInt64)mCurrentInputTime.mSampleTime, (SInt64)framesToAdvance);
116 mNextInputSampleTime = mCurrentInputTime.mSampleTime + framesToAdvance;
121 AudioTimeStamp mCurrentInputTime;
122 Float64 mNextInputSampleTime;
123 Float64 mNextOutputSampleTime;
125 AudioTimeStamp mLastOutputTime;
126 AudioTimeStamp mCurrentOutputTime;
129 bool mStartInputAtZero;
133 Float64 mDiscontinuityDeltaSamples;
135 double mRateScalarAdj;
137 bool mHostTimeDiscontinuityCorrection;
148 #endif // __AUTimestampGenerator_h__