Table of Javascript properties

The following table is a non-exhaustive list of the JSON structure that maintains all state and configuration data for the xLabs system.

The entire JSON tree can be viewed in the Options Page of the xLabs Browser Extension, under the Config tab. Since the structure is JSON, we use the term “path” to indicate the name of a particular nested property.

Since our implementation is backed by a BOOST Property Tree object, it is not possible to write subtrees as a single command; instead, you should only write values to leaf properties. All values will be serialized to strings.

For boolean properties (such as .enabled), write a “0” value for off and “1” for on. Undocumented paths should be ignored, as manipulating these values may cause unexpected side effects.

Writes to some paths are ignored or overwritten; others may not be read until the browser is restarted.

Property path Notes
state.* The state property and all subpaths are intended to include everything about the current state of the system and user.
state.timestamp The timestamp when the state was last updated.
state.frameRate The rate at which frames are being processed.
state.calibration.confidence A scalar value that is correlated with gaze prediction accuracy.
state.trackingSuspended An error flag, indicating that the gaze state could not be updated because we temporarily lost track of necessary facial features.
state.head.* The pose of the user’s head as a 6 DOG rigid body.
state.gaze.vector The relative eye pose of the user, as a 2D vector.
state.gaze.measured The measured gaze focus of the user in screen coordinates.
state.gaze.estimate An estimated gaze focus of the user in screen coordinates.
state.image.size The resolution of the input image that was used to update the state.
browser.* Properties of the user’s browser, that are relevant to gaze tracking.
browser.screen.* Properties of the display device (screen).
browser.canvas.* Properties of the xLabs Canvas element, which we use for drawing graphics on top of whatever page is being displayed.
browser.canvas.paintLearning If set to 1, then in learning mode our UI will be drawn on the canvas. Set to 0 to display your own UI instead.
browser.canvas.paintHeadPose If set to 1, then in head mode our UI will be drawn on the canvas. Set to 0 to display your own UI instead.
browser.canvas.enabled If set to 1, our canvas is displayed. Normally not used by third party code.
browser.canvas.captureMouse If set to 1, our canvas will intercept all mouse events and prevent them from reaching the page. This allows us to provide a UI.
browser.canvas.captureKeyboard As captureMouse, but for keyboard events.
browser.document.offset.* The offset of the document from the origin of the browser window, in pixels.
system.mode The mode of the xLabs system. Possible values are “off”, “head”, “learning”, “mouse” and “training”.
frame.stream.* Properties of the image stream that xLabs is using as input.
frame.stream.enabled Whether the input image stream is enabled. If 0, then no images are received or processed.
frame.stream.preview Activates the preview utility built into the xLabs Browser Extension.
frame.stream.width The width in pixels of the image stream.
frame.stream.height Height in pixels
frame.stream.rate The rate in frames per second at which the system is receiving images. It may be processing at a slower rate.
frame.stream.frameRateThrottler.enabled If set to 1, processing will be throttled to match the specified target FPS. This is useful to reduce processing load when near realtime results are not needed.
frame.stream.frameRateThrottler.targetFps Target FPS for the throttler, described above.
http.* Not used in Browser Extension API. The HTTP variant of the software uses this.
truth.* Truth data is where we think the user was looking at particular times. Used for calibration. CSV format.
watch.* Watch data is a CSV file containing measurements of the user’s face at particular times. Associated with truth data to enable calibration.
pipeline.* The processing pipeline. Of interest because specific modules can be enabled or disabled.
pipeline.tracking.enabled Enables tracking of the user’s face.
pipeline.pinpoint.enabled Enables high-precision feature localization on the face (higher CPU workload).
pipeline.validation.enabled Enables validation of the face region image quality.
calibration.* The calibration process.
calibration.status If zero, there is no good calibration. Else, there is a valid calibration dataset.
calibration.clear Any write to this value will cause calibration data to be permanently deleted.
calibration.active Value is 1 when calibration is executing, zero otherwise.
calibration.completed Value is set, after calibration completion, to the value passed to calibration.request when calibration began.
calibration.request Set a value to trigger calibration. The value will be copied to calibration.completed when it’s done.
validation.* Validation of the image image – results.
validation.lastFrameTimestamp Timestamp of the last time a frame was processed. Indicative of camera issues.
validation.valid An overall assessment of the image quality, but may be too strict for many purposes.
validation.errors An empty string indicates an absence of errors. Else, the string contains some of the following letters: D (too dark),B (too bright),U (unevenly illuminated), R (low resolution on face), F (frame rate too low).
validation.facePosition A rectangle bounding the face region of the user in the image, in pixels, as x, y, w, h. e.g. “261,150,132,111”
algorithm.* Properties of the algorithm. Probably best not to touch.
mouseEmulator.* Properties of the mouse emulator mode.
gaze.* Gaze is one of 4 logs maintained by the system. Each log is a CSV file with several properties. The CSV data cannot be directly obtained from the config structure. Instead, follow the steps outlined in the logging example code. Note that there are x and x.temp logs; the former are persistent. We only keep persistent logs for truth and watch; the other logs are all transient.
gaze.temp.enabled Enables the transient log of gaze data. All gaze estimates will be logged.
gaze.temp.clear Clears the transient log of gaze data.
gaze.temp.id Set this path with the ID of a HTML element. The xLabs Browser Extension will then populate the element with the content of the transient CSV log file.
error.temp.* Another log – see gaze.temp. A log of errors reported by the xLabs system.
click.temp.* Another log – see gaze.temp. Values are screen x, y click coordinates, and a timestamp.
scroll.temp.* Another log – see gaze.temp. Values are document x,y scroll offsets and timestamp.
debug.* Used to implement the debug UI in the Browser Ex

Please contact us for an explanation of any other property, if required. The omitted properties are generally beyond the scope of this document.