Forward Error Correction (FEC) with MoQ
Marc Fiuczynski
Live streaming over MoQ has to work on networks that are messy: Wi-Fi, cellular, satellite, long intercontinental paths. On a short, clean path, retransmission is enough. On a long or lossy one, waiting for retransmissions causes stalls, so operators either over-protect every viewer or accept rebuffering. Forward…
Read the full proposal
The problem, and who feels it
Live streaming over MoQ has to work on networks that are messy: Wi-Fi, cellular, satellite, long intercontinental paths. On a short, clean path, retransmission is enough. On a long or lossy one, waiting for retransmissions causes stalls, so operators either over-protect every viewer or accept rebuffering. Forward error correction helps, but traditionally the sender applies it to everyone, so every viewer pays the bandwidth tax. With MoQ, the publisher can send repair data as extra tracks, and each player subscribes only to the protection its own path needs. Relays stay unchanged. Viewers on bad networks feel this problem most, and so do the operators and streamers who pay for their rebuffering.
Where agents come in
Deciding how much protection to take is an operations problem. A player sees its own losses but can’t tell whether they come from congestion, where extra repair data makes things worse, or from interference near the player, where it helps. An agent watching CMCD and player telemetry across many players can tell the two apart and steer protection and bitrate choices for groups of players. Agents also help build the project itself: much of the existing prototype was written with AI coding tools.
Why it matters to the community
MoQ players today ship with very simple ABR, and MoQ needs better bitrate estimation whether or not FEC is involved. Protection by subscription is new territory. The results would carry over to multicast delivery and non-video, low-latency uses. Results should come from realistic loss, including bursts and congestion with cross traffic, not only random loss.
What a team would need, and what ends up on GitHub
A working prototype exists: a publisher, an unmodified relay, and FEC-enabled versions of Shaka and Red5’s Playa, running in stock Chrome and Firefox. Pick your path:
- Player: bandwidth estimation and an ABR for MoQ that chooses bitrate and protection together. A better ABR alone is a contribution.
- Packager: content-aware protection, for example protecting I-frames more than P or B frames. Source content is video files for now.
- Measurement: realistic loss and congestion scenarios, comparing FEC against plain MoQ with retransmissions. On GitHub: the player, packager and estimator code, a loss-scenario test harness, and published results. Skills: TypeScript or JavaScript players, packaging, networking. FEC expertise isn’t required.



