Some classes to know about and main workflow (see StartTracking method in EyeTracker class):

  1. EyeTracker loads an implementation of EyeTrackingSystem. The EyeTrackingSystem creates and configures the CameraEye(s).
  2. EyeTracker starts an ImageGrabber (thread 1) which grabs ImageEye(s) from the CameraEye(s).
  3. ImageEye is a wrapper for an EmguCV Image<Gray, byte>, holds also the ImageEyeTimestamp.
  4. EyeTracker also starts an **EyeTrackerProcessor (**thread 2 and 3 + more optionally) ****which uses an implementation of IEyeTrackingPipeline to process ImageEye(s) and add EyeData to it. ****
  5. When requested, an implementation of CalibrationSession (thread 4) starts and also processes the ImageEye(s) to calculate the EyeCalibration including the EyePhisicalModel and the EyeData for the reference (zero) eye position. One limitation is that plugins can implement new ways to calibrate but they cannot change the calibration data structures.
  6. When requested RecordingSession (thread 5) starts and records data, videos, calibration and events, to a new folder.

Other important classes and what they do