# video-setup A graph-based multi-peer video routing system written in C11. Nodes are media processes connected by typed transport edges; the graph carries video streams between sources, relays, and sinks with **priority** as a first-class property — so a low-latency monitoring feed and a high-quality archival feed can coexist on the same source. Designed to run on resource-constrained hardware (Raspberry Pi capturing raw MJPEG, forwarding over TCP) alongside more capable machines that handle processing, relay, display, and archival. ## Documentation - [architecture.md](architecture.md) — system design: graph model, transport protocol, relay design, codec layer, discovery, multi-site plan, device resilience, X11 integration - [planning.md](planning.md) — module build order and current status - [conventions.md](conventions.md) — C code and project conventions ### CLI Tools - [docs/cli/media_ctrl_cli.md](docs/cli/media_ctrl_cli.md) — media device and topology tool - [docs/cli/v4l2_ctrl_cli.md](docs/cli/v4l2_ctrl_cli.md) — V4L2 camera control tool ## Structure ``` src/modules/ C modules, one directory each include/ public headers dev/cli/ CLI driver programs for each module dev/web/ development web UI (Node.js/Express, depends on protocol) docs/ documentation ``` ## Status | Module | Status | |---|---| | `common` | done | | `media_ctrl` | done | | `v4l2_ctrl` | done | | `serial` | done | | `transport` | not started | | `protocol` | not started | | `frame_alloc` | not started | | `relay` | not started | | `ingest` | not started | | `archive` | not started | | `codec` | not started | | `xorg` | not started | | `web node` | not started |