every.channel/evolution/proposals/ECP-0005-deterministic-chunking-pipeline.md
2026-02-15 16:17:27 -05:00

1.1 KiB

ECP-0005: deterministic chunking pipeline

Status: Draft

Problem

We need a deterministic encoding and chunking pipeline so that identical broadcasts produce identical objects across relays.

Decision

Adopt a deterministic chunking profile with the following constraints:

  • Single-threaded encoding by default.
  • Fixed GOP cadence and keyframe placement.
  • Bitexact flags enabled wherever possible.
  • Fixed chunk duration (default 2 seconds) and stable object naming.

Initial implementation uses ffmpeg CLI piping into the ac-ffmpeg chunker for rapid iteration, while the primary goal is to move to libav bindings for deeper control and determinism validation.

Alternatives considered

  • Multithreaded encoders: rejected because they reduce reproducibility.
  • Hardware encoders: deferred because determinism is uncertain.
  • HLS segmentation: rejected as the primary format; MoQ objects will be derived directly.

Rollout / teardown

  • Introduce ec-chopper with a deterministic profile and ffmpeg-based segmenter.
  • Measure determinism with repeated runs.
  • Replace the CLI with libav bindings once the control surface is verified.