Files
svc-vision/docs/impl/plans/INITIAL.md
T
mikkeli d438b516e5 svc-vision: camera live view, moved from app-flutter's test tool
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
2026-10-12 16:14:03 +09:00

32 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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.