frame pacing fix
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user