every.channel: sanitized baseline
This commit is contained in:
commit
897e556bea
258 changed files with 74298 additions and 0 deletions
49
evolution/proposals/ECP-0053-direct-wire-framing.md
Normal file
49
evolution/proposals/ECP-0053-direct-wire-framing.md
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
# ECP-0053: Direct WebRTC Wire Framing (Chunked Frames)
|
||||
|
||||
Status: Draft
|
||||
|
||||
## Problem
|
||||
|
||||
`direct-publish` currently sends each CMAF object (init or `.m4s` fragment) as a single WebRTC
|
||||
data-channel message (`encode_object_frame(meta, data)`).
|
||||
|
||||
Real OTA CMAF fragments routinely exceed typical data-channel maximum message sizes, causing
|
||||
runtime failure like:
|
||||
|
||||
- `Error: outbound packet larger than maximum message size`
|
||||
|
||||
This blocks real-world HDHomeRun end-to-end streaming via `https://every.channel`.
|
||||
|
||||
## Goal
|
||||
|
||||
Make direct WebRTC transport robust by supporting large objects while keeping:
|
||||
|
||||
- ordered delivery,
|
||||
- simple decoding in the website and CLI,
|
||||
- no additional servers beyond the existing bootstrap API.
|
||||
|
||||
## Proposal
|
||||
|
||||
Define a minimal application-layer framing over WebRTC data-channel messages:
|
||||
|
||||
- Each data-channel message begins with a 1-byte tag:
|
||||
- `0x00`: legacy "whole object frame in one message" (optional compatibility)
|
||||
- `0x01`: stream-chunk bytes (new default)
|
||||
- In `0x01` mode, bytes carry a length-prefixed stream:
|
||||
- `[u32_be length][frame bytes]` repeated
|
||||
- `frame bytes` are exactly the existing `encode_object_frame(meta, data)` output
|
||||
- Publishers MUST:
|
||||
- use `0x01` mode,
|
||||
- split the stream into safe message payloads (e.g. 16 KiB chunks)
|
||||
- Subscribers SHOULD:
|
||||
- accept both `0x01` and `0x00` to ease rollout.
|
||||
|
||||
## Rollout
|
||||
|
||||
- Update `ec-node direct-publish`, the website receiver, and `ec-node direct-subscribe`.
|
||||
- Redeploy static site assets; bootstrap API unchanged.
|
||||
|
||||
## Reversibility
|
||||
|
||||
- The change is localized to `direct-*` and can be removed or replaced without touching MoQ.
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue