Files
video-setup/docs/cli/stream_recv_cli.md
mikael-lovqvists-claude-agent 44090c1d6d docs: write CLI docs for all 12 previously undocumented tools
Add docs/cli/ entries for:
  transport_cli, discovery_cli, config_cli, protocol_cli, query_cli,
  test_image_cli, xorg_cli, v4l2_view_cli, stream_send_cli,
  stream_recv_cli, reconciler_cli, controller_cli

Each doc covers: description, build instructions, full usage with all
options and defaults, example output, and a relationship note pointing
to related tools. controller_cli includes the display control IDs table
and notes its temporary status.

README.md: convert all CLI tool entries to links.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 00:45:27 +00:00

1.9 KiB

stream_recv_cli

Listens for an incoming TCP stream of VIDEO_FRAME protocol messages and displays the frames in an X11 window with a per-stream fps/Mbps overlay. Pair with stream_send_cli to test end-to-end video transport without a full node.


Build

From the repository root:

make cli

The binary is placed in build/cli/.

Requires GLFW, OpenGL, and libjpeg-turbo.


Usage

./stream_recv_cli [--port PORT] [--stream-id N]
                  [--scale stretch|fit|fill|1:1]
                  [--anchor center|topleft]
                  [--x N] [--y N]
Option Default Description
--port PORT 7700 TCP port to listen on
--stream-id N 0 Filter by stream ID; 0 accepts any stream
--scale fit Frame scaling in window
--anchor center Frame alignment in window
--x N 0 Window X position
--y N 0 Window Y position

Press Q or Escape to close the window.

Example

./stream_recv_cli --port 7700 --scale fit

Statistics overlay

Updated every 0.5 seconds:

stream 1: 30.1 fps  18.3 Mbps

Architecture note

The tool is multi-threaded: transport receive runs on a background thread and deposits frames into a shared slot (mutex + condition variable); the main thread owns the GLFW/OpenGL context and pulls from that slot on each render cycle. This is the same pattern used by the node's display sink.


Relationship to the Video Routing System

stream_recv_cli tests the sink end of the display pipeline: VIDEO_FRAME receive → MJPEG decode → xorg render. The node's display sink (started via START_DISPLAY) performs the same operation, driven by the control channel.

See also: stream_send_cli.md for the send side; controller_cli.md to use the full node pipeline.