d438b516e5
Camera-agnostic (--camera auto finds any V4L2 capture device and finds it again after a replug; non-MJPEG cameras are encoded), says when the camera is unavailable, paced per decision 28. Python, standard library only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
1.2 KiB
1.2 KiB
type, status, updated
| type | status | updated |
|---|---|---|
| plan | active | 2026-10-12 |
Initial plan
Scope
The camera end to end on the Orin: capture, the live view, recording, and later
inference. Hardware facts for the current camera are in orin-nano-env-setup
docs/impl/reports/USB-CAMERA.md; tablet link limits in app-flutter
docs/impl/reports/LINK-TEST-2026-10-11.md.
Order
- Live view — in place:
src/liveview.pyasyukart-vision.serviceon:7710. Started as a test tool in app-flutter and moved here once the live view became a product feature (decision 27). Protocol in the module docstring. - Capture fan-out. One capture process, frames to several consumers (live view, recorder, inference). Needed before a second consumer exists.
- Recording. H.264 in software (
x264enc, ~1.3–2 cores at 1080p) in segments on the recorder's sessions, under the recordings bound. - Exposure for sign reading. Manual exposure with own metering to hold the frame rate; LED signs flicker under short exposures.
- Inference — deferred (decision 7): road signs, speed limits first.
Open
- The protocol lives in the docstring. It moves to contracts when a second client exists or it changes shape.