diff --git a/camd/README.md b/camd/README.md index 3745b2e..63c1060 100644 --- a/camd/README.md +++ b/camd/README.md @@ -2,7 +2,7 @@ Root-side camera access for frame-hands: -- `fh-camd`: the frame broker. It publishes the four IR tracking cameras to a shared-memory ring that the unprivileged tracker reads. +- `fh-camd`: the frame broker. It publishes the four IR tracking cameras, and optionally the Arcturus color pair, to a shared-memory ring that the unprivileged tracker reads. - `fh-camprobe`: a test tool that records timestamped frames from every camera, including the Arcturus color pair, with CSV logs. ## How it gets frames @@ -33,6 +33,13 @@ Frames go to `/run/frame-hands/ir-ring`. The file is mode 0600 and owned by the - A copy torn by the camera overwriting the buffer is dropped. - Each copy takes about 0.1 ms, and a cache sync about 0.15 ms. +Options: + +- `--with-dark`: also publish the near-black frames, as extra ring cameras flagged `FH_CAM_DARK`. They show only light sources, so they're no use for hands. +- `--with-color`: also publish the two Arcturus color cameras, flagged `FH_CAM_COLOR`. Each is the luma of the 10-bit frame's valid 1972x2464 (the top 8 bits), at half size (`--color-scale 2`: 986x1232) and at most 30 fps (`--color-fps`; the cameras run at 60). Frames that carry the module's warped half-size copy are dropped. Their `capture_ns` is on the color module's clock (2.2 s off the mono cameras' on 2026-09-29), so line them up with the mono cameras by `dqbuf_ns`. Each frame costs about 0.65 ms of cache sync and 1.1 ms of decoding, so both cameras at 30 fps take about 11% of a core. +- The ring holds 8 cameras: 4 mono, plus 4 dark twins or 2 color cameras. +- `--sensor S`: only the mono cameras whose sensor name contains S. + It exits when XRService exits, or when a camera's buffers keep going stale, which means XRService has reallocated them. Start it again to re-attach. ## fh-camprobe @@ -51,6 +58,6 @@ Output goes to `~/Pictures/framecap/stereo-