@targetdrone Each frame is tagged with when it should display, with the start of playback taken as T=0.
When playback starts, the current time is captured, and then for each frame the server computes the target time and sleeps until then.
There is also some code to drop frames if it gets too far behind.