Repository navigation
Conversation
…collapsible Live strip, and frames fetched only when the camera makes one - The image fills the panel; wheel zooms at the cursor, drag pans, double-click or Fit fits, 1:1 shows camera pixels (unsmoothed when magnified). The colour-mapped frame is kept apart from the view, so later overlays zoom and pan with it (toView/toImage). - Scale: linear / square root / log, in the same lookup table as the levels. - Live folds into a native disclosure whose summary keeps centroid and max. - FrameSource reuses a frame exactly while MJPG1's counter stands still and sends it as X-Frame-Counter; the page skips decoding a frame it already shows. A 1 Hz camera polled at 10 Hz is now one fetch and one draw a second. - Fixed while measuring: the reuse window was timed from the fetch's reply, so a poll at the cap's period was handed the old frame a third of the time (5.5 fps shown of 10). Now timed from the request, and the counter decides whenever it is known. The page also fetches the next frame while drawing the last. Measured: 9.5-10 fps at the 10 fps cap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ers, a reuse limit, per-fetch frame tags, decode errors, pixel density, the 1:1 floor F1: the min_interval floor applies whatever the counter says, so N viewers cost the IOC one fetch per floor (a 30 Hz camera and 5 viewers was ~50/s). F2: a frame is never reused past max_reuse (1 s) under an unchanged counter, and each fetch gets its own tag (X-Frame-Tag) so the page redraws a refetch. ffmpegServer stores the JPEG before posting its counter, so this is a net, not a known failure. F3: a change of devicePixelRatio (window moved between screens) re-sizes. F4: a frame that fails to decode shows the error and is retried. F5: 1:1 reaches 100% on a frame smaller than the view. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…decode-error box hides only after a frame draws; two comments brought up to date Review round 2 on #1132 (both low). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adversarial review (fresh-context reviewer, two rounds)
Round-2 items were low severity and fixed without a third round (review stopping rule). Noted: for a camera at 1 Hz or faster, the 1 s net doesn't shorten a stale frame below one camera period; it's a backstop, not a guarantee. After the fixes: GeecsPanels 54 passed, GeecsWebTheme 198 passed, lint OK. Live: 9.5–10 fps at the 10 fps cap. |
skbarber
left a comment
There was a problem hiding this comment.
Reviewed this PR in the #1130–#1135 stack, including the existing review fixes. No additional actionable findings in this PR. Validation at stack head dc8ac07: panel suite plus Core EPICS bootstrap/light-import tests, 143 passed (including JavaScript syntax checks). Targeted offline probes reproduced the findings on #1134/#1135. No hardware writes or live camera testing performed.
|
Closed by GitHub when its base branch was deleted; its base cannot be changed while closed. Superseded by a new PR from the same head commit (feat/panels-viewer → master). The review record stays here. |
GeecsPanels: the viewer — zoom, pan, log scale, collapsible Live, frames only when the camera makes one (replaces #1132)
Stacked PR, step 2a of the panels arc. Base:
feat/geecs-panels(#1131), which is based on #1130. The maintainer asked to finish the arc before merging, so the stack merges in order at the end: #1130 → #1131 → this → the next steps. Don't delete a base branch while a child is open; GitHub auto-closes the child.Feedback from looking at #1131: make Live collapsible, give the image the panel, add zoom, drag and log scale.
What
toView/toImage), so 2b's crosshairs and ROI box zoom and pan with the image.<details class="disc">(rung 0). Folded, its summary keeps centroid and max; open/closed is remembered per camera.FrameSourcereuses a frame exactly whileMJPG1:ArrayCounter_RBVstands still and sends it asX-Frame-Counter; the page skips decoding a frame it already shows. A 1 Hz camera polled at 10 Hz is now one upstream fetch and one draw a second (maintainer question on host load).398 lines added, 89 removed, mostly
camera.js.Tests
X-Frame-Counter.Hardware verification (done)
Against ADTEST_CAM1 from a Mac over the VPN:
🤖 Generated with Claude Code