moq-flate
Opaque payloads over moq-net tracks, in two modes:
- snapshot: lossy latest-value, one payload per group.
- stream: lossless append-log in a single group.
The bytes are never inspected. Compression is opt-in: Compression is None (the default) or Deflate, and both sides set the same field. With Deflate, each group is one raw DEFLATE stream sync-flushed at every frame boundary, so a stream's payloads compress against the earlier ones in their group.
let mut config = moq_flate::snapshot::Config::default();
config.compression = moq_flate::Compression::Deflate;
let mut producer = moq_flate::snapshot::Producer::new(track, config);
producer.update(payload)?;A payload is stamped when written, unless it carries its capture time: moq_net::Timed::from(bytes).at(captured). Writes return the encoded frame size.
The group-scoped codec underneath is exported as Encoder/Decoder, which moq-json reuses for its merge-patch deltas. Create one pair per group and feed frames in order.
The TypeScript twin is @moq/flate. API: docs.rs/moq-flate.