Class GazeFusionResult#
Defined in File gaze_fusion_result.hpp
Class Documentation#
-
class GazeFusionResult#
Parses a session-root “gaze_fusion.json” file written by analysis/run_gaze_fusion.py into a queryable in-memory structure, for the Analysis tab’s Multi-Camera Gaze Fusion plugin (per-camera bbox+arrow overlay during playback, plus a 3D room-view widget). Mirrors ExpressionResult (src/analysis/expression_result.hpp) closely — same load()/is_valid() shape — with one deliberate divergence: frames are keyed on the shared master tick/timestamp (not any single video’s frame_index, since fusion is inherently cross-camera), so nearest-frame lookup is by timestamp, not frame index.
Usage:
auto result = GazeFusionResult::load(jsonPath); if (result.is_valid()) { ... }
Public Functions
-
GazeFusionResult() = default#
-
inline bool is_valid() const#
-
inline const QStringList &source_videos() const#
-
inline const QVector<GazeFusionRoomCamera> &cameras() const#
-
inline bool plane_defined() const#
-
inline double master_fps() const#
-
inline const QVector<GazeFusionFrame> &frames() const#
-
const GazeFusionFrame *nearest_frame(int64_t timestampNsEstimate) const#
Nearest-frame lookup by timestamp (ns) estimate — binary search, since frames() is stored in the ascending timestampNs order run_gaze_fusion.py writes ascending master ticks in. Returns nullptr if there are no frames.
Public Static Functions
-
static GazeFusionResult load(const QString &jsonPath)#
Parses jsonPath. Returns a default-constructed (is_valid() == false) result if the file is missing or malformed.
-
GazeFusionResult() = default#