every.channel/evolution/proposals/ECP-0049-ts-ingest-cmaf-canonical.md
2026-02-15 16:17:27 -05:00

28 lines
1.1 KiB
Markdown

# ECP-0049: TS Ingest, CMAF Canonical (Enforcement)
## Why
HDHomeRun (and many tuner stacks) output MPEG-TS. We still want first-class, native ingest of TS sources.
Separately, the network needs a single canonical chunk container so that hashing, signing, verification, relaying,
and multi-variant manifests stay consistent. That canonical container is CMAF (fMP4).
This ECP clarifies the boundary so "CMAF-only" does not get misread as "no TS support".
## Decisions
- TS is an **ingest input** format.
- CMAF (fMP4) is the **only** on-disk and on-wire chunk container inside every.channel:
- `init.mp4` + `segment_*.m4s`
- HLS playlists (`index.m3u8`) are allowed only as a **local playback compatibility artifact**.
- They must reference the CMAF fragments above; playlists are not network objects.
## Implementation Notes
- `ec-node ingest hdhr|linux-dvb|ts|hls` reads whatever the source provides and normalizes to CMAF fragments.
- `ec-moq::HlsWriter` is CMAF-only (no TS segment writer).
## Reversibility
Medium. Reintroducing TS chunks later would require explicit opt-in and a new manifest/object mode, but the default remains CMAF.