rmt-flute
Multicast object-delivery wire formats — ALC / LCT / FLUTE / NORM — the binary headers used to deliver files and streams over IP multicast.
Everything here is IETF RMT (Reliable Multicast Transport): RFC 5651, RFC 5775, RFC 6726 and RFC 5740. No broadcast-specific standard is implemented by this crate. Several delivery systems are built on top of these formats and are consumers of it, not owners of it:
- DVB — DVB-IPTV and DVB-MABR (ETSI TS 103 769) file delivery
- 3GPP — MBMS / eMBMS download delivery
- ATSC 3.0 — ROUTE (A/331 Annex A), written as a profile-and-delta on RFC 5651/5775/6726
Renamed from
dvb-fluteat 0.4.0. The old name implied a DVB standard this crate does not implement, and made it read oddly as a dependency of non-DVB consumers such as ATSC 3.0 ROUTE. Alldvb-fluteversions are yanked; there is no shim. Same code, accurate name.
Implements:
LctHeader— the Layered Coding Transport header (RFC 5651 §5). The fixed first word carriesV/C/PSI/S/O/H/A/B,HDR_LENand the Codepoint; theC,S,OandHflags then drive the byte-widths of the CCI (4*(C+1)), TSI (4*S+2*H) and TOI (4*O+2*H) fields. The sharedHhalf-word feeds both TSI and TOI. Flag bits andHDR_LENare recomputed on serialize from the typed field lengths — no raw passthrough.HeaderExtension— the LCT/NORM header-extension chain (RFC 5651 §5.2): variable-length (HET0..=127, carriesHEL) and fixed-length (HET128..=255, one word) forms; withExtTime(EXT_TIME) and theLctExtTyperegistry (EXT_NOP/EXT_AUTH/EXT_TIME).AlcPacket— an Asynchronous Layered Coding packet (RFC 5775): LCT header- an opaque FEC Payload ID + the encoding-symbol payload, plus
EXT_FTI(HET 64) and the Small-Block-SystematicFecPayloadId128.
- an opaque FEC Payload ID + the encoding-symbol payload, plus
ExtFdt/ExtCenc— the FLUTE (RFC 6726) fixed-length LCT extensionsEXT_FDT(HET 192) andEXT_CENC(HET 193), plus the TOI = 0 FDT-Instance convention. The FDT Instance body is XML and out of scope of this binary crate — it rides as the packet payload.NormCommonHeader+NormData/NormCmd/NormFeedback— the NORM (RFC 5740) common header and message types (NORM_DATA / INFO / CMD / NACK / ACK / REPORT).
⚠ FEC Payload ID bit layouts are FEC-scheme dependent (RFC 5052 / the FEC Scheme document) and are not defined by ALC/NORM themselves; this crate exposes them as opaque byte slices (the caller supplies the length), with
FecPayloadId128provided as one concrete illustrative layout.
#![no_std] + alloc; depends only on broadcast-common.
Quick start
use ;
let cci = ; // C = 0
let tsi = ; // S = 1, H = 0
let hdr = LctHeader ;
let mut buf = vec!;
hdr.serialize_into.unwrap;
let = parse.unwrap;
assert_eq!;
assert_eq!;
Examples
Features
| Feature | Default | Description |
|---|---|---|
std |
yes | Link the standard library. Without it the crate is #![no_std] + alloc. |
serde |
no | serde::Serialize derives on public types. |
Minimum Supported Rust Version
1.95.0
License
MIT OR Apache-2.0