mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-17 16:00:36 +02:00
The side cameras came out swapped on most SteamVR starts, and right on some.
Two guesses combined:
- ft-hands and camcheck.py named each video device by its TrackingCameraInit
index (0 = slam_left). The index is only the order XRService opens the
cameras in: on every start logged since 2026-10-04, index 0 was slam_right.
XRService names each sensor subdev itself ("Found camera 'slam_left': ...
v4l_subdev=/dev/v4l-subdev30"), and each TrackingCameraInit line says which
subdev it opened. Name the devices by that; the index order stays the
fallback for a log without those lines. The capture-pipe fallback had vfe3
and vfe4 backwards too.
- ft-camd bound each run of XRService's buffers to a device by the sensor
subdev opened just before it in XRService's fd table. That order changes
when XRService restarts its cameras (17:09 today: the run after
og01a1b 4-0060's subdev was video9's). VIDIOC_QUERYBUF on the device names
the descriptor XRService queued at each index, from any handle, so bind runs
by that, and split a run holding two cameras' buffers (the upper pair and the
colour pair came as 32-buffer runs). The order stays the fallback.
Checked on the live XRService: all four tracking cameras "bound by
VIDIOC_QUERYBUF" with 16 buffers each, and ft-hands now reads
slam_left=video13 slam_right=video9. ft-hands' hands-based side check stays
as the safety net.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>