Added support for compute average stats attributes in inverse space to improve

the quality of frame rate reporting.
This commit is contained in:
Robert Osfield
2007-01-30 13:48:04 +00:00
parent 6acd0e89a1
commit b8d98a2cfe
3 changed files with 19 additions and 16 deletions

View File

@@ -80,12 +80,12 @@ bool Stats::getAttribute(int frameNumber, const std::string& attributeName, doub
return true;
}
bool Stats::getAveragedAttribute(const std::string& attributeName, double& value) const
bool Stats::getAveragedAttribute(const std::string& attributeName, double& value, bool averageInInverseSpace) const
{
return getAveragedAttribute(getEarliestFrameNumber(), getLatestFrameNumber(), attributeName, value);
return getAveragedAttribute(getEarliestFrameNumber(), getLatestFrameNumber(), attributeName, value, averageInInverseSpace);
}
bool Stats::getAveragedAttribute(int startFrameNumber, int endFrameNumber, const std::string& attributeName, double& value) const
bool Stats::getAveragedAttribute(int startFrameNumber, int endFrameNumber, const std::string& attributeName, double& value, bool averageInInverseSpace) const
{
if (endFrameNumber<startFrameNumber)
{
@@ -99,13 +99,15 @@ bool Stats::getAveragedAttribute(int startFrameNumber, int endFrameNumber, const
double v = 0.0;
if (getAttribute(i,attributeName,v))
{
total += v;
if (averageInInverseSpace) total += 1.0/v;
else total += v;
numValidSamples += 1.0;
}
}
if (numValidSamples>0.0)
{
value = total/numValidSamples;
if (averageInInverseSpace) value = numValidSamples/total;
else value = total/numValidSamples;
return true;
}
else return false;