The FOVE 0 has a 119Hz eye tracker. This means the eye tracking cameras are taking new images every 1s / 119 = 8.4ms
.
The images are then sent to the PC over USB, where the Windows UVC driver reads them and passes them to FoveService.exe
for processing. The timestamp is taken on the host PC as soon as the image arrives.
Operating system limitations
Windows scheduling introduces jitter due to its non-real-time nature.
USB jitter and transmission delay
Eye images are timestamped on the host PC (FOVE 0), which is susceptible to delays in USB transfer and driver processing.
CPU/GPU bottlenecks
High CPU load can slow eye-tracking calculations, resulting in missed or delayed frames.
For unknown reasons, the Windows UVC driver often processes frames in batches, causing timestamps to appear with an alternating rhythm, such as: 14ms β 2ms β 14ms β 2ms β¦
Within any 1-second span, there will still be 119 frames, but the inter-frame intervals (time between consecutive timestamps) will vary.
This behavior does not affect the timing of the camera itself, which continues capturing images at 119Hz. You can safely assume uniform 8.4ms intervals for analytical purposes unless frames are missed.
On Linux, the βgroupedβ timestamp behavior does not occur. However, there is still variability in inter-frame timing due to USB transfer speed fluctuations.
To detect missed frames:
Use the frame index parameter in the eye tracking data.
Gaps in the frame index (e.g., jumping from frame 82 to 84) indicate dropped frames.
This typically happens when the PC is underperforming or CPU resources are exhausted.
Typically at least one CPU core will be maxed out in these cases, which can be seen from the Windows Task Manager (Performance β CPU β Right Click β Change Graph To β Logical Processors)