Skip to content

Streams, every frame from outside #215

Closed

Description

@ewowi

Plan 2026-10-13, closed 2026-10-30, shipped.

Goal

Three pull requests by Gohnnyman (#138 a backlight effect and VideoService, #139 USB video capture, #140 backlight wiring) arrived the same week TouchMyLight announced an FSEQ player for a 20 × 20 × 20 cube. Read one by one they look like unrelated features; read from the architecture they are one thing, a stream of frames arriving from outside the device. The plan modeled that once, by the textbook, so cameras, video, files, the network and the browser become combinations of a few parts, with MoonLight building the groundwork and contributors adding sources in small pull requests.

Outcome

The groundwork (G1 to G7) and every contribution but the color trim shipped: light-list placement and Network Receive's mapped_by, the Picture service and Picture effect, sender mapping that skips the board's mapping, the channel-data sink, a contributor page, the FSEQ player, border sampling, USB capture on the P4 and the backlight wiring. Measuring Network Receive on real boards added its receive task and counters, Network Send's paced packets, two-board scenarios and the receive defaults.

Decisions

  • Two families, not one stream module: channel data (the pixel protocols, mapped by the sender) and pictures (width × height, sampled per light), as TouchDesigner separates channel and texture operators. One module for every transport was the first draft, rejected since it flattens the protocols' universes, discovery, sync and priorities.
  • A stream's consumer is an effect in a layer, so it composes with effects, blend modes and modifiers; WLED's realtime override, which replaces effects, was rejected.
  • The FSEQ player is a sibling of Network Receive on one channel-data sink, not a decoder in a generic stream source (2026-10-14): FSEQ is recorded channel data.
  • Sender mapping through the layout's positions, not through the inverse of the layer's mapping, which cancelled the static modifiers.
  • Core builds the groundwork, contributors add sources on top, each a small pull request of one topic.
  • The browser authors and bakes, the device runs: what must run with no browser open belongs on the device.
  • Shapes left out: a backlight effect of its own, PPM as a user format, HDR curves, video decoding beyond MJPEG, FSEQ extras up front, FPP MultiSync before MoonLight's own clock sync; the reasons are in the design study.

Where it lives

What Home
The two families, mapped_by, the effect as consumer, inverse mapping MoonLight, frames from outside
The three axes, live and recorded, browser and device, the tools, WLED's attempts, shapes left out Design study: streams
Adding a source of either family Adding a picture or channel-data source
The sources' cards Network Receive, FSEQ player, Picture effect, Picture service, Network Send
The measurements Performance, Network Receive
Scenarios over several boards Testing, several boards

Steps

Shipped in

#143, #144, #148, #149, #150, #151, #152, #153, #154, #155, #157.

Still open

Activity

  1. added
    planA plan: open while it is built, closed once it shipped or stopped
    on Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    planA plan: open while it is built, closed once it shipped or stopped

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions