internal override TestFrameResult TestTimeStamp(StateContext context, OsdFrameInfo frameTimestamp) { attempts++; if (lastGoodTimeStamp == null) { if (frameTimestamp.FrameInfoIsOk()) lastGoodTimeStamp = frameTimestamp; } else { if (!frameTimestamp.FrameInfoIsOk() || lastGoodTimeStamp.SecondField.FieldNumber + 1 != frameTimestamp.FirstField.FieldNumber || Math.Abs(new TimeSpan(frameTimestamp.FirstField.TimeStamp.Ticks - lastGoodTimeStamp.SecondField.TimeStamp.Ticks).TotalMilliseconds - 20) > 1) { lastGoodTimeStamp = null; } else { secondLastGoodTimeStamp = frameTimestamp; context.LastTimeStamp = secondLastGoodTimeStamp; context.TransitionToState(CalibratedState.Instance); } } return attempts > 4 ? TestFrameResult.ErrorSaveScreenShotImages : TestFrameResult.Undefined; }
public TestFrameResult TestTimeStamp(OsdFrameInfo frameTimestamp, bool ts) { TestFrameResult suggestedResult = currentState.TestTimeStamp(this, frameTimestamp); if (!frameTimestamp.FrameInfoIsOk() || suggestedResult == TestFrameResult.ErrorSaveScreenShotImages) { return TestFrameResult.ErrorSaveScreenShotImages; } else return suggestedResult; }