private void UpdateFramesCapture(SkeletonRenderFrames oneSecondIntervalFrames) { // Assumes the interval between frames is approximately constant. Adds an evenly spaced sample number of frames // to the working frames capture. double frameStep = oneSecondIntervalFrames.Count / GestureStandardToleranceParameters.FramesPerSecondCapture; if (frameStep <= 1) { framesCapture.Add(oneSecondIntervalFrames); } else { int count = 0; foreach (DateTime timeStamp in rawFramesCapture.FramesTimeStamps) { if (framesCapture.Count == 0) { // Make sure first frame is always saved in capture. framesCapture.Add(timeStamp, rawFramesCapture[timeStamp]); count = 0; continue; } count += 1; if (count > frameStep) { framesCapture.Add(timeStamp, rawFramesCapture[timeStamp]); count = 0; } } } }
private void CalculateFramesInInterval() { // Build the rawFramesCapture so that it only contains those frames within the designated interval. foreach (DateTime timeStamp in parameters.SkeletonRenderFrames.FramesTimeStamps) { if (timeStamp.CompareTo(parameters.GestureStartTime) >= 0 && timeStamp.CompareTo(parameters.GestureEndTime) <= 0) { rawFramesCapture.Add(timeStamp, parameters.SkeletonRenderFrames[timeStamp]); } } }