26AudioProcessLoadMeasurer::AudioProcessLoadMeasurer() =
default;
38 cpuUsageProportion = 0;
41 samplesPerBlock = blockSize;
42 msPerSample = (sampleRate > 0.0 && blockSize > 0) ? 1000.0 / sampleRate : 0;
50 registerRenderTimeLocked (milliseconds, samplesPerBlock);
58 registerRenderTimeLocked (milliseconds, numSamples);
61void AudioProcessLoadMeasurer::registerRenderTimeLocked (
double milliseconds,
int numSamples)
63 if (approximatelyEqual (msPerSample, 0.0))
66 const auto maxMilliseconds = numSamples * msPerSample;
67 const auto usedProportion = milliseconds / maxMilliseconds;
68 const auto filterAmount = 0.2;
69 const auto proportion = cpuUsageProportion.load();
70 cpuUsageProportion = proportion + filterAmount * (usedProportion - proportion);
72 if (milliseconds > maxMilliseconds)
82 : ScopedTimer (p, p.samplesPerBlock)
86AudioProcessLoadMeasurer::ScopedTimer::ScopedTimer (AudioProcessLoadMeasurer& p,
int numSamplesInBlock)
87 : owner (p), startTime (Time::getMillisecondCounterHiRes()), samplesInBlock (numSamplesInBlock)
91 jassert (numSamplesInBlock);
94AudioProcessLoadMeasurer::ScopedTimer::~ScopedTimer()
~AudioProcessLoadMeasurer()
double getLoadAsPercentage() const
void registerBlockRenderTime(double millisecondsTaken)
void registerRenderTime(double millisecondsTaken, int numSamples)
double getLoadAsProportion() const
bool isLocked() const noexcept
static double getMillisecondCounterHiRes() noexcept