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
32 lines
1.2 KiB
Markdown
32 lines
1.2 KiB
Markdown
---
|
||
type: plan
|
||
status: active
|
||
updated: 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
|
||
|
||
0. **Live view** — in place: `src/liveview.py` as `yukart-vision.service` on
|
||
`: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.
|
||
1. **Capture fan-out.** One capture process, frames to several consumers (live
|
||
view, recorder, inference). Needed before a second consumer exists.
|
||
2. **Recording.** H.264 in software (`x264enc`, ~1.3–2 cores at 1080p) in
|
||
segments on the recorder's sessions, under the recordings bound.
|
||
3. **Exposure for sign reading.** Manual exposure with own metering to hold the
|
||
frame rate; LED signs flicker under short exposures.
|
||
4. **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.
|