package main import "time" const guiFrameInterval = time.Second / 60 // videoPollInterval bounds GUI latency when no video producer is waiting. // It is not a video-rate cap: Next returns immediately whenever a frame // arrives, including for sources faster than this interval. const videoPollInterval = 8 * time.Millisecond func remainingFrameTime(start, now time.Time, interval time.Duration) time.Duration { remaining := interval - now.Sub(start) if remaining < 0 { return 0 } return remaining } func paceFrame(start time.Time) { if remaining := remainingFrameTime(start, time.Now(), guiFrameInterval); remaining > 0 { time.Sleep(remaining) } }