MCPcopy Create free account
hub / github.com/SirLynix/obs-kinect / ComputeDynamicValues

Method ComputeDynamicValues

src/KinectSource.cpp:382–398  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

380}
381
382auto KinectSource::ComputeDynamicValues(const std::uint16_t* values, std::size_t valueCount) -> DynamicValues
383{
384 constexpr std::uint16_t MaxValue = std::numeric_limits<std::uint16_t>::max();
385
386 unsigned long long average = std::accumulate(values, values + valueCount, 0LL) / valueCount;
387 unsigned long long varianceAcc = std::accumulate(values, values + valueCount, 0LL, [average](unsigned long long init, unsigned long long delta)
388 {
389 return init + (delta - average) * (delta - average); // underflow allowed (will overflow back to the right value)
390 });
391
392 double variance = double(varianceAcc) / valueCount;
393
394 double averageValue = double(average) / MaxValue;
395 double standardDeviation = std::sqrt(variance / MaxValue);
396
397 return { averageValue, standardDeviation };
398}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected