From f8ecade81031b7cd6b29d71a1cb9d62f1f40c8fb Mon Sep 17 00:00:00 2001 From: mikael-lovqvists-claude-agent Date: Sun, 29 Mar 2026 08:12:13 +0000 Subject: [PATCH] =?UTF-8?q?Docs:=20update=20README=20status=20=E2=80=94=20?= =?UTF-8?q?ingest/reconciler=20done,=20display=20sink,=20controller=5Fcli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fd8be18..48af721 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ Designed to run on resource-constrained hardware (Raspberry Pi capturing raw MJP - `v4l2_view_cli` — live camera viewer; auto-selects highest-FPS format, displays FPS overlay - `stream_send_cli` — capture MJPEG from V4L2, connect to a receiver over TCP, stream VIDEO_FRAME messages with per-stream stats - `stream_recv_cli` — listen for incoming TCP stream, display received MJPEG frames with fps/Mbps overlay +- `reconciler_cli` — simulated state machine experiment; validate the reconciler with fake resources before wiring into the node +- `controller_cli` — interactive REPL; connects to a running node; supports enum-devices, enum-controls, get/set-control, start/stop-ingest, start/stop-display ## Structure @@ -34,7 +36,7 @@ docs/ documentation ## Status -Core modules and the video node binary are working. The node can be queried over the wire protocol for device enumeration and V4L2 camera control. The development web UI connects to live nodes for inspection and control. The xorg viewer sink is implemented (GLFW+OpenGL, all scale/anchor modes, bitmap font atlas text overlays). A V4L2 capture viewer (`v4l2_view_cli`) demonstrates live camera display without going through the node system. Frame ingest-to-wire and relay have not started. +Core modules and the video node binary are working end-to-end. The node can be queried over the wire protocol for device enumeration and V4L2 camera control. V4L2 ingest is live — a source node captures MJPEG and streams it to a sink node which displays it in an xorg window. The node supports both source (START_INGEST) and display sink (START_DISPLAY) roles. A reconciler manages V4L2 device and transport connection state. The development web UI connects to live nodes for inspection and control. Relay, archive, and codec have not started. | Module | Status | Notes | |---|---|---| @@ -46,13 +48,14 @@ Core modules and the video node binary are working. The node can be queried over | `transport` | done | Framed TCP stream, single-write send | | `discovery` | done | UDP multicast announcements, peer table, found/lost callbacks | | `protocol` | done | Typed write/read functions for all message types | -| `node` | done | Video node binary — config, discovery, transport server, V4L2/media request handlers | -| `dev/web` | done | Development web UI — connects to live nodes, V4L2 inspection and control | | `test_image` | done | Test pattern generator — colour bars, luminance ramp, grid; YUV420/BGRA output | | `xorg` | done | GLFW+OpenGL viewer sink — YUV420/BGRA/MJPEG input, all scale/anchor modes, bitmap font atlas text overlays; screen grab and XRandR queries not yet implemented | +| `reconciler` | done | Generic wanted/current state machine reconciler — BFS pathfinding, event + periodic tick | +| `ingest` | done | V4L2 capture loop — open device, negotiate MJPEG, MMAP buffers, capture thread with on_frame callback | +| `node` | done | Video node binary — source role (START/STOP_INGEST) and display sink role (START/STOP_DISPLAY); multi-window xorg viewer; declarative reconciler for device and connection state | +| `dev/web` | done | Development web UI — connects to live nodes, V4L2 inspection and control | | `frame_alloc` | not started | Per-frame allocation with byte budget and ref counting | | `relay` | not started | Input dispatch to output queues (low-latency and completeness modes) | -| `ingest` | not started | V4L2 capture loop — dequeue buffers, emit frames | | `archive` | not started | Write frames to disk, control messages to binary log | | `codec` | not started | Per-frame encode/decode (MJPEG, QOI, ZSTD-raw, VA-API H.264) | | `web node` | not started | Node.js peer — binary protocol socket side + HTTP/WebSocket to browser |